暫無描述

zhch158_admin 1589b40ba8 更新OCR输出目录配置,新增图片方向检测设置,启用OpenCV分析方法并缓存检测结果 2 月之前
.vscode 9721bd4ab1 添加Streamlit OCR验证器的调试配置,支持在集成终端中运行并设置环境变量 2 月之前
image 1f11c256ba Add image and markdown documentation for coordinate system explanation and conversion 2 月之前
image_edit e129dc6ca8 Remove LocalVLMProcessor class and its associated methods for image processing and model handling 2 月之前
ocr_vlm_verify 6a8e5074e1 直接VLM读取原图和识别结果比对,效果很差,不可行 2 月之前
.env.example c26adef7b0 添加示例环境配置文件 .env.example,包含多模态API的密钥和基础信息 2 月之前
README.md 392efa8141 更新README.md,增强OCR可视化校验工具描述,新增表格数据分析功能,优化安装依赖和使用指南 2 月之前
STREAMLIT_GUIDE.md 53725d5c7a 新增Streamlit OCR可视化校验工具使用指南,包含核心功能介绍、快速启动步骤及表格数据分析功能详解 2 月之前
compare_ocr_results.py f68e27e93e 更新主函数默认参数,添加时间戳到输出文件名以避免覆盖 2 月之前
config.yaml 1589b40ba8 更新OCR输出目录配置,新增图片方向检测设置,启用OpenCV分析方法并缓存检测结果 2 月之前
ocr_by_vlm.py 9a354b77ce 调整ocr_with_vlm函数的输出目录和默认示例图片路径,优化数字标准化处理逻辑 2 月之前
ocr_validator_layout.py 1f2da377f9 增强图像方向检测功能,新增自动检测和手动设置角度选项,优化缓存管理和调试信息展示 2 月之前
ocr_validator_utils.py 875dda1bea 增强图像旋转和坐标处理功能,修正旋转算法,新增OpenCV图像方向检测功能 2 月之前
run_streamlit_validator.py cc8a579d76 优化OCR数据检查路径,确保正确读取数据文件 2 月之前
streamlit_ocr_validator.py 158979280e 增强HTML表格显示功能,支持横向滚动和多种显示模式,优化表格信息展示 2 月之前
styles.css 7cd2ced3de 新增OCR验证工具样式配置文件,定义主体、侧边栏、选择框、文本及内容样式 2 月之前
图片操作说明.md 1f11c256ba Add image and markdown documentation for coordinate system explanation and conversion 2 月之前

README.md

OCR验证系统

一个基于视觉语言模型(VLM)的OCR识别与验证系统,专门用于处理财务报表、数据表格等文档的OCR识别和结果对比验证。

✨ 主要功能

  • 🔍 高精度OCR识别:使用多模态大语言模型进行图片文字识别
  • 📊 智能表格处理:专业的表格结构识别和数据提取,支持DataFrame分析
  • 🔧 数字格式标准化:自动处理全角/半角字符、千分符格式
  • 📝 结果对比验证:详细的OCR结果差异分析
  • 🎯 可视化校验:点击文本高亮图片位置,快速发现识别错误
  • 📈 多种输出格式:支持Markdown、JSON、DataFrame表格等格式输出
  • ⚙️ 灵活配置:支持多种API提供商和参数调整

🚀 快速开始

环境配置

# 创建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 streamlit plotly pandas pillow numpy opencv-python openpyxl

环境变量配置

复制 .env 文件并配置您的API密钥:

cp .env.example .env
# 编辑.env文件,配置相应的API密钥

支持的API提供商:

  • DeepSeek
  • 阿里云DashScope
  • ModelScope
  • Google Gemini
  • Ollama (本地部署)

📖 使用指南

1. OCR识别

使用 ocr_by_vlm.py 进行图片OCR识别:

# 标准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结果:

# 基本对比
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 目录了解升级后的验证功能:

# 运行高精度验证演示
cd ocr_vlm_verify
python quick_demo.py

# 查看升级对比说明
cat README_Upgrade_Comparison.md

4. 🎯 OCR可视化校验工具

提供多种交互方式的OCR结果校验工具:

Web版本(推荐)

