|
|
@@ -0,0 +1,239 @@
|
|
|
+# OCR验证系统
|
|
|
+
|
|
|
+一个基于视觉语言模型(VLM)的OCR识别与验证系统,专门用于处理财务报表、数据表格等文档的OCR识别和结果对比验证。
|
|
|
+
|
|
|
+## ✨ 主要功能
|
|
|
+
|
|
|
+- 🔍 **高精度OCR识别**:使用多模态大语言模型进行图片文字识别
|
|
|
+- 📊 **智能表格处理**:专业的表格结构识别和数据提取
|
|
|
+- 🔧 **数字格式标准化**:自动处理全角/半角字符、千分符格式
|
|
|
+- 📝 **结果对比验证**:详细的OCR结果差异分析
|
|
|
+- 📈 **多种输出格式**:支持Markdown、JSON等格式输出
|
|
|
+- ⚙️ **灵活配置**:支持多种API提供商和参数调整
|
|
|
+
|
|
|
+## 🚀 快速开始
|
|
|
+
|
|
|
+### 环境配置
|
|
|
+
|
|
|
+```bash
|
|
|
+# 创建conda环境
|
|
|
+conda create -n py312 python=3.12 -y
|
|
|
+conda activate py312
|
|
|
+
|
|
|
+#
|
|
|
+git config --local user.name "zhch158_admin"
|
|
|
+git config --local user.email "zhch158@sina.com"
|
|
|
+# 自定义缓存时间(如7200秒)
|
|
|
+git config --global credential.helper 'cache --timeout=7200'
|
|
|
+
|
|
|
+# 克隆项目
|
|
|
+git clone https://gitee.com/zhch158_admin/ocr_verify.git
|
|
|
+cd ocr_verify
|
|
|
+
|
|
|
+# 安装依赖
|
|
|
+pip install openai python-dotenv beautifulsoup4 markdown
|
|
|
+```
|
|
|
+
|
|
|
+### 环境变量配置
|
|
|
+
|
|
|
+复制 [.env](.env) 文件并配置您的API密钥:
|
|
|
+
|
|
|
+```bash
|
|
|
+cp .env.example .env
|
|
|
+# 编辑.env文件,配置相应的API密钥
|
|
|
+```
|
|
|
+
|
|
|
+支持的API提供商:
|
|
|
+
|
|
|
+- DeepSeek
|
|
|
+- 阿里云DashScope
|
|
|
+- ModelScope
|
|
|
+- Google Gemini
|
|
|
+- Ollama (本地部署)
|
|
|
+
|
|
|
+## 📖 使用指南
|
|
|
+
|
|
|
+### 1. OCR识别
|
|
|
+
|
|
|
+使用 [ocr_by_vlm.py](ocr_by_vlm.py) 进行图片OCR识别:
|
|
|
+
|
|
|
+```bash
|
|
|
+# 标准OCR识别(启用数字标准化)
|
|
|
+python ocr_by_vlm.py image.png -o output/
|
|
|
+
|
|
|
+# 禁用数字标准化
|
|
|
+python ocr_by_vlm.py image.png --no-normalize
|
|
|
+
|
|
|
+# 批量标准化已有文件
|
|
|
+python ocr_by_vlm.py --batch-normalize ./markdown_files/ -o ./normalized/
|
|
|
+
|
|
|
+# 自定义参数
|
|
|
+python ocr_by_vlm.py image.png -t 0.05 -m 8192 --timeout 300
|
|
|
+```
|
|
|
+
|
|
|
+**参数说明:**
|
|
|
+
|
|
|
+- `-o, --output`:输出目录
|
|
|
+- `-t, --temperature`:生成温度(默认0.1)
|
|
|
+- `-m, --max-tokens`:最大token数(默认4096)
|
|
|
+- `--timeout`:超时时间(默认180秒)
|
|
|
+- `--no-normalize`:禁用数字标准化
|
|
|
+- `--batch-normalize`:批量标准化模式
|
|
|
+
|
|
|
+### 2. 结果对比
|
|
|
+
|
|
|
+使用 compare_ocr_results.py 对比两个OCR结果:
|
|
|
+
|
|
|
+```bash
|
|
|
+# 基本对比
|
|
|
+python compare_ocr_results.py file1.md file2.md
|
|
|
+
|
|
|
+# 指定输出格式和文件名
|
|
|
+python compare_ocr_results.py file1.md file2.md -o comparison_result -f both
|
|
|
+
|
|
|
+# 生成详细报告
|
|
|
+python compare_ocr_results.py file1.md file2.md --ignore-images
|
|
|
+```
|
|
|
+
|
|
|
+**输出格式:**
|
|
|
+
|
|
|
+- JSON报告:机器可读的详细差异数据
|
|
|
+- Markdown报告:人类友好的对比报告
|
|
|
+
|
|
|
+### 3. 高级验证功能
|
|
|
+
|
|
|
+查看 ocr_vlm_verify 目录了解升级后的验证功能:
|
|
|
+
|
|
|
+```bash
|
|
|
+# 运行高精度验证演示
|
|
|
+cd ocr_vlm_verify
|
|
|
+python quick_demo.py
|
|
|
+
|
|
|
+# 查看升级对比说明
|
|
|
+cat README_Upgrade_Comparison.md
|
|
|
+```
|
|
|
+
|
|
|
+## 📁 项目结构
|
|
|
+
|
|
|
+```
|
|
|
+ocr_verify/
|
|
|
+├── .env # 环境变量配置
|
|
|
+├── README.md # 项目说明文档
|
|
|
+├── ocr_by_vlm.py # 主OCR识别脚本
|
|
|
+├── compare_ocr_results.py # 结果对比工具
|
|
|
+├── ocr_vlm_verify/ # 升级版验证系统
|
|
|
+│ ├── ocr_verification.py # 高级验证功能
|
|
|
+│ ├── quick_demo.py # 功能演示
|
|
|
+│ ├── simple_ocr_test.py # 简化测试
|
|
|
+│ └── README_Upgrade_Comparison.md # 升级说明
|
|
|
+├── sample_data/ # 测试样本数据
|
|
|
+├── output/ # 输出结果目录
|
|
|
+├── image_edit/ # 图片处理工具
|
|
|
+```
|
|
|
+
|
|
|
+## 🔧 核心功能详解
|
|
|
+
|
|
|
+### OCR识别功能
|
|
|
+
|
|
|
+- **多模态识别**:支持图片转Markdown格式
|
|
|
+- **数字标准化**:自动处理财务数据格式
|
|
|
+- **表格优化**:专业的表格结构识别
|
|
|
+- **格式保持**:保持原文档的布局结构
|
|
|
+
|
|
|
+### 对比验证功能
|
|
|
+
|
|
|
+- **表格差异检测**:逐项对比表格数据
|
|
|
+- **段落差异分析**:智能段落匹配对比
|
|
|
+- **金额验证**:专门的数字金额对比
|
|
|
+- **位置定位**:精确的差异位置标记
|
|
|
+
|
|
|
+### 数字标准化功能
|
|
|
+
|
|
|
+自动处理以下格式转换:
|
|
|
+
|
|
|
+- 全角数字 → 半角数字
|
|
|
+- 全角标点 → 半角标点
|
|
|
+- 千分符标准化
|
|
|
+- 小数点格式统一
|
|
|
+
|
|
|
+## 📊 使用示例
|
|
|
+
|
|
|
+### 示例1:处理财务报表
|
|
|
+
|
|
|
+```bash
|
|
|
+# 识别财务报表图片
|
|
|
+python ocr_by_vlm.py 财务报表.png -o output/
|
|
|
+
|
|
|
+# 对比两个版本的识别结果
|
|
|
+python compare_ocr_results.py output/财务报表.md reference/标准版本.md -o 对比报告
|
|
|
+```
|
|
|
+
|
|
|
+### 示例2:批量处理
|
|
|
+
|
|
|
+```bash
|
|
|
+# 批量标准化已有的Markdown文件
|
|
|
+python ocr_by_vlm.py --batch-normalize ./原始文件/ -o ./标准化文件/
|
|
|
+```
|
|
|
+
|
|
|
+## 🎯 升级功能亮点
|
|
|
+
|
|
|
+系统经过全面升级,主要改进包括:
|
|
|
+
|
|
|
+### 检测能力提升
|
|
|
+
|
|
|
+- 错误检测覆盖率:70% → 95%
|
|
|
+- 新增格式错误识别功能
|
|
|
+- 表格坐标精确定位
|
|
|
+- 专业级错误描述
|
|
|
+
|
|
|
+### 验证模式对比
|
|
|
+
|
|
|
+- **高精度模式**:适用于财务报表,逐项数值验证
|
|
|
+- **标准模式**:通用文档处理
|
|
|
+- **快速模式**:大批量处理
|
|
|
+
|
|
|
+详细升级内容请查看 README_Upgrade_Comparison.md
|
|
|
+
|
|
|
+## 🔧 Visual Studio Code配置
|
|
|
+
|
|
|
+项目包含预配置的VSCode调试配置,请参考 launch.json:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "configurations": [
|
|
|
+ {
|
|
|
+ "name": "Python Debugger: Current File",
|
|
|
+ "type": "debugpy",
|
|
|
+ "request": "launch",
|
|
|
+ "program": "${file}",
|
|
|
+ "console": "integratedTerminal",
|
|
|
+ "cwd": "${fileDirname}",
|
|
|
+ "env": {"PYTHONPATH":"${workspaceFolder};${env:PYTHONPATH}"},
|
|
|
+ "envFile": "${workspaceFolder}/.env",
|
|
|
+ "justMyCode": false
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## 📄 输出示例
|
|
|
+
|
|
|
+### OCR识别输出
|
|
|
+
|
|
|
+- **Markdown文件**:格式化的文档内容
|
|
|
+- **JSON元数据**:处理信息和配置参数
|
|
|
+- **标准化报告**:字符变更统计
|
|
|
+
|
|
|
+### 对比报告示例
|
|
|
+
|
|
|
+查看 comparison_result.md 了解详细的对比报告格式。
|
|
|
+
|
|
|
+## 📞 联系方式
|
|
|
+
|
|
|
+- 作者:zhch158_admin
|
|
|
+- 邮箱:zhch158@sina.com
|
|
|
+- 仓库:https://gitee.com/zhch158_admin/ocr_verify.git
|
|
|
+
|
|
|
+## 📝 许可证
|
|
|
+
|
|
|
+本项目采用开源许可证,具体请查看项目根目录的LICENSE文件。
|