Torchv Unstrustured 文檔解析庫

一個強大且開發者友好的文檔解析庫,專為RAG(檢索增強生成)應用優化。基于Apache Tika、Apache POI和PDFBox等業界標準Java庫構建,TorchV Unstructured提供了增強的解析能力,具備智能表格結構識別和內容提取功能。

🚀 核心特性

  • 智能表格解析:先進的表格結構分析,支持復雜單元格合并檢測

  • 多格式支持:無縫處理DOC、DOCX、PDF等多種文檔格式

  • RAG優化輸出:專為AI/ML管道設計的結構化內容提取

  • Markdown和HTML導出:靈活的輸出格式,保持表格結構完整性

  • 圖像提取:自動提取和處理嵌入式圖像

  • 內存高效:優化的大文檔處理,最小化內存占用

📦 安裝

Maven

<dependency><groupId>com.torchv.infra</groupId><artifactId>torchv-unstructured</artifactId><version>1.0.0</version>
</dependency>

Gradle

implementation 'com.torchv.infra:torchv-unstructured:1.0.0'

🔧 快速開始

基礎文檔解析

import com.torchv.infra.unstructured.UnstructuredParser;
?
// 解析文檔為Markdown格式(推薦用于RAG)
String content = UnstructuredParser.toMarkdown("document.docx");
System.out.println(content);
?
// 解析文檔為帶HTML表格的Markdown格式(保持表格結構)
String contentWithTables = UnstructuredParser.toMarkdownWithHtmlTables("document.docx");
System.out.println(contentWithTables);

高級表格提取

import com.torchv.infra.unstructured.UnstructuredParser;
?
import java.io.File;
import java.util.List;
?
// 僅提取Word文檔中的表格
List<String> tables = UnstructuredParser.extractTables("document.docx");
for (int i = 0; i < tables.size(); i++) {System.out.println("表格 " + (i + 1) + ":");System.out.println(tables.get(i));
}
?
// 獲取結構化結果,提供更多控制
DocumentResult result = UnstructuredParser.toStructuredResult("document.docx");
if (result.isSuccess()) {System.out.println("內容: " + result.getContent());System.out.println("表格: " + result.getTables());
}

文件格式支持

import com.torchv.infra.unstructured.UnstructuredParser;
import com.torchv.infra.unstructured.util.UnstructuredUtils;
?
// 檢查文件格式是否支持
if (UnstructuredUtils.isSupportedFormat("document.docx")) {String content = UnstructuredParser.toMarkdownWithHtmlTables("document.docx");System.out.println("解析成功!");
} else {System.out.println("不支持的文件格式");
}
?
// 獲取所有支持的格式
List<String> supportedFormats = UnstructuredUtils.getSupportedFormats();
System.out.println("支持的格式: " + String.join(", ", supportedFormats));

🎯 核心組件

統一入口

  • UnstructuredParser:主要入口類,為所有文檔解析操作提供簡單統一的API

文檔解析器

  • UnstructuredWord:通用Word文檔解析器,支持自動檢測

  • TikaAutoUtils:支持自動檢測的通用文檔解析器(底層實現)

  • WordTableParser:專業的Word文檔表格解析器

  • DocxTableParser:高級DOCX表格結構分析器

內容處理器

  • ToMarkdownWithHtmlTableContentHandler:將文檔轉換為帶HTML表格的Markdown

  • DocMarkdownWithHtmlTableContentHandler:專門的DOC格式處理器

  • DocXMarkdownWithHtmlTableContentHandler:專門的DOCX格式處理器

表格分析

  • TableStructureAnalyzer:智能表格結構識別

  • CellMergeAnalyzer:高級單元格合并檢測

  • HtmlTableBuilder:清潔的HTML表格生成器

實用工具

  • FileMagicUtils:文件類型檢測和驗證

  • ImageExtractParse:嵌入式圖像提取

🔍 高級用法

RAG應用集成

