Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Paddle OCR 技巧

这是一个基于 PaddleOCR-VL-1.6 的批量 OCR 工作流,适合处理扫描版 PDF,尤其适合古籍、影印书、论文集、资料汇编这类“漏一段就很麻烦”的文献。

它解决的核心问题是:OCR 看起来成功了,但其实中间漏了一大段。

常见情况包括:

  • 一整页传给 OCR 后,某个大文本块只识别出第一行或前几行。
  • 原始 OCR 本来还可以,补救 OCR 反而更差,却把好结果覆盖掉。
  • 批量处理几百页后,很难知道哪些页漏识别、乱码、空页误判或标题丢失。

这个项目的做法是:不相信单次 OCR 结果,而是为每一页建立一套检查流程。

原始 OCR
补救 OCR 候选
质量判断
最终 Markdown
质量报告
人工复核页面

主要功能

  • 自动调用 PaddleOCR-VL-1.6 批量识别 PDF。
  • 保留原始 OCR 结果,不直接覆盖。
  • 发现疑似“大块漏识别”的区域后,自动切成小块/行图重新 OCR。
  • 只有补救结果明显更好时才接受,避免“误补救污染”。
  • 对整本书做视觉覆盖审计,找出“图像上有字,但 OCR 很短或为空”的页面。
  • 生成 Markdown、CSV 质量报告和 HTML 复核面板。
  • 支持每本书单独配置特殊乱码词、页眉清理规则和回归测试。

安装

需要 Python 3.10 或更高版本。

pip install -r requirements.txt

还需要安装 Poppler,因为脚本会用 pdftoppm 渲染 PDF 页面。

macOS:

brew install poppler

配置 PaddleOCR API Token

推荐用环境变量:

export PADDLEOCR_ACCESS_TOKEN="你的 token"

也可以在当前项目目录新建 .paddleocr.env,内容如下:

PADDLEOCR_ACCESS_TOKEN=你的 token

.paddleocr.env 已经在 .gitignore 中,不应该提交到 GitHub。

快速使用

input.pdf 换成你的 PDF:

python scripts/paddle_vl_batch_ocr.py input.pdf --output ocr_full_paddle_vl --workers 4
python scripts/visual_ocr_audit.py input.pdf --ocr-root ocr_full_paddle_vl
python scripts/rebuild_ocr_reports.py --ocr-root ocr_full_paddle_vl --merged-name input_ocr_merged.md
python scripts/generate_review_panel.py input.pdf --ocr-root ocr_full_paddle_vl

然后打开:

ocr_full_paddle_vl/review_panel/index.html

这个页面会把高风险页的原图、最终文本、原始 OCR、补救结果和质量信息放在一起,方便快速复核。

输出文件

常用结果在这里:

ocr_full_paddle_vl/markdown_final_v2/        每页最终 Markdown
ocr_full_paddle_vl/*_merged.md               合并后的整本 OCR 文本
ocr_full_paddle_vl/ocr_quality_report_v2.csv 每页质量统计
ocr_full_paddle_vl/ocr_deep_audit_v2.md      深度审计报告
ocr_full_paddle_vl/manual_review_list_v2.md  需要复核的页
ocr_full_paddle_vl/visual_coverage_audit_v2.md 视觉覆盖审计
ocr_full_paddle_vl/review_panel/index.html   HTML 复核面板

每本书的特殊规则

不要把某一本书的特殊问题写死到脚本里。新书应该单独建立配置:

python scripts/paddle_vl_batch_ocr.py input.pdf --write-config-template ocr_project_config.json

只有在确认某本书确实反复出现某类乱码、页眉、页脚时,才把规则写进这个文件。

示例见:

examples/ocr_project_config.example.json

回归测试

如果你已经知道某些页很容易出错,可以为这本书建立回归测试:

python scripts/regression_check.py --write-template --cases ocr_regression_cases.json
python scripts/regression_check.py --ocr-root ocr_full_paddle_vl --cases ocr_regression_cases.json

这可以防止后续修改脚本时,把已经修好的页面又弄坏。

示例见:

examples/ocr_regression_cases.example.json

基本原则

这个项目最重要的原则是:

primary OCR 永远保留
fallback 只是候选
final 必须经过质量判断
高风险页必须进入复核清单

更详细的规则见:

About

PaddleOCR-VL 批量 OCR 防漏识别、补救与质量审计流程

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages