当前位置: 首页 > news >正文

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.dtcms.com/a/300489.html

相关文章:

  • Mac配置本地邮件
  • 【Qt开发】信号与槽(二)-> 信号和槽的使用
  • Web Worker:解锁浏览器多线程,提升前端性能与体验
  • 29.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户配置服务
  • 七、搭建springCloudAlibaba2021.1版本分布式微服务-skywalking9.0链路追踪
  • 重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
  • MCP + LLM + Agent 8大架构:Agent能力、系统架构及技术实践
  • 2.苹果ios逆向-Windows电脑端环境搭建-Conda安装和使用(使用Conda来管理多个Python环境)
  • Canvas实现微信小程序图片裁剪组件全攻略
  • 设计模式(七)结构型:适配器模式详解
  • 可控、安全、可集成:安防RTSP|RTMP视频播放模块工程实践参考
  • 医疗AI语义潜空间分析研究:进展与应用
  • 【机器学习深度学习】LLaMAFactory评估数据与评估参数解析
  • J3160迷你小主机 性能测试 对比i3-4170 以及服务器
  • C++ 多线程 std::thread::join
  • Window 部署 coze-stdio(coze 开发平台)
  • GAN/cGAN中到底要不要注入噪声
  • InfluxDB 与 MQTT 协议集成实践(二)
  • Element表格单元格类名动态设置
  • Linux网络
  • libomxil-bellagio移植到OpenHarmony
  • Ubuntu简述及部署系统
  • MybatisPlus-19.插件功能-通用分页实体
  • JDK 11.0.16.1 Windows 安装教程 - 详细步骤+环境变量配置
  • Day44 Java数组08 冒泡排序
  • AI与区块链Web3技术融合:重塑数字经济的未来格局
  • SpringSecurity实战:核心配置技巧
  • 【前端】【vscode】【.vscode/settings.json】为单个项目配置自动格式化和开发环境
  • 【C++基础】类型转换:static_cast/dynamic_cast 面试高频考点与真题解析
  • Spring Retry 异常重试机制:从入门到生产实践