MonkeyOCR:用三元组范式重构文档解析与识别

自从有人发现使用VLM来做OCR也能达到不错的效果后,相关的项目层出不穷,时不时就会冒出新的项目来刷榜。最近恰好发现MonkeyOCR这个项目,主要是使用端到端VLM来做主要内容识别以及使用Pipeline模型中常用的版面分析模型来做结构识别。这种融合模型的范式值得借鉴,可拓展性也不错。

一、背景

文档解析是将包含文本、表格、图片、公式等多模态信息的复杂文档转化为结构化数据的核心技术,广泛用于商业自动化、档案数字化、智能教育和医疗系统等场景。
现有方案主要分为两类,各有优缺点:

Pipeline式(如MinerU):各个子任务模块分离,灵活但容易误差累积。

End-to-End式(如Qwen-VL):统一模型端到端解析,但资源消耗高,扩展性差。

二、方法概述

MonkeyOCR综述

MonkeyOCR将文档解析抽象为三个子任务:

  1. Structure(文档结构检测):识别各个语义块的位置和类型

  2. Recognition(内容识别):识别各语义块的具体内容,如文字、表格、公式等

  3. Relation(关系建模):预测块之间的逻辑阅读顺序

针对端到端和模块化两种方式的缺点,MonkeyOCR取其两者精华,将文档解析抽象为三个子任务,提出结构-识别-关系三元组(Structure-Recognition-Relation)。这种设计融合了Pipeline的可解释性与End-to-End的统一优势。

三、子任务细节

1. Structure Detection

  • 模型结构:YOLO系列的改进版本。

  • 目标:检测页面中各个布局块的边界框和类别(如 text, table, formula, figure 等)。

  • 训练数据:使用 MonkeyDoc 中的 layout detection 子集,包括合成的中文数据。

  • 训练方法:

    • 输入:文档页面图像 I ∈ R^{H×W×3}

    • 输出:结构块集合 B = {b1, ..., bn},每个包含 bbox 和类型 ti

  • 损失函数:标准目标检测损失(box regression + classification)

2. Recognition

  • 模型结构:自行训练的LLM。

  • 目标:模型从裁剪图中识别文字/表格/公式,输出结构化内容 c_i

  • 训练方式:

    • 每个检测块 bi被裁剪成小图像 I_crop^i

    • 输入给 LMM,并结合特定类型的提示 pt_i

    • 模型输出每个块的结构化内容 c_i

  • 训练技巧:

    • 所有块级识别任务(文本、表格、公式)统一使用一个 LMM 进行训练

    • 使用多任务损失(例如交叉熵 + 表格结构loss + 公式CDM loss)

  • 训练数据:

    • PubTabNet、UniMER、合成数据

    • Gemini 2.5 Pro 提供高质量标签

# 定义任务指令
TASK_INSTRUCTIONS = {
    'text': 'Please output the text content from the image.',
    'formula': 'Please write out the expression of the formula in the image using LaTeX format.',
    'table': 'Please output the table in the image in LaTeX format.'
}

3. Relation Prediction

  • 模型结构:使用LayoutLM 类似的layout-aware encoder

  • 目标:学习文档中各元素(块)之间的阅读顺序

  • 训练方式:

    • 输入:
      • 结构块集合B = {b₁, ..., bₙ},每个块带有位置(x1, y1, x2, y2)和类别tᵢ
      • 可以额外附带 LMM 中识别出的内容(可选,用于关系预测辅助)。
    • 输出:
      • 顺序序列 S = {s₁, ..., sₙ},为块的重排索引,表示最终输出中各块应当出现的顺序。
  • 训练数据:

    • DocGenome(英文,自动标注 + 人工清洗)
    • 中文文档由人工标注 + PPOCR + LayoutReader组合自动注释

四、数据集

3B模型能在一定程度上超越或者打平开源/闭源TOP模型,最主要是自行合成并构建针对该任务的数据集。

数据规模与特点

  • 包含 3.9M 文档实例

  • 支持中英文双语

  • 涵盖超过 10 种文档类型

  • 覆盖 6 个子任务:布局检测、阅读顺序预测、文字识别、表格识别、公式识别、代码块识别

三阶段构建流程

  1. Structure Detection
  • 整合并清洗M6Doc、DocLayNet等公共数据

  • 中文数据不足则用合成方式补充

  1. Content Recognition
  • 基于结构标注裁剪出语义块进行识别

  • 表格/公式识别数据来自PubTabNet、UniMER-1M等,并合成中文数据

  1. Relation Prediction
  • 利用DocGenome等开放数据并结合模型自动注释

  • 中文数据则部分人工标注,增强鲁棒性

五、性能评估

评估基准:

OmniDocBench:跨语言、跨布局、跨文档类型的全面文档解析评估集,共981页PDF。
在这里插入图片描述

实验结果:

对比项MonkeyOCR-3B性能表现
MinerU(pipeline工具)+15.0% 公式识别CDM
+8.6% 表格识别TEDS
+6% 中文任务总体edit distance
Qwen2.5-VL-72B(超大模型)+7.4% 英文任务总体性能
Gemini 2.5 Pro(闭源旗舰)略优于其英文任务表现

六、总结

MonkeyOCR提出一种新的SRR三元组架构,结合传统两种文档解析方式的优化,在精度和效率上都有不错的表现,其中不乏如下亮点:

  • 模块化设计易于替换和优化各阶段模型,可将VLM部分替换为商用API模型

  • 相比72B模型,3B模型在硬件资源有限的情况下也可运行

这种融合架构给OCR文档解析任务提供了新的思路,期待涌现出更多优秀的OCR工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值