import com.torchv.infra.unstructured.UnstructuredParser;
import com.torchv.infra.unstructured.core.DocumentResult;
?
// 為RAG應用優化
public class RAGDocumentProcessor {
?public DocumentChunk processDocument(String filePath) {// 解析時保持表格結構以獲得更好的上下文String content = UnstructuredParser.toMarkdownWithHtmlTables(filePath);
?// 單獨提取表格用于結構化數據處理List<String> tables = UnstructuredParser.extractTables(filePath);
?return new DocumentChunk(content, tables);}
}

批量處理

import com.torchv.infra.unstructured.UnstructuredParser;
import com.torchv.infra.unstructured.util.UnstructuredUtils;
?
public class BatchProcessor {
?public void processBatch(List<String> filePaths) {filePaths.parallelStream().filter(UnstructuredUtils::isSupportedFormat).forEach(this::processFile);}
?private void processFile(String filePath) {try {String content = UnstructuredParser.toMarkdownWithHtmlTables(filePath);// 保存或進一步處理內容saveProcessedContent(filePath, content);} catch (Exception e) {log.error("處理文件失敗: {}", filePath, e);}}
}

錯誤處理和驗證

import com.torchv.infra.unstructured.UnstructuredParser;
import com.torchv.infra.unstructured.util.UnstructuredUtils;
?
public class DocumentValidator {public ProcessingResult validateAndProcess(String filePath) {// 檢查文件格式if (!UnstructuredUtils.isSupportedFormat(filePath)) {return ProcessingResult.unsupportedFormat();}try {String content = UnstructuredParser.toMarkdownWithHtmlTables(filePath);List<String> tables = UnstructuredParser.extractTables(filePath);return ProcessingResult.success(content, tables);} catch (RuntimeException e) {return ProcessingResult.error(e.getMessage());}}
}

🌟 為什么選擇TORCHV UNSTRUCTURED?

適用于RAG應用

  • 結構化輸出:清潔、結構化的內容提取,完美適配嵌入向量生成

  • 表格保持:維護表格關系,對文檔理解至關重要

  • 豐富元數據:提取全面的文檔元數據,增強檢索效果

適用于開發者

  • 簡單API:直觀的接口設計,合理的默認配置

  • 可擴展:基于插件的架構,支持自定義內容處理器

  • 生產就緒:經過實戰驗證,具備全面的錯誤處理機制

性能優化

  • 內存高效:大文檔的流式處理

  • 快速處理:優化算法確保快速解析

  • 可擴展:專為高吞吐量文檔處理而設計

📚 文檔

  • API文檔

  • 示例倉庫

  • 遷移指南

🤝 貢獻

我們歡迎貢獻!請查看我們的貢獻指南了解詳情。

  1. Fork這個倉庫

  2. 創建你的功能分支 (git checkout -b feature/amazing-feature)

  3. 提交你的更改 (git commit -m 'Add some amazing feature')

  4. 推送到分支 (git push origin feature/amazing-feature)

  5. 打開一個Pull Request

📄 許可證

本項目基于Apache License 2.0許可證 - 查看LICENSE文件了解詳情。

🙏 致謝

  • Apache Tika?- 內容分析工具包

  • Apache POI?- Microsoft文檔的Java API

  • PDFBox?- PDF文檔操作庫

?

  • ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90867.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90867.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90867.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

30天入門Python(基礎篇)——第22天:面向對象之繼承與多繼承

目錄 專欄導讀 學習目標 1. 繼承的基本概念 1.1 繼承的優勢 2. 單繼承 2.1 基本語法 2.2 實際示例 3. super()函數詳解 3.1 基本用法 3.2 super()的高級用法 4. 多繼承 4.1 多繼承語法 4.2 多繼承示例 5. 方法解析順序(MRO) 5.1 查看MRO 5.2 復雜的MRO示例 6. 實際應用案例 6…

學習人工智能所需知識體系及路徑詳解

一、核心基礎知識體系1. 數學基礎線性代數關鍵概念&#xff1a;向量空間、矩陣運算&#xff08;轉置/逆矩陣&#xff09;、特征值分解、奇異值分解&#xff08;SVD&#xff09;應用場景&#xff1a;數據降維&#xff08;PCA&#xff09;、圖像處理&#xff08;矩陣變換&#xf…

前端實現銀河粒子流動特效的技術原理與實踐

文章目錄 1,引言 2,特效效果簡介 3,技術原理解析 1. 粒子系統基礎 2. 銀河結構的數學建模 3. 動態流動與旋轉 4,實現流程圖 5,關鍵代碼實現與詳細講解 1. 初始化Three.js場景 2. 生成銀河粒子數據 3. 創建粒子幾何體與材質 4. 實現粒子的動態旋轉與動畫 5. 可選:粒子顏色…

Qt_Gif_Creator 基于Qt的屏幕gif錄制工具

本文介紹了一個基于Qt框架的屏幕GIF錄制工具的實現。該工具包含XYGifCreator類負責GIF創建邏輯&#xff0c;使用Gif.h庫進行GIF編碼&#xff1b;XYGifFrame類提供GUI界面&#xff0c;支持設置錄制區域大小、幀率以及保存位置。工具采用多線程處理GIF編碼&#xff0c;支持Window…

Linux實戰:HAProxy全方位指南

一、負載均衡核心概念 1.1 負載均衡定義 負載均衡&#xff08;Load Balance&#xff0c;簡稱LB&#xff09;是一種基于硬件設備或軟件服務的高可用反向代理技術。它將特定業務&#xff08;如Web服務、網絡流量&#xff09;分發到后端的一個或多個服務器/設備&#xff0c;從而提…

22 BTLO 藍隊靶場 Countdown 解題記錄

Tools: - ELK - CyberChef - OSINT (whole World Wide Web) Hunt #1: Brute Force DetectedSource: winevent-security (1/3) — 可疑暴力破解流量來自哪個IP地址 What is the IP address from which the suspicious brute force traffic is seen?? 我們需要尋找暴力破解…

文心一言4.5開源模型實戰:ERNIE-4.5-0.3B輕量化部署與效能突破

文心一言4.5開源模型實戰&#xff1a;ERNIE-4.5-0.3B輕量化部署與效能突破 文心一言4.5開源模型實戰&#xff1a;ERNIE-4.5-0.3B輕量化部署與效能突破&#xff0c;本文介紹百度文心一言 4.5 開源模型中 ERNIE-4.5-0.3B 的輕量化部署與效能。該 3 億參數模型破解大模型落地的算力…

SAP-MM-采購訂單批量創建 excel 版

采購訂單批量創建程序摘要:不含任何定制字段的導入,直接導入系統即可使用 該SAP ABAP程序實現采購訂單的批量創建功能,主要特性包括: 支持通過Excel文件批量導入采購訂單數據(XLS/XLSX格式) 提供數據校驗功能,包括: 物料號有效性檢查 采購憑證存在性驗證 科目分配類別…

2_軟件重構_一種組件化開發方式

一、碎碎念 首先先考慮下&#xff0c;什么情況下軟件需要重構&#xff1f;我覺得答案有很多種&#xff0c;而且還有范圍。當日益增長的需求與現有軟件結構越來越無法匹配時——①具體表現可能為新增需求所導致的bug越來越多&#xff0c;一個新功能的改動牽一發而動全身&a…

今日行情明日機會——20250728

上證指數量能持續在200天均量線上&#xff0c;最近今天橫盤震蕩&#xff0c;今天依然收在5天均線上方&#xff0c;個股漲跌個數基本相同。目前依然強勢&#xff0c;有望沖擊3674的前高。需要注意板塊的高低切換。深證指數今天縮量收小陽線&#xff0c;均線多頭的趨勢明顯&#…

【iOS】類和分類的加載過程

目錄 前言 _objc_init方法 environ_init tis->init方法 static_init方法 &#x1f4a1; _objc_init 是由 libc 調用的&#xff0c;目的是&#xff1a; ??“必須自己實現” 是什么意思&#xff1f; runtime_init exception_init cache_t::init _imp_implementati…

大模型算法面試筆記——常用優化器SGD,Momentum,Adagrad,RMSProp,Adam

常用參數&#xff1a;ttt-步數&#xff0c;α\alphaα-學習率&#xff0c;θ\thetaθ-參數&#xff0c;f(θ)f(\theta)f(θ)-目標函數&#xff0c;gtg_tgt?-梯度&#xff0c;β1\beta_1β1?-一階矩衰減系數&#xff0c;通常取0.9&#xff0c;β2\beta_2β2?-二階矩&#xff…

【計算機畢業設計】基于SSM的小型超市管理系統+LW

博主介紹&#xff1a;?全網粉絲3W,csdn特邀作者、CSDN新星計劃導師、Java領域優質創作者,掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和學生畢業項目實戰,高校老師/講師/同行前輩交流? 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、…

火線、零線、地線

我們可以用 “水流” 來比喻 “電流”&#xff0c;這樣理解起來會很簡單&#xff1a;想象一下你家的電路就像一個 “閉合的水循環系統”&#xff1a;&#x1f525; 1. 火線 (Live Wire) - 好比 “進水管的高壓端”作用&#xff1a; 從發電廠或變壓器輸送 高壓電 到你家的插座或…

基于Vue3.0+Express的前后端分離的任務清單管理系統

文章目錄 一、前端 0、項目介紹 0.1 主要功能介紹 0.2 UI展示 1、首頁 2、待辦事項管理 2.1 添加待辦事項 2.2 展示待辦事項 2.3 修改待辦事項 2.4 刪除待辦事項 3、分類管理 3.1 添加分類 3.2 展示分類 3.3 修改分類 3.4 刪除分類 4、團隊成員管理 4.1 展示團隊成員 二、后端 …

基于單片機智能交通燈設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 隨著城市化進程的加快&#xff0c;城市交通流量日益增大&#xff0c;傳統的固定配時交通燈已難以…

Datawhale AI夏令營——列車信息智能問答——科大訊飛AI大賽(基于結構化數據的用戶意圖理解和知識問答挑戰賽)

前言 坐火車的你&#xff0c;遇到過這樣的場景嗎&#xff1f; 一次又一次查車次信息&#xff1f;趕火車狂奔&#xff0c;找檢票口找到懷疑人生…想查“最早到北京的車”&#xff1f;時刻表翻到眼瞎&#xff01;列車晚點&#xff1f;新出發時間算到腦殼疼&#xff01; 我們這次將…

UVA11990 ``Dynamic‘‘ Inversion

UVA11990 Dynamic Inversion題目鏈接題意輸入格式輸出格式分析CDQ分治嵌套&#xff08;樹狀數組套BST&#xff09;分塊k-D Tree題目鏈接 UVA11990 Dynamic’’ Inversion 題意 給一個 1~n 的排列A&#xff0c;要求按照某種順序刪除一些數&#xff08;其他數順序不變&#xff0…

銀河麒麟“安裝器”安裝方法

書接上回&#xff1a;銀河麒麟安裝軟件商店方法-CSDN博客 過了幾天發現當時一不小心把系統自帶的“安裝器”軟件也卸載掉了&#xff0c;導致現在deb文件只能通過命令行安裝&#xff0c;尋思這可不行&#xff0c;就想一下應該怎么安裝。 首先&#xff0c;為了確認一下安裝器的…

計算機畢設分享-基于SpringBoot的健身房管理系統(開題報告+前后端源碼+Lun文+開發文檔+數據庫設計文檔)

基于SpringBoot的健身房管理系統分享一套完整的基于SpringBoot的健身房管理系統畢業設計&#xff08;開題報告完整前后端源碼Lun文 開發文檔數據庫設計文檔&#xff09;系統分為三個角色功能如下&#xff1a;用戶功能需求描述管理員功能需求描述教練功能需求描述開題報告系統功…