zhch158_admin 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
..
config 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
README.md 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
__init__.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
config_manager.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
ocr_validator_file_utils.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
ocr_validator_layout.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
ocr_validator_utils.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
run_streamlit_validator.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
streamlit_ocr_validator.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
streamlit_validator_core.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
streamlit_validator_cross.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
streamlit_validator_result.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
streamlit_validator_table.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
streamlit_validator_ui.py 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ
styles.css 444025c466 feat: Add OCR validation display module with cross-validation results and table handling 1 nedēļu atpakaļ

README.md

🔍 OCR 可视化验证系统

一个功能强大的 OCR 识别与验证系统,集成了多种 OCR 工具支持、智能交叉验证、可视化校验和表格数据分析功能,专为财务报表、数据表格等复杂文档设计。

📁 目录结构

ocr_validator/
├── __init__.py                      # 包初始化文件
├── streamlit_ocr_validator.py       # 主应用入口
├── streamlit_validator_core.py      # 核心验证器类
├── streamlit_validator_ui.py        # UI 组件
├── streamlit_validator_table.py     # 表格处理
├── streamlit_validator_cross.py     # 交叉验证
├── streamlit_validator_result.py    # 结果展示
├── ocr_validator_layout.py          # 布局管理
├── ocr_validator_utils.py           # OCR 验证工具函数
├── ocr_validator_file_utils.py     # 文件处理工具(Streamlit 特定)
├── config_manager.py                # 配置管理器
├── run_streamlit_validator.py       # 启动脚本
├── styles.css                       # 样式文件
├── config/                          # 配置文件目录
│   ├── global.yaml
│   └── ... (其他配置文件)
└── README.md                        # 本文档

✨ 核心功能

🎯 多工具 OCR 支持

  • Dots OCR:专业 VLM OCR 引擎
  • PaddleOCR PPStructV3:结构化文档识别
  • PaddleOCR-VL:视觉语言模型增强版
  • Table Recognition V2:专业表格识别
  • MinerU VLM:多模态文档理解

