自从有人发现使用VLM来做OCR也能达到不错的效果后,相关的项目层出不穷,时不时就会冒出新的项目来刷榜。最近恰好发现MonkeyOCR这个项目,主要是使用端到端VLM来做主要内容识别以及使用Pipeline模型中常用的版面分析模型来做结构识别。这种融合模型的范式值得借鉴,可拓展性也不错。
一、背景
文档解析是将包含文本、表格、图片、公式等多模态信息的复杂文档转化为结构化数据的核心技术,广泛用于商业自动化、档案数字化、智能教育和医疗系统等场景。
现有方案主要分为两类,各有优缺点:
● Pipeline式(如MinerU):各个子任务模块分离,灵活但容易误差累积。
● End-to-End式(如Qwen-VL):统一模型端到端解析,但资源消耗高,扩展性差。
二、方法概述
MonkeyOCR将文档解析抽象为三个子任务:
-
Structure(文档结构检测):识别各个语义块的位置和类型
-
Recognition(内容识别):识别各语义块的具体内容,如文字、表格、公式等
-
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 个子任务:布局检测、阅读顺序预测、文字识别、表格识别、公式识别、代码块识别
三阶段构建流程:
- Structure Detection
-
整合并清洗M6Doc、DocLayNet等公共数据
-
中文数据不足则用合成方式补充
- Content Recognition
-
基于结构标注裁剪出语义块进行识别
-
表格/公式识别数据来自PubTabNet、UniMER-1M等,并合成中文数据
- 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工具。