多模态OCR:解析文档中的一切内容 Multimodal OCR: Parse Anything from Documents
将文档中的文字和图形统一解析为可渲染的结构化代码,而非像素裁剪
前置知识
文档解析(Document Parsing)
文档解析是指从PDF、扫描件、网页截图等文档图像中提取结构化信息的技术。传统OCR(光学字符识别)主要关注文字识别,将图像中的文字转换为可编辑的文本。完整的文档解析系统还需要识别版面布局(标题、段落、表格)、阅读顺序、公式等内容,并将其组织为Markdown或HTML等结构化格式。这一过程通常涉及版面分析、文字检测、文字识别和阅读顺序预测等多个阶段。
本文提出的MOCR范式是对传统文档解析的根本性扩展——不仅解析文字,还将图形元素纳入解析范围。理解传统文档解析的流程和局限是理解本文创新点的前提。
SVG(可缩放矢量图形)
SVG是一种基于XML的矢量图像格式,它通过描述几何形状(如路径、矩形、圆形)、颜色、变换等属性来定义图像,而非存储像素。SVG代码可以用文本编辑器修改,可以在任意分辨率下无损缩放,并且可以直接被浏览器渲染。例如一个圆形可以用表示,其中cx、cy是圆心坐标,r是半径。
本文的核心创新之一就是将文档中的图形元素(图表、图标、示意图)转换为SVG代码。这种表示方式使得图形不再是不可编辑的像素裁剪,而是可复用、可编辑、可渲染的结构化数据,为后续的多模态预训练提供了新的监督信号。
视觉语言模型(VLM)
视觉语言模型是一种能够同时处理图像和文本的深度学习模型。它通常由视觉编码器(将图像转换为特征向量)、多模态连接器(对齐视觉和语言特征空间)和语言模型解码器(根据视觉特征生成文本)三部分组成。现代VLM如Qwen-VL、Gemini等能够根据图像生成详细的文本描述、回答视觉相关问题,甚至生成结构化代码。
MOCR本质上是一个VLM应用——它接收文档图像作为输入,输出结构化的解析序列(包含文字、表格、公式和SVG代码)。理解VLM的基本架构有助于理解本文的模型设计和训练策略。
Elo评分系统
Elo评分系统最初用于国际象棋排名,是一种基于成对比较的概率排名方法。每个参与者有一个初始评分R,当参与者A与B对战时,A的期望胜率通过逻辑曲线计算:$E_A = ?rac{1}{1+10^{(R_B-R_A)/400}}$。对战结束后,评分根据实际结果更新:$R'_A = R_A + K(S_A - E_A)$,其中$K$是更新敏感度因子,$S_A$是实际结果(胜=1,平=0.5,负=0)。战胜强对手比战胜弱对手获得更多积分。
本文提出了OCR Arena评估框架,使用LLM作为裁判对不同模型的OCR输出进行成对比较,并通过Elo评分聚合排名。理解Elo系统的原理对于理解本文的评估方法和实验结果非常重要。
分阶段预训练(Staged Pretraining)
分阶段预训练是一种训练策略,将模型训练分为多个阶段,每个阶段有不同的数据混合比例和训练目标。通常第一阶段建立基础能力(如视觉-语言对齐),第二阶段进行大规模通用预训练,第三阶段针对目标任务进行专业化训练。每个阶段可以使用不同的数据集、学习率和输入分辨率,通过逐步增加难度来降低学习难度、稳定多任务联合训练。
本文的dots.mocr模型采用三阶段预训练策略,从通用视觉训练到文档解析再到多模态OCR,这种训练方法是模型成功的关键因素之一。理解这种训练范式有助于评估模型的复现性和改进方向。
研究动机
在文档解析领域,现有方法存在一个根本性的信息丢失问题。当我们用传统OCR系统处理一份包含图表、示意图、UI元素或科学插图的文档时,这些图形元素会被简单地裁剪为像素图像,然后丢弃或仅生成简短的文字描述。例如,一份金融报告中的柱状图包含了精确的数据值、坐标轴标签、图例等丰富信息,但传统OCR只会将其标记为"Figure"并裁剪为一张图片;一份技术文档中的流程图包含了清晰的逻辑关系和决策节点,但在解析后变成了不可编辑、不可复用的像素块。根据论文的分析,这种处理方式导致了大量结构化信息的丢失——不仅丢失了图形本身携带的语义信息,还丢失了图形与周围文字之间的关联关系。更严重的是,这些被丢弃的图形恰好是文档中信息密度最高的部分,它们无法被下游的检索系统索引,也无法作为多模态预训练的监督信号被利用。现有系统如MonkeyOCR、MinerU 2.5、PaddleOCR-VL等虽然在文字解析方面取得了进步,但它们本质上仍然是文本中心的,没有真正解决图形元素的结构化表示问题。
本文的目标是本文的目标是提出一种新的文档解析范式——多模态OCR(MOCR),将文档中所有信息承载元素(包括文字、表格、公式、图表、图标、UI组件、科学示意图等)统一解析为结构化的、可渲染的表示形式。具体来说,对于文字类内容输出Markdown/LaTeX格式,对于图形类内容输出SVG代码。这种统一表示不仅保留了元素本身的语义信息,还通过生成序列中的位置编码保留了元素之间的空间和逻辑关系。作者希望构建一个紧凑的3B参数模型(dots.mocr),在文档解析和图形重建两个任务上都达到或超过现有系统的性能,同时保持通用视觉语言能力不受损害。更重要的是,作者希望通过这种方式将文档中"被丢弃的图形"转化为可复用的结构化监督信号,为大规模多模态预训练提供新的数据来源。
与已有工作不同的是,本文的独特切入点在于重新定义了"解析"的含义。传统OCR将解析等同于"提取文字",图形只是需要被检测和裁剪的区域;而MOCR将解析扩展为"将所有信息承载元素转化为可编程表示"。这一视角转换的核心洞察是:文档中最有价值的监督信号往往是视觉的而非纯文本的——一个图表中的数据点、一个流程图中的逻辑关系、一个UI截图中的组件层级,这些信息在传统OCR流程中被完全丢弃了。此外,本文还观察到,网页上大量的图形元素(图标、图表、UI组件)本身就是以SVG格式存储的,这为构建图像-SVG配对数据提供了天然的来源。通过系统性地收集、清洗和平衡这些数据,可以为图形解析提供大规模的训练监督。这种"从像素到代码"的范式转换,使得文档不再仅仅是文字的数据源,而是包含了图像、代码、文字三元组的丰富数据引擎。
核心方法
MOCR的方法可以用一个类比来理解:想象你是一个翻译员,传统OCR就像是只翻译文档中的文字而跳过所有图表;而MOCR则是一个全科翻译员,不仅翻译文字,还会把每个图表"翻译"成一组精确的绘图指令(SVG代码),使得任何人拿到这些指令后都能完美复现原始图表。从技术路线来看,MOCR首先定义了一个统一的解析任务:给定文档图像$I$,生成一个有序的解析元素序列$S = (B_1, c_1, p_1), ..., (B_K, c_K, p_K)$,其中$B_k$是空间区域(边界框),$c_k$是语义类别(文字/表格/公式/图形等),$p_k$是该区域的具体内容(文字、LaTeX或SVG代码)。模型架构采用经典的VLM设计:一个1.2B参数的高分辨率视觉编码器(从头训练,支持最高约1100万像素的输入)负责提取文档特征,一个轻量级多模态连接器负责对齐视觉和语言特征空间,一个基于Qwen2.5-1.5B的自回归语言模型解码器负责生成结构化解析序列。整个模型约3B参数,在保持紧凑的同时实现了强大的解析能力。
MOCR的核心创新在于将文档图形从"被动的像素裁剪"提升为"主动的结构化解析目标"。这一转变的关键技术洞察有三个:第一,图形可以被表示为可执行的代码(SVG),而不仅仅是像素——这意味着图形可以被编辑、缩放、渲染和复用,提供了远比图像描述更丰富的监督信号。第二,文档中天然存在大量图像-代码配对数据——网页上的图标、图表、UI组件很多本身就是SVG格式,通过系统的收集和清洗可以构建大规模训练数据。第三,非唯一的程序表示(不同的SVG代码可以渲染出视觉上相同的图像)可以通过规范化和渲染验证来处理,而不是需要像素级精确匹配。具体来说,本文提出了dots.mocr-svg变体,通过在SFT阶段增加SVG数据比例并上调困难SVG样本的权重,在相同参数预算下进一步提升了图形解析能力。这种"从像素到代码"的范式转换,使得每个被解析的图表都能形成忠实的图像-代码-文字三元组,为多模态预训练提供了可控的、可扰动的训练数据,其规模仅受限于可用文档的数量。
方法步骤详情
dots.mocr的训练流程分为三个主要阶段。第一阶段(基础视觉-语言对齐):使用通用视觉数据训练,建立稳定的视觉-语言接口,使语言模型能够可靠地消费视觉token并将生成内容锚定到视觉输入上。这一阶段使用较低的输入分辨率,主要目标是让模型学会"看懂"图像。第二阶段(大规模文档解析预训练):在统一的文档解析数据混合上进行训练,数据来源包括PDF文档(使用dots.ocr进行自动标注,生成带版面区域和阅读顺序的结构化页面转录)、渲染后的网页图像(提供HTML/DOM对齐的结构化信号)、以及通用视觉数据(保持广泛的视觉能力)。这一阶段逐步增加输入分辨率以匹配密集页面解析和长序列结构化生成的需求。第三阶段(多模态OCR专项训练):逐步减少通用视觉数据比例,增加MOCR专项目标(特别是图像到SVG解析)的比重,强化OCR中心的解析能力。预训练完成后,使用经过筛选和验证的高质量监督集进行指令微调(SFT),重点修正系统性错误、对齐输出规范、提升端到端解析保真度。对于视觉符号解析,SVG专项处理(规范化、viewBox标准化、复杂度降低)作为数据引擎的一部分,而训练过程专注于将这些精炼信号整合到稳定的多任务SFT混合中。最终发布两个检查点:dots.mocr(平衡版本)和dots.mocr-svg(SVG增强版本)。
技术新颖性
MOCR的技术新颖性体现在多个层面。首先,在任务定义层面,它首次将文档图形提升为与文字同等地位的"一等解析目标",而不是被裁剪和丢弃的像素区域。这在概念上是一个根本性的范式转换。其次,在数据工程层面,它创造性地利用了网页上天然存在的SVG资源来构建图像-SVG配对数据,通过svgo清洗、去重(代码级和图像级pHash感知哈希)、领域平衡和复杂度感知采样等系统化的数据工程,解决了图形解析缺乏大规模训练数据的难题。第三,在评估方法层面,传统的文档解析评估依赖规则匹配(如WER、NED、TEDS),对格式差异过于敏感且无法处理语义等价但序列不同的情况。本文提出的OCR Arena框架使用LLM作为裁判进行成对比较,通过双向评估协议消除位置偏差,使用Elo评分聚合排名,并通过1000次bootstrap重采样确保统计稳健性。这种评估方法更加人性化,能够捕捉错误的严重程度和鲁棒性。最后,在系统整合层面,dots.mocr在仅3B参数的紧凑模型中同时实现了文档解析和图形重建两个看似矛盾的任务,通过分阶段训练和数据混合权重控制实现了多任务的和谐共存。
实验结果
dots.mocr在文档解析和图形重建两个维度上都展现了强大的性能。在文档解析方面,基于Elo评分体系(使用Gemini 3 Flash作为裁判),dots.mocr在三个基准测试中均排名开源模型第一:olmOCR-Bench Elo得分1104.4、OmniDocBench1.5 Elo得分1059.0、XDocParse Elo得分1210.7,平均1124.7,仅次于Gemini 3 Pro的1210.7。在olmOCR-Bench的严格匹配评估中,dots.mocr达到83.9的总体得分,创下新的最优记录(SOTA),超越了所有对比系统,包括PaddleOCR-VL(80.0)、Infinity-Parser 7B(82.5)和olmOCR v0.4.0(82.4)。在分类细项上,dots.mocr在ArXiv(85.9)、Old scans math(85.5)、Tables(90.7)和Multi column(81.6)上均达到最高分。在OmniDocBench(v1.5)上,dots.mocr的TextEdit为0.031、ReadOrderEdit为0.029,均大幅优于所有对比模型(如PaddleOCR-VL1.5的0.035和0.042)。在结构化图形解析方面,dots.mocr-svg在UniSVG基准上取得0.902的综合得分,超越OCRVerse(0.763)和Gemini 3 Pro(0.735)。在ChartMimic上达到0.905(vs OCRVerse 0.799,Gemini 3 Pro 0.788),在Design2Code上达到0.834(vs Gemini 3 Pro 0.760),在ChemDraw上达到0.901(vs Gemini 3 Pro 0.839)。特别值得注意的是,在通用VQA评估中,dots.mocr在CharXiv Descriptive(77.4 vs Qwen3-VL-4B的76.2)和CharXiv Reasoning(55.3 vs 39.7)上明显优于同规模通用模型,同时在OCRBench(86.0)、DocVQA(91.85)等任务上也保持了强劲表现,说明文档解析能力的增强并没有损害通用视觉语言能力。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| olmOCR-Bench 总体 | 严格匹配得分 | 83.9 | 82.5 (Infinity-Parser 7B) | +1.4 (SOTA) |
| olmOCR-Bench | Elo评分 | 1104.4 | 1180.4 (Gemini 3 Pro) | 开源模型第一 |
| OmniDocBench1.5 | Elo评分 | 1059.0 | 1128.0 (Gemini 3 Pro) | 开源模型第一 |
| XDocParse | Elo评分 | 1210.7 | 1323.7 (Gemini 3 Pro) | 开源模型第一 |
| OmniDocBench(v1.5) TextEdit | 编辑距离(越低越好) | 0.031 | 0.035 (PaddleOCR-VL1.5) | -11.4% |
| OmniDocBench(v1.5) ReadOrderEdit | 阅读顺序编辑距离(越低越好) | 0.029 | 0.042 (PaddleOCR-VL1.5) | -31.0% |
| UniSVG综合 | ISVGEN得分 | 0.902 | 0.735 (Gemini 3 Pro) | +22.7% |
| ChartMimic | ISVGEN得分 | 0.905 | 0.788 (Gemini 3 Pro) | +14.8% |
| Design2Code | ISVGEN得分 | 0.834 | 0.760 (Gemini 3 Pro) | +9.7% |
| ChemDraw | ISVGEN得分 | 0.901 | 0.839 (Gemini 3 Pro) | +7.4% |
| CharXiv Reasoning | 准确率 | 55.3 | 39.7 (Qwen3-VL-4B) | +39.3% |
| OCRBench | 得分 | 86.0 | 88.1 (Qwen3-VL-4B) | 3B模型中领先 |
局限与改进
尽管dots.mocr取得了令人印象深刻的性能,但论文和实验结果中也暴露了一些局限。首先,在olmOCR-Bench的分类细项中,dots.mocr在Old scans(94.0)、Headers & footers(85.3)、Long tiny text(81.6)和Base(99.7)等类别上并非最优,说明在老旧扫描件的处理、页眉页脚的识别、极小文字的解析等方面仍有提升空间。其次,在GenExam(0.800 vs Gemini 3 Pro 0.756)和SciGen(0.797 vs Gemini 3 Pro 0.783)上,dots.mocr-svg虽然超越了Gemini 3 Pro,但相对于ChartMimic和ChemDraw上的巨大优势而言,提升幅度较小,说明在科学图表和考试题图的解析上仍有改进空间。第三,当前版本的MOCR是任务条件化的(task-conditioned),不能在单次前向传递中同时完成全页文档解析和图形SVG解析——完整的多模态解析需要分别运行页面级文字解析和区域级图像到SVG解码,这增加了推理延迟和系统复杂性。第四,论文承认对于复杂的自然场景图像(缺乏紧凑程序描述的照片等),仍然保留为像素表示,这意味着MOCR的"解析一切"目标实际上是有选择性的。最后,模型约3B参数的规模虽然紧凑,但相比一些更小的专用OCR模型(如PaddleOCR-VL 0.9B),在部署成本上仍有差距。
独立分析的弱点
从独立分析的角度来看,dots.mocr存在几个值得改进的弱点。第一,单次推理的局限性:当前模型无法在一次前向传递中同时完成页面解析和图形SVG解析,需要分别运行。这不仅增加了推理成本,还可能导致两个解析结果之间的不一致性(如边界框的对齐问题)。改进方向可以探索统一解码策略,通过特殊token控制输出类型切换,或使用类似switch transformer的稀疏激活机制。第二,SVG输出的可控性和复杂度问题:不同SVG代码可以渲染出视觉上相同的图像(非唯一性),虽然论文提出了规范化处理,但在实际应用中,生成的SVG代码可能过于冗长或包含不必要的元素。可以引入显式的复杂度惩罚或奖励模型来引导生成更简洁的SVG。第三,对公式和表格的处理仍有提升空间:虽然在Tables上达到了90.7的高分,但OmniDocBench的公式和表格指标被论文有意省略,作者也承认"在公式和表格识别上仍有提升空间"。可以通过更强的高质量监督、针对性数据扩展和任务特定训练来改善。第四,缺乏对动态/交互式内容的支持:当前SVG输出是静态的,无法表达动画或交互行为。未来的扩展可以探索更丰富的程序空间如D3.js或TikZ。第五,评估方法的局限性:OCR Arena依赖LLM裁判,可能存在系统性偏差,且每次评估都需要大量API调用,成本较高。
未来方向
论文作者提出了多个有前景的未来研究方向。首先,扩展目标表示空间:当前的MOCR范式以SVG作为图形的程序表示,但这一范式是表示无关的(representation-agnostic)。未来可以扩展到其他程序空间,如TikZ(科学图表)、D3.js(交互式可视化)、CAD格式(工程图纸)、SMILES(化学结构)或领域特定的电路图标记,从而覆盖更广泛的专业领域。其次,构建大规模图像-代码语料库:MOCR提供了从文档中自动提取图像-代码配对的可扩展管道,每个被解析的图表都能形成忠实的图像-代码-文字三元组。通过解析海量文档,可以构建前所未有的大规模多模态预训练语料库。第三,改进数据质量控制机制:可以通过更紧密的渲染验证循环、奖励模型过滤和自改进数据管理来进一步提升数据质量。第四,实现真正的端到端单次解析:将页面级文字解析和区域级SVG解码统一到单次前向传递中,减少推理延迟并提升解析一致性。第五,探索更多下游应用:利用MOCR生成的结构化表示进行文档理解、信息检索、图表问答等下游任务。第六,改进OCR Arena评估方法,减少对闭源LLM裁判的依赖,探索更高效和可靠的自动化评估方案。
复现评估
从复现的角度来看,dots.mocr具有较好的可复现性。论文明确声明代码和模型已公开发布在GitHub(https://github.com/rednote-hilab/dots.mocr),模型权重可直接下载使用。在数据方面,训练数据引擎的四个来源(PDF文档、网页、SVG图形、通用数据)都有清晰的描述,包括数据收集、清洗(svgo规范化、pHash去重)、采样(领域平衡、复杂度感知)和验证流程。然而,完全复现训练过程存在一定挑战:首先,数据引擎依赖dots.ocr进行自动标注,而dots.ocr本身也是一个需要训练的模型;其次,网页数据的收集需要大规模爬虫基础设施;第三,完整的三阶段预训练加SFT流程需要大量的GPU计算资源(虽然论文未明确报告,但3B模型的多阶段预训练通常需要数百GPU小时)。对于希望在自己项目中应用MOCR的开发者来说,最实际的方式是直接使用预训练模型进行推理或在特定领域数据上进行微调。论文提供的两个检查点(dots.mocr和dots.mocr-svg)分别适用于文档解析和图形重建的不同侧重场景。
论文图表
展示了传统OCR与MOCR范式的根本区别。传统OCR将图形视为像素裁剪,只输出文字,图形往往被丢弃或仅用于简单描述;而MOCR将图形解析为SVG代码,实现可控重建、图像-代码配对理解和统一文档理解。图中还展示了不同数据来源(数字文档、拍照文档、场景图像、GUI截图、图表Logo等)如何被MOCR统一处理。
这张图从范式层面阐明了MOCR的创新定位,帮助读者理解本文不是对现有OCR的渐进改进,而是一种全新的解析思路。