# Streamlit完整版本 - 功能丰富
python3 -m streamlit run streamlit_ocr_validator.py

# 或使用启动脚本
python3 run_streamlit_validator.py

功能特点:

  • 🖱️ 点击交互:点击文本内容,图片显示对应位置的红色边框
  • 📍 精确定位:基于bbox坐标精确标示文本位置
  • 💡 直观校验:快速发现OCR识别错误和位置偏差
  • 📊 数据分析:统计图表和详细数据视图(Streamlit版)
  • 错误管理:标记和管理识别错误(Streamlit版)
  • 📈 表格分析:HTML表格转DataFrame,支持排序、过滤、导出

详细使用说明:

📁 项目结构

ocr_verify/
├── .env                        # 环境变量配置
├── README.md                   # 项目说明文档
├── ocr_by_vlm.py              # 主OCR识别脚本
├── compare_ocr_results.py     # 结果对比工具
├── 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     # 简化测试
│   └── README_Upgrade_Comparison.md  # 升级说明
├── sample_data/               # 测试样本数据
├── output/                    # 输出结果目录
├── image_edit/               # 图片处理工具
│   ├── config.yaml            # 图片处理配置
│   ├── fix_photo.sh           # 图片修复脚本
│   ├── image_generator.py     # 图片生成工具
│   └── output/               # 图片处理输出
└── __pycache__/              # Python缓存

🔧 核心功能详解

OCR识别功能

  • 多模态识别:支持图片转Markdown格式
  • 数字标准化:自动处理财务数据格式
  • 表格优化:专业的表格结构识别
  • 格式保持:保持原文档的布局结构

对比验证功能

  • 表格差异检测:逐项对比表格数据
  • 段落差异分析:智能段落匹配对比
  • 金额验证:专门的数字金额对比
  • 位置定位:精确的差异位置标记

可视化校验功能

  • 交互式界面:点击文本高亮图片位置
  • bbox精确定位:基于坐标的准确位置标示
  • 快速错误发现:直观的视觉校验方式
  • 多格式支持:兼容各种OCR输出格式

表格数据分析功能 ⭐ 新增

  • HTML表格解析:自动识别并转换HTML表格为DataFrame
  • 多种渲染模式:HTML渲染、Markdown渲染、DataFrame表格、原始文本
  • 表格交互操作:过滤、排序、搜索、编辑
  • 数据导出:支持CSV、Excel格式导出
  • 统计分析:自动生成表格统计信息

数字标准化功能

自动处理以下格式转换:

  • 全角数字 → 半角数字
  • 全角标点 → 半角标点
  • 千分符标准化
  • 小数点格式统一

📊 使用示例

示例1:处理财务报表

# 识别财务报表图片
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 对比报告

示例2:批量处理

# 批量标准化已有的Markdown文件
python ocr_by_vlm.py --batch-normalize ./原始文件/ -o ./标准化文件/

示例3:表格数据分析 ⭐ 新增

# 启动Streamlit进行表格分析
python -m streamlit run streamlit_ocr_validator.py

# 在界面中:
# 1. 选择包含表格的OCR结果文件
# 2. 选择"DataFrame表格"渲染模式
# 3. 使用过滤、排序功能分析数据
# 4. 导出Excel或CSV文件

表格处理能力升级 ⭐ 新增

  • 智能表格识别:自动检测HTML表格并转换为可分析的DataFrame
  • 多维度过滤:支持按列内容、数值范围等条件过滤
  • 数据可视化:集成Plotly图表,支持交互式数据展示
  • 批量导出:一键导出所有表格为Excel文件,支持多工作表

详细升级内容请查看 ocr_vlm_verify/README_Upgrade_Comparison.md

🔧 Visual Studio Code配置

项目包含预配置的VSCode调试配置,请参考 .vscode/launch.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元数据:处理信息和配置参数
  • 标准化报告:字符变更统计

对比报告示例

查看 output/comparison_result.md 了解详细的对比报告格式。

表格分析输出 ⭐ 新增

  • DataFrame视图:可交互的表格数据展示
  • 统计报告:表格行列数、数值列统计、数据类型分析
  • 导出文件:CSV、Excel格式的表格数据
  • 可视化图表:基于表格数据的统计图表

📞 联系方式