跳转到内容

OCR 与布局识别的协同工作

OCR 与布局识别的协同工作

学习目标

读完本章后,你将能够:

  • 理解 PDF 文本层与扫描件的分类策略
  • 掌握布局检测与 OCR 的协同流程
  • 处理扫描件、手写体、多栏布局等复杂场景
  • 识别印章等特殊元素的提取策略

前置知识


1. PDF 分类:文本层还是扫描件?

MinerU 在处理 PDF 时,首先判断文档类型,决定是否需要 OCR:

分类依据

  • 检查 PDF 页面中是否有可选内容(文本层)
  • 如果页面无文本层,则判定为扫描件
  • 混合文档(部分页面有文本层)采用混合策略

2. 布局检测 + OCR 协同流程

2.1 Pipeline 引擎的协同

关键协同点

  1. 布局检测先行:先用 PP-DocLayoutV2 将页面划分为不同区域
  2. 区域分类路由:根据区域类型决定使用哪个子模型
  3. 空间信息传递:每个子模型都使用布局检测提供的边界框作为输入
  4. 结果融合:将各子模型的输出按阅读顺序合并

2.2 印章文字识别

MinerU 在 Pipeline 引擎中增加了印章文字的特殊处理:

印章识别特点

  • 印章文字通常呈圆形或弧形排列
  • 需要多角度旋转尝试以获得最佳 OCR 结果
  • OCR 置信度驱动的最佳角度选择

3. 109 种语言支持

MinerU 的 OCR 引擎(基于 PaddleOCR)支持 109 种语言的检测与识别:

语言检测流程

  1. 使用 fast-langdetect 对提取的文本进行语言识别
  2. 根据检测结果选择对应的 OCR 语言模型
  3. 多语言混排文档自动切换语言模型

支持的主要语言族

  • 拉丁字母系:英语、法语、德语、西班牙语等
  • 汉字系:简体中文、繁体中文、日语、韩语
  • 阿拉伯字母系:阿拉伯语、波斯语等
  • 斯拉夫字母系:俄语、乌克兰语等
  • 印度字母系:印地语、孟加拉语等
  • 其他:泰语、越南语、希伯来语等

4. 多栏布局处理

复杂排版(如学术论文、报纸)的多栏处理策略:

多栏检测关键

  • 布局检测模型能识别分栏边界
  • 同一栏内的文本块按阅读顺序排列
  • 跨栏元素(如通栏标题)特殊处理

5. 手写体识别

MinerU 的 OCR 引擎对手写体有一定支持:

手写类型支持程度说明
工整手写体较好接近印刷体的手写
草书/连笔有限依赖训练数据覆盖
混合手写+印刷中等布局检测先分离,再分别识别

6. 陷阱与对策

陷阱对策
扫描件被误判为文本型 PDF检查文档:如果页面无可选内容,自动启用 OCR
印章文字识别失败开启印章检测功能,多角度旋转尝试
多栏文档顺序混乱确保使用支持分栏检测的布局模型
多语言文档识别率低开启语言自动检测,为不同区域选择对应模型
低分辨率扫描件 OCR 效果差先超分辨率增强,再 OCR 识别

7. 设计权衡

布局检测模型的选型

模型检测类别速度精度
PP-DocLayoutV250+ 类

取舍:使用更大的布局检测模型可以识别更多类别(如 abstract、doc_title 等),但推理时间增加。MinerU 默认使用 PP-DocLayoutV2,在速度与精度之间取得平衡。

OCR 引擎的选型

方案优势劣势
PaddleOCR PyTorch 移植PyTorch 生态统一,GPU 加速可能与原始 Paddle 版本有差异
原始 PaddlePaddle官方支持,最新功能需要额外安装 PaddlePaddle

取舍:MinerU 选择 PaddleOCR 的 PyTorch 移植版本,保持技术栈统一(PyTorch),减少依赖复杂度。


参考来源