TorchV Unstructured:强大的文档解析库
专为 RAG 应用优化的 Java 文档解析库,基于 Apache Tika、Apache POI 和 PDFBox,提供智能表格结构识别和内容提取能力。
📖 项目简介
TorchV Unstructured 是一个功能强大且开发者友好的文档解析库,专为 RAG(检索增强生成)应用优化。该项目基于业界标准的 Java 库(如 Apache Tika、Apache POI 和 PDFBox)构建,提供增强的解析能力,包括智能表格结构识别和内容提取。
🔗 项目链接
- GitHub: https://github.com/torchv/torchv-unstructured
- 许可证: Apache-2.0 License
- Maven Central:
com.torchv.infra:torchv-unstructured:1.0.0
✨ 核心特性
1. 🧠 智能表格解析
项目提供先进的表格结构分析能力:
- 单元格合并检测:准确识别表格中的合并单元格
- 结构保持:完整保留表格的层次结构
- HTML 表格生成:生成清洁的 HTML 表格代码
- Markdown 兼容:支持 Markdown 格式的表格输出
2. 📄 多格式支持
无缝处理各种文档格式:
- Word 文档:DOC、DOCX 格式完整支持
- PDF 文档:基于 PDFBox 的 PDF 解析
- 其他格式:通过 Apache Tika 支持更多格式
- 自动检测:智能识别文件类型
3. 🎯 RAG 优化输出
专为 AI/ML 管道设计:
- 结构化内容:清洁、结构化的内容提取
- 元数据丰富:提取全面的文档元数据
- 嵌入友好:适合生成嵌入向量的格式
- 上下文保持:维持文档的语义关系
4. 🖼️ 图像处理
自动处理嵌入图像:
- 图像提取:自动提取文档中的图像
- 格式支持:支持多种图像格式
- 路径管理:智能的图像路径处理
🏗️ 架构设计
核心组件
┌─────────────────────────────────────┐
│ UnstructuredParser │
│ (统一入口点) │
└─────────────────┬───────────────────┘
│
┌─────────────┼─────────────┐
│ │ │
┌───▼───┐ ┌────▼────┐ ┌───▼───┐
│ Word │ │ PDF │ │ Other │
│Parser │ │ Parser │ │Parser │
└───┬───┘ └────┬────┘ └───┬───┘
│ │ │
└─────────────┼─────────────┘
│
┌─────────────▼─────────────┐
│ Content Handlers │
│ (Markdown/HTML输出) │
└───────────────────────────┘主要类结构
- UnstructuredParser: 主要入口类,提供简单统一的 API
- UnstructuredWord: 通用 Word 文档解析器
- WordTableParser: 专门的 Word 表格解析器
- TableStructureAnalyzer: 智能表格结构识别器
- CellMergeAnalyzer: 高级单元格合并检测器
💡 使用示例
基础文档解析
java
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);高级表格提取
java
import com.torchv.infra.unstructured.UnstructuredParser;
import java.util.List;
// 仅提取 Word 文档中的表格
List<String> tables = UnstructuredParser.extractTables("document.docx");
for (int i = 0; i < tables.size(); i++) {
System.out.println("Table " + (i + 1) + ":");
System.out.println(tables.get(i));
}
// 获取结构化结果,更多控制
DocumentResult result = UnstructuredParser.toStructuredResult("document.docx");
if (result.isSuccess()) {
System.out.println("Content: " + result.getContent());
System.out.println("Tables: " + result.getTables());
}RAG 应用集成
java
public class RAGDocumentProcessor {
public DocumentChunk processDocument(String filePath) {
// 解析并保留表格结构,便于更好的上下文理解
String content = UnstructuredParser.toMarkdownWithHtmlTables(filePath);
// 单独提取表格用于结构化数据处理
List<String> tables = UnstructuredParser.extractTables(filePath);
return new DocumentChunk(content, tables);
}
}批量处理
java
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("Failed to process file: {}", filePath, e);
}
}
}🎯 应用场景
RAG 系统
- 文档预处理:将各种格式的文档转换为适合嵌入的格式
- 表格数据提取:保持表格结构,便于 AI 理解
- 批量文档处理:高效处理大量文档
内容管理系统
- 文档转换:将 Word/PDF 转换为 Web 友好的格式
- 内容提取:提取文档中的结构化信息
- 格式标准化:统一不同来源的文档格式
数据分析
- 表格数据提取:从文档中提取表格数据进行分析
- 结构化信息:将非结构化文档转换为结构化数据
- 批量处理:处理大量文档进行数据分析
🌟 技术优势
性能优化
- 内存高效:流式处理大文档,最小内存占用
- 快速处理:优化的算法,快速解析
- 可扩展性:设计用于高吞吐量文档处理
开发友好
- 简单 API:直观的接口,合理的默认值
- 可扩展:基于插件的架构,支持自定义内容处理器
- 生产就绪:经过实战测试,全面的错误处理
质量保证
- 基于标准:基于 Apache Tika、Apache POI 等成熟库
- 测试覆盖:全面的测试覆盖
- 持续维护:活跃的开发和维护
📚 学习资源
- API 文档:详细的 API 参考文档
- 示例代码:丰富的使用示例
- 最佳实践:RAG 应用的最佳实践指南
🤝 贡献与支持
贡献方式
- Fork 仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
联系方式
- 📧 邮箱: xiaoymin@foxmail.com
- 🐛 问题反馈: GitHub Issues
- 💬 讨论交流: GitHub Discussions
🙏 致谢
感谢以下开源项目的支持:
- Apache Tika - 内容分析工具包
- Apache POI - Microsoft 文档 Java API
- PDFBox - PDF 文档操作库
TorchV Unstructured 是 TorchV 团队用心打造的开源项目,旨在为 RAG 应用提供最佳的文档解析解决方案。无论是个人项目还是企业应用,都能从中受益。
Made with ❤️ by TorchV Team
