# torchv-unstructured
**Repository Path**: wulugeng/torchv-unstructured
## Basic Information
- **Project Name**: torchv-unstructured
- **Description**: 一个强大且开发者友好的文档解析库,专为RAG(检索增强生成)应用优化
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 29
- **Created**: 2025-07-24
- **Last Updated**: 2025-07-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TorchV Unstructured
[English](README.md) | [中文](README_CN.md)
[](https://search.maven.org/artifact/com.torchv.infra/torchv-unstructured)
[](https://opensource.org/licenses/Apache-2.0)
[](https://www.oracle.com/java/)
一个强大且开发者友好的文档解析库,专为RAG(检索增强生成)应用优化。基于Apache Tika、Apache POI和PDFBox等业界标准Java库构建,TorchV Unstructured提供了增强的解析能力,具备智能表格结构识别和内容提取功能。
## 🚀 核心特性
- **智能表格解析**:先进的表格结构分析,支持复杂单元格合并检测
- **多格式支持**:无缝处理DOC、DOCX、PDF等多种文档格式
- **RAG优化输出**:专为AI/ML管道设计的结构化内容提取
- **Markdown和HTML导出**:灵活的输出格式,保持表格结构完整性
- **图像提取**:自动提取和处理嵌入式图像
- **内存高效**:优化的大文档处理,最小化内存占用
## 📦 安装
### Maven
```xml
com.torchv.infra
torchv-unstructured
1.0.0
```
### Gradle
```groovy
implementation 'com.torchv.infra:torchv-unstructured:1.0.0'
```
## 🔧 快速开始
### 基础文档解析
```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.io.File;
import java.util.List;
// 仅提取Word文档中的表格
List 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());
}
```
### 文件格式支持
```java
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 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应用集成
```java
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 tables = UnstructuredParser.extractTables(filePath);
return new DocumentChunk(content, tables);
}
}
```
### 批量处理
```java
import com.torchv.infra.unstructured.UnstructuredParser;
import com.torchv.infra.unstructured.util.UnstructuredUtils;
public class BatchProcessor {
public void processBatch(List 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);
}
}
}
```
### 错误处理和验证
```java
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 tables = UnstructuredParser.extractTables(filePath);
return ProcessingResult.success(content, tables);
} catch (RuntimeException e) {
return ProcessingResult.error(e.getMessage());
}
}
}
```
## 🌟 为什么选择TorchV Unstructured?
### 适用于RAG应用
- **结构化输出**:清洁、结构化的内容提取,完美适配嵌入向量生成
- **表格保持**:维护表格关系,对文档理解至关重要
- **丰富元数据**:提取全面的文档元数据,增强检索效果
### 适用于开发者
- **简单API**:直观的接口设计,合理的默认配置
- **可扩展**:基于插件的架构,支持自定义内容处理器
- **生产就绪**:经过实战验证,具备全面的错误处理机制
### 性能优化
- **内存高效**:大文档的流式处理
- **快速处理**:优化算法确保快速解析
- **可扩展**:专为高吞吐量文档处理而设计
## 📚 文档
- [API文档](https://torchv.github.io/torchv-unstructured/)
- [示例仓库](https://github.com/torchv/torchv-unstructured-examples)
- [迁移指南](docs/migration.md)
## 🤝 贡献
我们欢迎贡献!请查看我们的[贡献指南](CONTRIBUTING.md)了解详情。
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](LICENSE)文件了解详情。
## 🙏 致谢
- [Apache Tika](https://tika.apache.org/) - 内容分析工具包
- [Apache POI](https://poi.apache.org/) - Microsoft文档的Java API
- [PDFBox](https://pdfbox.apache.org/) - PDF文档操作库
## 📞 支持
- 📧 邮箱:
- 🐛 问题反馈:[GitHub Issues](https://github.com/torchv/torchv-unstructured/issues)
- 💬 讨论:[GitHub Discussions](https://github.com/torchv/torchv-unstructured/discussions)
---
由 [TorchV团队](https://www.torchv.com/) 用 ❤️ 制作