文档解析实战结果

开源工具

PaddleOCR

OCR标注工具
paddleOCR提供了易用的标注工具,在识别不好的数据上进行标注和训练。

MinerU

Steps:

  1. 文档预处理
    PyMuPDF过滤掉不能处理(比如加密文档)的文档,提取PDF metadata:文档分类、语言类型、页码等
    语言识别
    主要支持中、英文识别,作为OCR识别的参数。
    乱码识别
    提前识别乱码,保证OCR识别文字的效果。
    扫描PDF识别
    基于文本的PDF,直接使用PyMuPDF。
    扫描件PDF,需要开启OCR。
    页面metadata抽取
    比如:总页数,页面的宽度、高度。

  2. 文档内容解析
    PDF-Extract-Kit model library检测不同的region并识别相应region的内容。

MinerU使用了5个模型,分别用于:layer检测、公式检测、表格检测、公式识别、OCR。
Layerout检测

  1. PDF-Extract-Kit layerout检测算法:实时目标检测算法YOLOv10、Layoutlmv3

  2. 数据集
    2.1 多样化数据选择:学术paper、电子书、textbooks、试卷、杂志、PPT、研究报告等
    2.2 对文档组成部分中涉及的版面标注类型进行分类,包括:标题、正文段落、图片、图片标题、表格、表格标题、图片表格注释、行内公式、公式标签,以及需舍弃的类型。
    2.3 模型训练:
    微调检测模型
    2.4 迭代数据选择和模型训练

  3. 模型结构

  4. 评估指标

公式检测
公式如果不能提前被检测,后续的文本识别很容易将公式部分识别为乱码。

  1. 模型:公式检测单独训练了一个基于YOLO的检测模型。
  2. 数据:行内公式、

公式识别
UniMERNet

  1. 数据集
    训练集:: UniMER-1M:1061791 latex-image对,
    测试集:UniMER-Test

  2. 模型结构
    模型结构基于Swin-Transformer编码器和mBART解码器。
    输入:公式图片,公式图片经过数据增强模块,转换成多个图像。编码器将图像编码成特征向量。解码器通过交叉注意力机制将图像特征向量和输出的文本序列进行交互生成公式。解码器的输入为:图像特征向量、token向量、位置编码。
    UniMERNet-Encoder,UniMERNet-Decoder在结构上做了优化提高推理速度,精度稍有损失。

  3. 任务类型
    语言模型任务。

  4. 损失函数
    交叉熵损失。

  5. 评估指标
    bleu
    编辑距离
    表达式识别率(Expression Recognition Rate)

表格识别

从表格中提取结构化数据。
表格转Latex
表格转html
TableMaster:使用PubTabNet数据集。
TableMaster将表格识别分解为四个子任务:表结构识别、text line检测、text line识别、box assignment。
StructEqTable:使用DocGenome benchmark数据集。
StructEqTable:采用端到端的方式进行表格识别。

OCR识别
使用集成到PDF-Extract-Kit中的Paddle-OCR进行文本识别。
直接对整页进行OCR识别有时会导致跨列的行被识别为一行,导致错误的语序。
对layerout检测识别出的文本块进行OCR文本识别。
对有行内公式公式的文本,先通过公式检测模型检测出公式的坐标,将公式mask掉,再执行OCR识别文字,再将公式插回识别结果。

  1. 文档内容后处理
    解决内容顺序的问题。模型识别出文本、图像、公式块等可能会有overlap,OCR识别的文字也可能会有overlap。
    后处理主要处理边界框的关系:
    3.1 处理边框包含关系:移除图像和表格区域中的公式和文字,以及公式块中的边框。
    3.2 部分覆盖关系:使用分割算法(segmentation algorithm)

  2. 格式转换
    识别结果为:meta Json,可按需转为markdown或Json格式。

实测效果

MinerU相比paddlepaddle:行内公式识别还可以;表格也比pp要准点;序号经常错;标题层级基本不分;页眉页脚几乎没有;

安装

MacOS
参考安装

问题:65536 not supported at the MPS device

Linux

MinerU MCP

不适应场景

  1. 阅读顺序基于模型对可阅读内容在空间中的分布进行排序,在极端复杂的排版下可能会部分区域乱序
  2. 对竖排文字的支持较为有限
  3. 目录和列表通过规则进行识别,少部分不常见的列表形式可能无法识别
  4. 代码块在layout模型里还没有支持
  5. 漫画书、艺术图册、小学教材、习题尚不能很好解析
  6. 表格识别在复杂表格上可能会出现行/列识别错误
  7. 在小语种PDF上,OCR识别可能会出现字符不准确的情况(如阿拉伯文易混淆字符等)
  8. 部分公式可能会无法在markdown中渲染

MonkeyOCR

结构分析

使用doclayout_yolo进行版面检测(标题、段落、表格、图片区域等)

关系理解

处理版面多个内容块之间的关系

内容识别

使用视觉理解模型进行内容识别

实测效果

linux

成本

评估调用API的成本与部署开源方案的成本

优化
在标准文档上效果非常好,但是拍照场景(文档有弯曲变形或者有阴影)效果比较差。先用文档矫正算法把图片矫正,再进行解析。

开源工具

MinerU
MonkeyOCR

标注工具

PPOCRLabel
label-studio

Survey

Aesthetics is Cheap, Show me the Text: An Empirical Evaluation of State-of-the-Art Generative Models for OCR

PaddleOCR

PP-DocLayout: A Unified Document Layout Detection Model to Accelerate Large-Scale Data Construction
PaddleOCR 3.0 Technical Report


文档解析实战结果
https://summerchengh.github.io/tech-blog/2025/06/18/大模型-Agent-效果优化-文档解析(OCR)/
Author
Your Name
Posted on
June 18, 2025
Licensed under