# 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. 代码获取 ```bash git clone https://gitee.com/zhch158_admin/ocr_platform.git -c user.name=zhch158_admin -c user.email=zhch158@sina.com 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 工具和辅助功能。各模块可以独立使用,也可以组合使用以满足不同的业务需求。