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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;用户功能需求描述管理员功能需求描述教练功能需求描述开题报告系统功…