🔄 智能交叉验证

  • 多数据源对比:支持不同 OCR 工具结果的交叉验证
  • 细粒度差异检测:精确到单元格级别的差异分析
  • 智能表格对比
    • 标准表格模式(standard
    • 流水表格模式(flow_list)- 支持表头位置智能检测
    • 资产负债表等多层表头识别:自动识别总表头和分类标题
    • 自动列类型检测(数字、日期、文本、文本型数字)
  • 差异分类统计
    • 金额差异(table_amount)- 严重度:high
    • 日期时间差异(table_datetime)- 严重度:medium
    • 文本差异(table_text)- 严重度:low/medium(根据相似度)
    • 表头差异(位置、内容、结构)
    • 段落差异
    • 列类型冲突(自动提升严重度到 high

📊 可视化校验工具

  • 交互式图像标注:点击文本高亮对应图像位置
  • 精确坐标定位:基于 bbox 的精确位置标示
  • 旋转角度处理
    • 自动检测文档旋转角度
    • 支持手动调整旋转
    • 智能坐标转换(使用 ocr_utils.image_utils.rotate_image_and_coordinates
  • 多渲染模式
    • HTML 渲染(支持横向滚动,使用 ocr_utils.html_utils.process_html_images
    • Markdown 渲染(使用 ocr_utils.html_utils.process_markdown_images
    • DataFrame 表格(使用 ocr_utils.html_utils.parse_html_tables
    • 原始文本

📈 表格数据分析

  • 智能表格解析:自动识别并转换 HTML 表格(使用 ocr_utils.html_utils.convert_html_table_to_markdown
  • 交互式操作
    • 过滤(按列值、关键词)
    • 排序(升序/降序)
    • 分页显示
    • 列选择显示
  • 数据导出:支持 CSV、Excel 格式
  • 统计分析:自动生成数值列统计信息

🔧 数字标准化

  • 全角/半角字符转换
  • 千分位分隔符标准化
  • 小数点格式统一
  • 支持批量标准化处理(使用 ocr_utils.number_utils

🚀 快速开始

环境配置

# 创建 conda 环境
conda create -n py312 python=3.12 -y
conda activate py312

# 进入 ocr_platform 目录
cd /path/to/ocr_platform

# 安装依赖
pip install streamlit plotly pandas pillow numpy opencv-python openpyxl \
    beautifulsoup4 pyyaml fuzzywuzzy python-Levenshtein

配置文件

编辑配置文件(详见 config/README.md):

1. 全局配置 (config/global.yaml)

data_sources:
  - 德_内蒙古银行照.yaml
  - 对公_招商银行图.yaml
  - A用户_单元格扫描流水.yaml
  - B用户_扫描流水.yaml
  - 至远彩色_2023年报.yaml

2. 项目配置示例 (config/B用户_扫描流水.yaml)

name: "B用户_扫描流水"
description: "扫描流水数据验证"
data_path: "/path/to/data"
ocr:
  tools:
    dots_ocr:
      name: "Dots OCR"
      json_structure: "array"
      text_field: "text"
      bbox_field: "bbox"
      category_field: "category"
      confidence_field: "confidence"

启动应用

# 方式 1: 使用启动脚本
cd /path/to/ocr_platform/ocr_validator
python run_streamlit_validator.py

# 方式 2: 直接使用 Streamlit
streamlit run streamlit_ocr_validator.py

🔗 依赖关系

内部依赖

  • ocr_utils:通用工具模块
    • ocr_utils.html_utils:HTML/Markdown 处理
    • ocr_utils.image_utils:图像处理和旋转
    • ocr_utils.visualization_utils:可视化工具
    • ocr_utils.number_utils:数字标准化

外部依赖

  • Streamlit:Web 应用框架
  • Pandas:数据处理
  • Plotly:数据可视化
  • Pillow:图像处理
  • OpenCV:图像方向检测
  • PyYAML:配置文件解析

📝 使用说明

1. 数据源配置

config/global.yaml 中配置数据源列表,每个数据源对应一个 YAML 配置文件。

2. OCR 数据加载

系统会自动扫描配置的数据路径,查找 OCR 结果文件(JSON 格式)。

3. 交叉验证

选择两个不同的 OCR 数据源进行对比,系统会自动检测差异并生成报告。

4. 可视化校验

  • 点击文本区域,自动高亮对应的图像位置
  • 支持旋转角度调整
  • 支持多种渲染模式切换

5. 表格分析

  • 自动识别 HTML 表格
  • 支持交互式过滤、排序、分页
  • 支持数据导出

🛠️ 开发说明

模块结构

  • streamlit_ocr_validator.py:主入口,负责页面布局和路由
  • streamlit_validator_core.py:核心验证器类,管理 OCR 数据和状态
  • streamlit_validator_ui.py:UI 组件和页面配置
  • streamlit_validator_table.py:表格处理和分析
  • streamlit_validator_cross.py:交叉验证功能
  • streamlit_validator_result.py:结果展示
  • ocr_validator_layout.py:布局管理和图像处理
  • ocr_validator_utils.py:OCR 验证专用工具函数
  • ocr_validator_file_utils.py:Streamlit 特定的文件处理函数

公共工具复用

通用工具已提取到 ocr_utils 模块:

  • HTML/Markdown 处理ocr_utils.html_utils
  • 图像旋转ocr_utils.image_utils.rotate_image_and_coordinates
  • 可视化ocr_utils.visualization_utils.VisualizationUtils.draw_bbox_on_image

添加新的 OCR 工具支持

  1. config/ 目录下创建工具配置文件
  2. ocr_validator_utils.py 中添加数据解析函数
  3. 更新 config/global.yaml 添加数据源

📄 许可证

[根据项目许可证填写]

🤝 贡献

欢迎提交 Issue 和 Pull Request!