|
|
@@ -5,10 +5,11 @@
|
|
|
## ✨ 主要功能
|
|
|
|
|
|
- 🔍 **高精度OCR识别**:使用多模态大语言模型进行图片文字识别
|
|
|
-- 📊 **智能表格处理**:专业的表格结构识别和数据提取
|
|
|
+- 📊 **智能表格处理**:专业的表格结构识别和数据提取,支持DataFrame分析
|
|
|
- 🔧 **数字格式标准化**:自动处理全角/半角字符、千分符格式
|
|
|
- 📝 **结果对比验证**:详细的OCR结果差异分析
|
|
|
-- 📈 **多种输出格式**:支持Markdown、JSON等格式输出
|
|
|
+- 🎯 **可视化校验**:点击文本高亮图片位置,快速发现识别错误
|
|
|
+- 📈 **多种输出格式**:支持Markdown、JSON、DataFrame表格等格式输出
|
|
|
- ⚙️ **灵活配置**:支持多种API提供商和参数调整
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
@@ -31,7 +32,7 @@ git clone https://gitee.com/zhch158_admin/ocr_verify.git
|
|
|
cd ocr_verify
|
|
|
|
|
|
# 安装依赖
|
|
|
-pip install openai python-dotenv beautifulsoup4 markdown
|
|
|
+pip install openai python-dotenv beautifulsoup4 markdown streamlit plotly pandas pillow numpy opencv-python openpyxl
|
|
|
```
|
|
|
|
|
|
### 环境变量配置
|
|
|
@@ -82,7 +83,7 @@ python ocr_by_vlm.py image.png -t 0.05 -m 8192 --timeout 300
|
|
|
|
|
|
### 2. 结果对比
|
|
|
|
|
|
-使用 compare_ocr_results.py 对比两个OCR结果:
|
|
|
+使用 [`compare_ocr_results.py`](compare_ocr_results.py) 对比两个OCR结果:
|
|
|
|
|
|
```bash
|
|
|
# 基本对比
|
|
|
@@ -102,7 +103,7 @@ python compare_ocr_results.py file1.md file2.md --ignore-images
|
|
|
|
|
|
### 3. 高级验证功能
|
|
|
|
|
|
-查看 ocr_vlm_verify 目录了解升级后的验证功能:
|
|
|
+查看 [`ocr_vlm_verify`](ocr_vlm_verify) 目录了解升级后的验证功能:
|
|
|
|
|
|
```bash
|
|
|
# 运行高精度验证演示
|
|
|
@@ -113,6 +114,31 @@ python quick_demo.py
|
|
|
cat README_Upgrade_Comparison.md
|
|
|
```
|
|
|
|
|
|
+### 4. 🎯 OCR可视化校验工具
|
|
|
+
|
|
|
+提供多种交互方式的OCR结果校验工具:
|
|
|
+
|
|
|
+#### Web版本(推荐)
|
|
|
+```bash
|
|
|
+# Streamlit完整版本 - 功能丰富
|
|
|
+python3 -m streamlit run streamlit_ocr_validator.py
|
|
|
+
|
|
|
+# 或使用启动脚本
|
|
|
+python3 run_streamlit_validator.py
|
|
|
+```
|
|
|
+
|
|
|
+**功能特点:**
|
|
|
+- 🖱️ **点击交互**:点击文本内容,图片显示对应位置的红色边框
|
|
|
+- 📍 **精确定位**:基于bbox坐标精确标示文本位置
|
|
|
+- 💡 **直观校验**:快速发现OCR识别错误和位置偏差
|
|
|
+- 📊 **数据分析**:统计图表和详细数据视图(Streamlit版)
|
|
|
+- ❌ **错误管理**:标记和管理识别错误(Streamlit版)
|
|
|
+- 📈 **表格分析**:HTML表格转DataFrame,支持排序、过滤、导出
|
|
|
+
|
|
|
+
|
|
|
+详细使用说明:
|
|
|
+- [Streamlit版本指南](STREAMLIT_GUIDE.md)
|
|
|
+
|
|
|
## 📁 项目结构
|
|
|
|
|
|
```
|
|
|
@@ -121,7 +147,10 @@ ocr_verify/
|
|
|
├── README.md # 项目说明文档
|
|
|
├── ocr_by_vlm.py # 主OCR识别脚本
|
|
|
├── compare_ocr_results.py # 结果对比工具
|
|
|
-├── ocr_vlm_verify/ # 升级版验证系统
|
|
|
+├── streamlit_ocr_validator.py # 完整Streamlit校验工具
|
|
|
+├── run_streamlit_validator.py # Streamlit启动脚本
|
|
|
+├── STREAMLIT_GUIDE.md # Streamlit版使用指南
|
|
|
+├── ocr_vlm_verify/ # 用vlm直接校验,效果不佳,无法比对表格数字
|
|
|
│ ├── ocr_verification.py # 高级验证功能
|
|
|
│ ├── quick_demo.py # 功能演示
|
|
|
│ ├── simple_ocr_test.py # 简化测试
|
|
|
@@ -129,6 +158,11 @@ ocr_verify/
|
|
|
├── sample_data/ # 测试样本数据
|
|
|
├── output/ # 输出结果目录
|
|
|
├── image_edit/ # 图片处理工具
|
|
|
+│ ├── config.yaml # 图片处理配置
|
|
|
+│ ├── fix_photo.sh # 图片修复脚本
|
|
|
+│ ├── image_generator.py # 图片生成工具
|
|
|
+│ └── output/ # 图片处理输出
|
|
|
+└── __pycache__/ # Python缓存
|
|
|
```
|
|
|
|
|
|
## 🔧 核心功能详解
|
|
|
@@ -147,6 +181,21 @@ ocr_verify/
|
|
|
- **金额验证**:专门的数字金额对比
|
|
|
- **位置定位**:精确的差异位置标记
|
|
|
|
|
|
+### 可视化校验功能
|
|
|
+
|
|
|
+- **交互式界面**:点击文本高亮图片位置
|
|
|
+- **bbox精确定位**:基于坐标的准确位置标示
|
|
|
+- **快速错误发现**:直观的视觉校验方式
|
|
|
+- **多格式支持**:兼容各种OCR输出格式
|
|
|
+
|
|
|
+### 表格数据分析功能 ⭐ 新增
|
|
|
+
|
|
|
+- **HTML表格解析**:自动识别并转换HTML表格为DataFrame
|
|
|
+- **多种渲染模式**:HTML渲染、Markdown渲染、DataFrame表格、原始文本
|
|
|
+- **表格交互操作**:过滤、排序、搜索、编辑
|
|
|
+- **数据导出**:支持CSV、Excel格式导出
|
|
|
+- **统计分析**:自动生成表格统计信息
|
|
|
+
|
|
|
### 数字标准化功能
|
|
|
|
|
|
自动处理以下格式转换:
|
|
|
@@ -164,6 +213,9 @@ ocr_verify/
|
|
|
# 识别财务报表图片
|
|
|
python ocr_by_vlm.py 财务报表.png -o output/
|
|
|
|
|
|
+# 使用Streamlit工具分析表格
|
|
|
+python -m streamlit run streamlit_ocr_validator.py
|
|
|
+
|
|
|
# 对比两个版本的识别结果
|
|
|
python compare_ocr_results.py output/财务报表.md reference/标准版本.md -o 对比报告
|
|
|
```
|
|
|
@@ -175,28 +227,31 @@ python compare_ocr_results.py output/财务报表.md reference/标准版本.md -
|
|
|
python ocr_by_vlm.py --batch-normalize ./原始文件/ -o ./标准化文件/
|
|
|
```
|
|
|
|
|
|
-## 🎯 升级功能亮点
|
|
|
-
|
|
|
-系统经过全面升级,主要改进包括:
|
|
|
+### 示例3:表格数据分析 ⭐ 新增
|
|
|
|
|
|
-### 检测能力提升
|
|
|
-
|
|
|
-- 错误检测覆盖率:70% → 95%
|
|
|
-- 新增格式错误识别功能
|
|
|
-- 表格坐标精确定位
|
|
|
-- 专业级错误描述
|
|
|
+```bash
|
|
|
+# 启动Streamlit进行表格分析
|
|
|
+python -m streamlit run streamlit_ocr_validator.py
|
|
|
+
|
|
|
+# 在界面中:
|
|
|
+# 1. 选择包含表格的OCR结果文件
|
|
|
+# 2. 选择"DataFrame表格"渲染模式
|
|
|
+# 3. 使用过滤、排序功能分析数据
|
|
|
+# 4. 导出Excel或CSV文件
|
|
|
+```
|
|
|
|
|
|
-### 验证模式对比
|
|
|
+### 表格处理能力升级 ⭐ 新增
|
|
|
|
|
|
-- **高精度模式**:适用于财务报表,逐项数值验证
|
|
|
-- **标准模式**:通用文档处理
|
|
|
-- **快速模式**:大批量处理
|
|
|
+- **智能表格识别**:自动检测HTML表格并转换为可分析的DataFrame
|
|
|
+- **多维度过滤**:支持按列内容、数值范围等条件过滤
|
|
|
+- **数据可视化**:集成Plotly图表,支持交互式数据展示
|
|
|
+- **批量导出**:一键导出所有表格为Excel文件,支持多工作表
|
|
|
|
|
|
-详细升级内容请查看 README_Upgrade_Comparison.md
|
|
|
+详细升级内容请查看 [`ocr_vlm_verify/README_Upgrade_Comparison.md`](ocr_vlm_verify/README_Upgrade_Comparison.md)
|
|
|
|
|
|
## 🔧 Visual Studio Code配置
|
|
|
|
|
|
-项目包含预配置的VSCode调试配置,请参考 launch.json:
|
|
|
+项目包含预配置的VSCode调试配置,请参考 [`.vscode/launch.json`](.vscode/launch.json):
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
@@ -226,14 +281,18 @@ python ocr_by_vlm.py --batch-normalize ./原始文件/ -o ./标准化文件/
|
|
|
|
|
|
### 对比报告示例
|
|
|
|
|
|
-查看 comparison_result.md 了解详细的对比报告格式。
|
|
|
+查看 [`output/comparison_result.md`](output/comparison_result.md) 了解详细的对比报告格式。
|
|
|
+
|
|
|
+### 表格分析输出 ⭐ 新增
|
|
|
+
|
|
|
+- **DataFrame视图**:可交互的表格数据展示
|
|
|
+- **统计报告**:表格行列数、数值列统计、数据类型分析
|
|
|
+- **导出文件**:CSV、Excel格式的表格数据
|
|
|
+- **可视化图表**:基于表格数据的统计图表
|
|
|
+
|
|
|
|
|
|
## 📞 联系方式
|
|
|
|
|
|
- 作者:zhch158_admin
|
|
|
- 邮箱:zhch158@sina.com
|
|
|
-- 仓库:https://gitee.com/zhch158_admin/ocr_verify.git
|
|
|
-
|
|
|
-## 📝 许可证
|
|
|
-
|
|
|
-本项目采用开源许可证,具体请查看项目根目录的LICENSE文件。
|
|
|
+- 仓库:https://gitee.com/zhch158_admin/ocr_verify.git
|