|
|
@@ -1,9 +1,320 @@
|
|
|
-## 1. 环境配置
|
|
|
+# OCR Platform
|
|
|
+
|
|
|
+一个统一的 OCR 识别与处理平台,集成了多种 OCR 工具、智能验证、结果对比、表格线生成等功能,专为金融文档、财务报表等复杂文档设计。
|
|
|
+
|
|
|
+> 📚 **详细文档**:更多技术文档、环境配置、使用说明等,请查看 [docs/](docs/)
|
|
|
+
|
|
|
+## 🎯 核心功能
|
|
|
+
|
|
|
+### 🔍 多工具 OCR 支持
|
|
|
+- **PaddleOCR-VL**:基于视觉语言模型的文档解析
|
|
|
+- **PP-StructureV3**:全面的文档结构分析(表格、公式、图表等)
|
|
|
+- **MinerU VLM**:多模态文档理解
|
|
|
+- **DotsOCR VLM**:专业 VLM OCR 引擎
|
|
|
+- **统一文档解析器**:统一的文档处理框架
|
|
|
+
|
|
|
+### 🔄 OCR 结果处理
|
|
|
+- **结果合并**:将结构化识别结果与精确坐标进行合并
|
|
|
+- **结果对比**:多工具 OCR 结果的智能对比和差异分析
|
|
|
+- **可视化验证**:交互式 OCR 结果验证和校验工具
|
|
|
+
|
|
|
+### 📏 表格处理
|
|
|
+- **表格线生成**:基于 OCR bbox 自动生成表格线(新版本)
|
|
|
+- **遗留表格线生成器**:Streamlit 版本的表格线编辑器
|
|
|
+- **表格模板应用**:将标注好的表格结构应用到同类型页面
|
|
|
+
|
|
|
+### 🛠️ 工具集
|
|
|
+- **批量处理**:支持批量 OCR 识别和处理
|
|
|
+- **守护进程**:各种 OCR 工具的守护进程脚本
|
|
|
+- **公共工具包**:统一的工具函数库
|
|
|
+
|
|
|
+## 📁 项目结构
|
|
|
+
|
|
|
+```
|
|
|
+ocr_platform/
|
|
|
+├── docs/ # 📚 详细文档目录
|
|
|
+│ ├── paddlex/ # PaddleX 相关文档
|
|
|
+│ ├── mineru/ # MinerU 相关文档
|
|
|
+│ ├── dotsocr/ # DotsOCR 相关文档
|
|
|
+│ ├── ocr_tools/ # OCR 工具技术文档
|
|
|
+│ └── legacy_table_line_generator/ # 遗留工具文档
|
|
|
+│
|
|
|
+├── ocr_tools/ # 🔧 OCR 工具集合(单独一个子仓)
|
|
|
+│ ├── ocr_merger/ # OCR 结果合并工具
|
|
|
+│ ├── paddle_common/ # PaddleX 公共模块
|
|
|
+│ ├── ppstructure_tool/ # PP-StructureV3 工具(依赖paddle框架)
|
|
|
+│ ├── paddle_vl_tool/ # PaddleOCR-VL 工具(依赖paddle框架)
|
|
|
+│ ├── mineru_vl_tool/ # MinerU VLM 工具(依赖mineru)
|
|
|
+│ ├── dots.ocr_vl_tool/ # DotsOCR VLM 工具(依赖dots.ocr)
|
|
|
+│ ├── universal_doc_parser/ # 统一文档解析器(依赖mineru)
|
|
|
+│ ├── ocr_batch/ # 批量处理工具
|
|
|
+│ ├── pytorch_models/ # PyTorch 模型推理接口
|
|
|
+│ └── daemons/ # 守护进程脚本
|
|
|
+│
|
|
|
+├── ocr_validator/ # 🔍 OCR 可视化验证系统(单独一个子仓)
|
|
|
+│ └── streamlit_ocr_validator.py # Streamlit 验证界面
|
|
|
+│
|
|
|
+├── ocr_comparator/ # 🔄 OCR 结果对比工具
|
|
|
+│ └── compare_ocr_results.py # 结果对比核心模块
|
|
|
+│
|
|
|
+├── table_line_generator/ # 📏 表格线生成器(单独一个子仓)
|
|
|
+│ ├── backend/ # FastAPI 后端
|
|
|
+│ ├── core/ # 核心算法
|
|
|
+│ ├── frontend/ # Vue 3 前端
|
|
|
+│ ├── templates/ # 表格模板
|
|
|
+│ └── config/ # 配置文件
|
|
|
+│
|
|
|
+├── legacy_table_line_generator/ # 📏 遗留表格线生成器(单独一个子仓)
|
|
|
+│ └── streamlit_table_line_editor.py # Streamlit 版本编辑器
|
|
|
+│
|
|
|
+└── ocr_utils/ # 🛠️ OCR 工具包(公共工具)
|
|
|
+ ├── bbox_utils.py # bbox 处理工具
|
|
|
+ ├── file_utils.py # 文件处理工具
|
|
|
+ ├── pdf_utils.py # PDF 处理工具
|
|
|
+ ├── image_utils.py # 图像处理工具
|
|
|
+ └── ...
|
|
|
+```
|
|
|
+
|
|
|
+## 🚀 快速开始
|
|
|
+
|
|
|
+### 环境配置
|
|
|
+
|
|
|
+#### 1. 代码获取
|
|
|
|
|
|
-### 1.1 代码获取
|
|
|
```bash
|
|
|
git clone https://gitee.com/zhch158_admin/ocr_platform.git -c user.name=zhch158_admin -c user.email=zhch158@sina.com
|
|
|
-cd MinerU
|
|
|
+cd ocr_platform
|
|
|
git config --local user.name "zhch158_admin"
|
|
|
git config --local user.email "zhch158@sina.com"
|
|
|
-```
|
|
|
+```
|
|
|
+
|
|
|
+#### 2. Python 环境
|
|
|
+
|
|
|
+项目支持多个 Python 环境,根据使用的工具选择:
|
|
|
+
|
|
|
+- **PaddleX 工具**:需要 `paddle_env` 环境(Python 3.11+)
|
|
|
+- **MinerU 工具**:需要 `mineru2` 环境(Python 3.12+)
|
|
|
+- **DotsOCR 工具**:需要 `py312` 环境(Python 3.12+)
|
|
|
+
|
|
|
+详细环境配置请查看:
|
|
|
+- [PaddleX 环境配置](docs/paddlex/README.md)
|
|
|
+- [MinerU 环境配置](docs/mineru/README.md)
|
|
|
+- [DotsOCR 环境配置](docs/dotsocr/README.md)
|
|
|
+
|
|
|
+### 基本使用
|
|
|
+
|
|
|
+#### OCR 识别
|
|
|
+
|
|
|
+```bash
|
|
|
+# 使用 PaddleOCR-VL
|
|
|
+cd ocr_tools/paddle_vl_tool
|
|
|
+python main.py --input document.pdf --output_dir ./output
|
|
|
+
|
|
|
+# 使用 PP-StructureV3
|
|
|
+cd ocr_tools/ppstructure_tool
|
|
|
+python main.py --input document.pdf --output_dir ./output
|
|
|
+
|
|
|
+# 使用 MinerU VLM
|
|
|
+cd ocr_tools/mineru_vl_tool
|
|
|
+python main.py --input document.pdf --output_dir ./output
|
|
|
+
|
|
|
+# 使用 DotsOCR VLM
|
|
|
+cd ocr_tools/dots.ocr_vl_tool
|
|
|
+python main.py --input document.pdf --output_dir ./output
|
|
|
+```
|
|
|
+
|
|
|
+#### OCR 结果合并
|
|
|
+
|
|
|
+```bash
|
|
|
+cd ocr_tools/ocr_merger
|
|
|
+python merge_mineru_paddle_ocr.py \
|
|
|
+ --mineru_json mineru_result.json \
|
|
|
+ --paddle_json paddleocr_result.json \
|
|
|
+ --output_dir ./merged_output
|
|
|
+```
|
|
|
+
|
|
|
+#### OCR 结果对比
|
|
|
+
|
|
|
+```bash
|
|
|
+cd ocr_comparator
|
|
|
+python compare_ocr_results.py \
|
|
|
+ file1.json file2.json \
|
|
|
+ --output_file comparison_report \
|
|
|
+ --output_format markdown
|
|
|
+```
|
|
|
+
|
|
|
+#### 可视化验证
|
|
|
+
|
|
|
+```bash
|
|
|
+cd ocr_validator
|
|
|
+streamlit run streamlit_ocr_validator.py
|
|
|
+```
|
|
|
+
|
|
|
+#### 表格线生成
|
|
|
+
|
|
|
+```bash
|
|
|
+# 新版本(Vue + FastAPI)
|
|
|
+cd table_line_generator/backend
|
|
|
+uvicorn main:app --reload
|
|
|
+
|
|
|
+# 前端(另一个终端)
|
|
|
+cd table_line_generator/frontend
|
|
|
+npm install
|
|
|
+npm run dev
|
|
|
+
|
|
|
+# 遗留版本(Streamlit)
|
|
|
+cd legacy_table_line_generator
|
|
|
+streamlit run streamlit_table_line_editor.py
|
|
|
+```
|
|
|
+
|
|
|
+## 📦 模块说明
|
|
|
+
|
|
|
+### ocr_tools - OCR 工具集合
|
|
|
+
|
|
|
+提供多种 OCR 工具的批量处理能力,支持 PDF、图片等多种输入格式。
|
|
|
+
|
|
|
+**主要工具**:
|
|
|
+- `paddle_vl_tool/` - PaddleOCR-VL 批量处理
|
|
|
+- `ppstructure_tool/` - PP-StructureV3 批量处理
|
|
|
+- `mineru_vl_tool/` - MinerU VLM 批量处理
|
|
|
+- `dots.ocr_vl_tool/` - DotsOCR VLM 批量处理
|
|
|
+- `universal_doc_parser/` - 统一文档解析框架
|
|
|
+- `ocr_merger/` - OCR 结果合并工具
|
|
|
+- `ocr_batch/` - 批量处理编排工具
|
|
|
+
|
|
|
+**详细文档**:[docs/ocr_tools/](docs/ocr_tools/)
|
|
|
+
|
|
|
+### ocr_validator - OCR 可视化验证系统
|
|
|
+
|
|
|
+基于 Streamlit 的交互式 OCR 结果验证工具,支持多工具结果对比、差异分析、可视化标注等功能。
|
|
|
+
|
|
|
+**主要功能**:
|
|
|
+- 多工具 OCR 结果展示
|
|
|
+- 智能交叉验证
|
|
|
+- 表格数据分析
|
|
|
+- 交互式图像标注
|
|
|
+
|
|
|
+**详细文档**:[ocr_validator/README.md](ocr_validator/README.md)
|
|
|
+
|
|
|
+### ocr_comparator - OCR 结果对比工具
|
|
|
+
|
|
|
+独立的 OCR 结果对比库,支持多种对比模式和差异分析。
|
|
|
+
|
|
|
+**主要功能**:
|
|
|
+- 标准表格对比
|
|
|
+- 流水表格对比
|
|
|
+- 段落对比
|
|
|
+- 差异报告生成
|
|
|
+
|
|
|
+**详细文档**:[ocr_comparator/README.md](ocr_comparator/README.md)
|
|
|
+
|
|
|
+### table_line_generator - 表格线生成器
|
|
|
+
|
|
|
+基于 Vue 3 + FastAPI 的现代化表格线生成工具,支持可视化编辑、模板应用、批量处理等功能。
|
|
|
+
|
|
|
+**主要功能**:
|
|
|
+- 可视化表格线编辑
|
|
|
+- 模板管理和应用
|
|
|
+- 批量处理
|
|
|
+- REST API 接口
|
|
|
+
|
|
|
+**详细文档**:[table_line_generator/README.md](table_line_generator/README.md)
|
|
|
+
|
|
|
+### legacy_table_line_generator - 遗留表格线生成器
|
|
|
+
|
|
|
+基于 Streamlit 的表格线生成工具(遗留版本),保留用于向后兼容。
|
|
|
+
|
|
|
+**详细文档**:[legacy_table_line_generator/README.md](legacy_table_line_generator/README.md) | [docs/legacy_table_line_generator/](docs/legacy_table_line_generator/)
|
|
|
+
|
|
|
+### ocr_utils - OCR 工具包
|
|
|
+
|
|
|
+统一的工具函数库,提供公共的 OCR 处理功能。
|
|
|
+
|
|
|
+**主要模块**:
|
|
|
+- `bbox_utils.py` - bbox 提取和坐标转换
|
|
|
+- `file_utils.py` - 文件处理工具
|
|
|
+- `pdf_utils.py` - PDF 处理工具
|
|
|
+- `image_utils.py` - 图像处理工具
|
|
|
+- `html_utils.py` - HTML/Markdown 处理工具
|
|
|
+- `number_utils.py` - 数字解析和标准化
|
|
|
+
|
|
|
+## 📚 文档导航
|
|
|
+
|
|
|
+### 工具文档
|
|
|
+- [PaddleX 文档](docs/paddlex/) - 环境配置、使用说明、参数配置
|
|
|
+- [MinerU 文档](docs/mineru/) - 环境配置、处理流程、模块说明
|
|
|
+- [DotsOCR 文档](docs/dotsocr/) - 环境配置、使用说明
|
|
|
+
|
|
|
+### 技术文档
|
|
|
+- [OCR 结果合并算法](docs/ocr_tools/ocr_merger/) - 坐标系变换、表格行匹配、动态规划
|
|
|
+- [统一文档解析器](docs/ocr_tools/universal_doc_parser/) - 模型统一框架、Layout 后处理
|
|
|
+- [PyTorch 模型](docs/ocr_tools/pytorch_models/) - ONNX 转换、推理算法
|
|
|
+
|
|
|
+### 模块文档
|
|
|
+- [OCR 验证系统](ocr_validator/README.md)
|
|
|
+- [OCR 结果对比](ocr_comparator/README.md)
|
|
|
+- [表格线生成器](table_line_generator/README.md)
|
|
|
+- [遗留表格线生成器](legacy_table_line_generator/README.md)
|
|
|
+
|
|
|
+**完整文档索引**:[docs/README.md](docs/README.md)
|
|
|
+
|
|
|
+## 🔧 依赖说明
|
|
|
+
|
|
|
+### 外部依赖
|
|
|
+
|
|
|
+- **PaddleX**:PaddleOCR-VL、PP-StructureV3 工具需要
|
|
|
+- **MinerU**:MinerU VLM 工具、统一文档解析器需要
|
|
|
+- **DotsOCR**:DotsOCR VLM 工具需要
|
|
|
+
|
|
|
+### 内部依赖
|
|
|
+
|
|
|
+- **ocr_utils**:所有模块共享的工具包
|
|
|
+- **paddle_common**:PaddleX 相关工具的公共模块
|
|
|
+
|
|
|
+## 🎨 使用场景
|
|
|
+
|
|
|
+### 场景 1:银行流水识别
|
|
|
+1. 使用 `paddle_vl_tool` 或 `ppstructure_tool` 进行 OCR 识别
|
|
|
+2. 使用 `table_line_generator` 生成表格线(如需要)
|
|
|
+3. 使用 `ocr_validator` 进行结果验证
|
|
|
+4. 使用 `ocr_comparator` 对比不同工具的结果
|
|
|
+
|
|
|
+### 场景 2:财务报表处理
|
|
|
+1. 使用 `universal_doc_parser` 进行统一文档解析
|
|
|
+2. 使用 `ocr_merger` 合并多个 OCR 工具的结果
|
|
|
+3. 使用 `ocr_validator` 进行交叉验证
|
|
|
+4. 使用 `table_line_generator` 处理复杂表格
|
|
|
+
|
|
|
+### 场景 3:批量文档处理
|
|
|
+1. 使用 `ocr_batch` 进行批量 OCR 识别
|
|
|
+2. 使用 `ocr_merger` 批量合并结果
|
|
|
+3. 使用 `ocr_comparator` 生成对比报告
|
|
|
+
|
|
|
+## 🤝 贡献指南
|
|
|
+
|
|
|
+欢迎提交 Issue 和 Pull Request!
|
|
|
+
|
|
|
+### 代码规范
|
|
|
+- 遵循 PEP 8 Python 代码规范
|
|
|
+- 使用类型提示(Type Hints)
|
|
|
+- 添加必要的文档字符串
|
|
|
+
|
|
|
+### 文档规范
|
|
|
+- 详细文档统一放在 `docs/` 目录
|
|
|
+- 各模块只保留简要的 `README.md`
|
|
|
+- 使用 Markdown 格式编写文档
|
|
|
+
|
|
|
+## 📄 许可证
|
|
|
+
|
|
|
+MIT License
|
|
|
+
|
|
|
+## 🔗 相关链接
|
|
|
+
|
|
|
+- [详细文档](docs/)
|
|
|
+- [PaddleX 官方文档](https://paddlepaddle.github.io/PaddleX/)
|
|
|
+- [MinerU 官方文档](https://github.com/opendatalab/MinerU)
|
|
|
+- [DotsOCR 官方文档](https://github.com/opendatalab/dots-ocr)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**注意**:本项目是一个统一的 OCR 处理平台,整合了多个 OCR 工具和辅助功能。各模块可以独立使用,也可以组合使用以满足不同的业务需求。
|