编译器在环:腾讯 DocEDR 如何通过渲染检查与修复 OCR
参考论文: OCR-EDR: Rendering-Aware Diagnosis and Repair for Closed-Loop OCR Improvement — Linnan Zhao, Kang Liu, Hao Yu, Jiabo Zhan, Chong Sun, Chen Li
OCR 模型在处理印刷体方程组时,可能会出现这样的偏差:在论文展示的一个示例中,原本应为 $\nabla^2$ 的项,在模型的 LaTeX 输出中却变成了带下标的运算符 \vec{\nabla}_{2}。原本的指数被“压平”成了下标索引。尽管该字符串仍能被识别为数学标记代码,但其渲染后的结构已不再与原文相符。
再来看另一个表达式:$T \ge 0$。模型将其转录为 T \geq 0,而参考标注中使用的是 T \ge 0。字面字符串比对会判定两者存在差异,然而这两个表达式渲染出来的视觉结果完全一致。若将这种差异视为识别错误,无异于惩罚了一个根本不存在的过失。
这种两难困境揭示了文档解析领域长期存在的一个核心痛点:一方面,OCR 预测可能会遗漏内容、误识符号或引入无依据的错误结构;另一方面,基于字符串的比对评估又仅仅因为标记语言中使用了别名或等价表达,就对完全正确的输出施加惩罚。
来自腾讯微信视觉(WeChat Vision)的研究团队提出了一种兼顾解决这两个问题的新方法。在他们于 2026 年 9 月 3 日发表的论文 OCR-EDR: Rendering-Aware Diagnosis and Repair for Closed-Loop OCR Improvement 中,作者定义了一套“诊断-修复”(diagnosis-and-repair)框架,并推出了基于 Qwen3.5-9B 构建的 DocEDR 模型。输入原始裁剪图像、可编辑的 OCR 预测文本及其渲染图后,DocEDR 会评估它们的一致性,在必要时执行修正,并能主动请求重新渲染以检验修复结果。
论文汇报的实验结果十分亮眼。在团队新构建的基准测试集 OCRErrBench 上,DocEDR 取得了 94.78% 的诊断准确率,超越了参数量大得多的 Qwen3.5-397B-A17B(FP8)。在 DOCRcaseBench 的零样本(zero-shot)公式诊断测试中,其 Case-F1 比 DOCR-Inspector-7B 高出 30.99 个百分点。此外,它还能将 OCRErrBench 中 86.23% 的错误输入修复至与参考标注在视觉上完全一致。该工作的核心贡献在于建立了一个闭环,将错误检测、可执行编辑与基于渲染的二次重评有机串联起来。

字符串陷阱:为何标准 OCR 评测会惩罚优质代码
要理解该团队研发 DocEDR 的初衷,首先需要审视传统的基于字符串的 OCR 指标究竟在衡量什么。编辑距离计算的是预测文本与参考文本之间的字符差异,但它本身并不能判断两个不同的字符串是否呈现了完全相同的可见内容与排版结构。
这种差异在数学公式标记中尤为关键。论文列举了如下示例:
\to与\rightarrow{\bf x}与\textbf{x}T \ge 0与T \geq 0
这些对照组使用不同的源码实现了完全相同的渲染效果。论文还展示了涉及希腊字母表示、定界符尺寸控制以及良性排版差异等合理示例。当然,这类变体必须结合上下文进行检验:例如,不同的定界符命令在所有场景下并非都能通用互换。
作者将这类有效且非完全一致的表示形式称为“渲染等价正例”(rendering-equivalent positives)。在表 3 所汇报的边界诊断子集中,若采用 0.1 的归一化编辑距离阈值,会有 57.14% 的渲染等价文本预测被错误拒识。DOCR-Inspector-7B 在该表中评估的等价正例中拒识了 75.81%。该模型保持了其官方的单图输入方案;不过这一对比并不能证明它仅仅是在检查纯字符串。
相反的问题同样存在:源码层面的微小改动可能会彻底颠覆关键的视觉结构关系。将 \nabla^2 改为 \nabla_2 仅需替换一个字符,却直接将符号从上标变成了下标。因此,极低的整体编辑距离完全可能与严重的真实结构性错误并存。
论文对这一边界的两端均进行了测试。基于参考标准的公式评估指标(CDM 低于 0.9)在选定子集中仅误拒了 2.94% 的等价公式,但在其适用范围内却漏检了所有被评估的局部错误。文本编辑距离指标同样漏掉了其范围内的局部错误。需要说明的是,这些是特定测试用例和阈值下的表现,并不能证明这些指标在所有场景下均完全失效。
纯文本后处理纠错也存在类似的局限性。它虽然可以利用语言学规律来润色 OCR 序列,却无法直接检查修改后的输出是否真正还原了原始图像中的可见内容。而 OCR-EDR 则将视觉反馈直接引入到了纠错过程中。
核心架构:将文档纠错重塑为状态机
DocEDR 将 OCR 纠错重塑为一个智能体状态机(agentic state machine)。模型不再将初始预测视为静态不变的输出,而是维护一个可编辑的候选序列,并协同评估三项输入:
- 原始图像($I$): 来自源文档的局部视觉切片,提供外部真实依据。
- 当前 OCR 预测($p$): 可编辑的符号字符串,例如公式标记代码或文本。
- 渲染图像($R(p)$): 对当前预测结果进行渲染生成的视觉图像。
该模型同时融合了符号信息与视觉信息。OCR 文本序列支持精准的错误定位与修改,而渲染图则直观展现了该序列对应的视觉呈现结果。如果某种替代命令能够完整保留原文的内容与结构,系统的预期行为是直接接受该预测并终止流程。
当预测与源图像不一致时,模型能够进行诊断并执行修复。作者定义了五类互斥的原子错误类型:
- 无效输出(全局 / Invalid Output): 在目标表示下为空、格式畸形、无法解析或无法渲染的输出。
- 全局不匹配(全局 / Global Mismatch): 预测与源图整体不一致,例如识别出了错误区域的内容。
- 完整性错误(局部 / Completeness): 漏字、遗漏公式项或包含冗余内容。
- 内容错误(局部 / Content): 个别字符或符号识别错误,例如将拉丁字母 $k$ 误判为希腊字母 $\kappa$。
- 结构错误(局部 / Structure): 阅读顺序、分组、层级或空间与标记关系错误,包括被压平的上标和断裂的分式。
每个原子错误归入一个类别,不过单个预测文本中可包含多个错误。当局部编辑不再适用时,全局性失败会调用 global_rewrite 操作;而局部修复则采用 insert、delete 或 replace。
至关重要的一点是,DocEDR 并不会在每次编辑后都盲目地重新渲染。其策略层面的动作空间包含 inspect、diagnose_scope、localize、patch、global_patch、request_render 和 stop。这些动作负责统筹与控制流程,与直接作用于 OCR 文本序列的文本操作有着明确的区别。
在完成一次编辑后,先前的渲染结果会被标记为过期(stale)。模型可以选择无需再次视觉复查直接终止流程,也可以调用 request_render 来检查更新后的候选结果。渲染失败则拥有独立的显式状态,与过期状态区分开来。因此,该框架能够精确记录视觉反馈是最新、已过期,还是因渲染失败而不可用。
揭秘 DocEDR:如何训练一个 9B 参数模型击败更大体量的基线模型
DocEDR 以 Qwen3.5-9B 为基础模型进行初始化。作者通过诊断监督微调(SFT)、三阶段递进式修复课程学习以及强化学习对其进行训练。这些阶段逐步将有效性评估与编辑操作以及修复闭环的控制策略连接起来。
第一阶段:验证器监督微调(Verifier SFT)
模型首先学习视觉一致性验证。在给定原始图像、OCR 文本及渲染图像的条件下,模型经过一个 epoch 的训练,学会预测有效性以及结构化的错误信息。对于错误的预测,这些信息包括错误类别、位置和建议的修改方案。
随后,该诊断检查点分化为两条路径:一份被冻结参数,作为强化学习的奖励验证器(Verifier);另一份则继续参与后续训练,充当交互式修复策略模型。这种设计在修复模型学习新行为的同时,保证了诊断评估信号的稳定性。
第二阶段:课程修复监督微调(Curriculum Repair SFT)
接下来,该智能体依次经历三个阶段的监督微调:
- 阶段 1(单轮修复): 模型学习在修复过程中不依赖渲染的直接纠错。
- 阶段 2(工具选择): 模型学会权衡是主动请求重新渲染还是直接终止,而不是盲目地将每一次修改都伴随一次工具调用。
- 阶段 3(多轮视觉恢复): 模型接收编辑后的真实渲染反馈,学会识别残留错误、从无效修改中恢复并在必要时继续执行修复。
阶段 1 训练一个 epoch;阶段 2 和阶段 3 各训练两个 epoch。在源文档层面上,评测基准数据与这些训练阶段保持了严格隔离。
第三阶段:基于 GRPO 的强化学习
最终的策略模型采用群体相对策略优化(GRPO)算法进行调优,总共经历 400 次更新迭代。对于每个 prompt,训练过程采样一组共 8 条轨迹,并使用基于标签条件的奖励函数进行打分。
奖励机制严格区分了有效输入与错误输入:
- 针对有效输入($y_0 = \text{good}$): 模型保留归一化后的初始预测即可获得奖励;非必要的修改、冗余的轮次以及多余的渲染调用都会受到惩罚。
- 针对错误输入($y_0 = \text{bad}$): 最终质量得分综合了归一化编辑相似度、与参考文本的精确匹配度、冻结 Verifier 的视觉一致性判定以及输出格式规范性。过程项则对错误恢复给予奖励,对候选状态之间的退步给予惩罚。
该优化机制还遏制了重复编辑、过度渲染,以及在最终结果仍然错误的情况下耗尽交互预算等不良行为。等价正例始终归入保留分支,因此训练过程不需要强制将它们重写为某种特定的规范化转录格式。
这一阶段带来了显著的效率红利。从阶段 3 SFT 到最终的 GRPO,所有用例的平均轨迹长度从 2.594 轮下降到 2.313 轮,降幅达 10.8%;错误用例上的平均渲染调用次数从 2.104 次骤降至 1.598 次,降幅达 24.0%。与此同时,修复得分与保留得分均得到了同步提升。
真实标注面临考验:OCRErrBench 的构建
为了评估该框架,研究人员围绕“保留、诊断、定位与修复”四大维度构建了 OCRErrBench 基准。该基准纳入了合法的替代表示形式,直接对传统严格源码匹配所模糊的边界进行了考察。
该基准包含 900 个真实的 OCR 预测样本,采集自 DeepSeek-OCR、PaddleOCR-VL-1.5 和 Qwen3.5-27B 在 OmniDocBench 与 PureDocBench 上的运行结果。样本在文本切片与数学公式切片之间平均分配,各占 450 例。
数据集中包含 457 个有效输入和 443 个错误输入。在有效样本中,141 例在归一化后与参考文本完全一致,而 316 例属于渲染等价正例。作者在诊断 SFT、修复 SFT 以及 GRPO 训练中均排除了源自这两个原始基准的材料。
标注流程采用了多模型独立审查与专家兜底相结合的机制。GPT-5.6 Sol、Claude Opus 4.8 和 Gemini 3.1 Pro 独立评估源图像切片、预测文本及渲染反馈。只有当模型对标注结果完全一致且在经渲染验证的修正方案上达成收敛时,才会被自动采纳。这是一致性要求,而非零错误标签的绝对保证。
疑难或存在分歧的样本会被提交给三位独立的领域专家。全票一致的标注直接被采纳;对于仍有争议的个案,仅在调和后的修复方案既符合所分配的错误类型又成功还原参考基准时才予以保留。
所有渲染等价正例均经过了额外的人工复审。等价性验证运行在一个冻结的本地 Playwright/Chromium 环境中,配备 KaTeX 0.16.11、Markdown 解析器、固定显示设置以及包含 Fandol 字体在内的固定字体库。渲染失败绝不会被视作等价的证据。

成绩单:在四款主流外部 OCR 引擎上的真实收益
在 OCRErrBench 的 900 个用例的端到端诊断测试中,DocEDR 取得了 94.78% 的准确率、94.75% 的平衡准确率以及 94.59% 的 Bad-F1。基座模型 Qwen3.5-9B 的准确率为 81.44%,而 DOCR-Inspector-7B 达到 78.78%。参数量巨大的 Qwen3.5-397B-A17B(FP8) 达到 87.78%,仍比 DocEDR 低了 7 个百分点。
在错误定位方面,DocEDR 在文本跨度(span)上的事件级 micro-F1 达到 92.72%,在公式 token 跨度上达到 73.26%。这些指标基于一对一错误匹配,并允许 3 个归一化字符或 token 的边界容差。在该基准测试协议下,GLM-4.6V-Flash 和 InternVL3.5-8B 在公式定位上的得分分别仅为 0.61% 和 1.23%。
修复与保留性能进行了独立评估:
- 视觉修复率(Visual Fix, VisFix): 在 443 个错误输入中,DocEDR 达到了 86.23%。该指标要求在相同的冻结编译器环境下,修复后渲染图与目标渲染图达到像素级完全一致。
- 精确字符串修复率(Exact String Fix): 在这同一批错误输入中,它取得了 82.17% 的归一化目标一致率。
- 保留率(Preservation Rate): 在 457 个有效输入中,它的保留率达到了 93.44%。
直接单步推理的 Qwen3.5-397B 的 VisFix 为 72.23%,ExactFix 为 26.19%。由 DOCR-Inspector-7B 引导 Qwen3.5-9B 进行单次修正的方案则达到了 65.46% 的 VisFix。这些基线方案均未引入在线重新渲染。此外,规模更大的直接推理模型在保留得分上略高于 DocEDR(94.75% 对 93.44%)。
零样本诊断在 637 个兼容的 DOCRcaseBench 用例上进行了测试(包含 445 个文本用例和 192 个公式用例)。公式 Case-F1 从 DOCR-Inspector-7B 的 56.69% 大幅跃升至 DocEDR 的 87.68%,净增 30.99 个百分点。论文还单独报告了 61 例额外的正确公式分类。需要指出的是,这些是诊断层面的结果,而非公式修复率。
最后,作者在 UniMER-Test 的简单与复杂印刷公式子集上,对每个解析器生成的 12,683 个公式进行了精细化重修测试。DocEDR 保留其判定为正确的预测,并对判定为错误的预测执行修复。论文汇报的增益针对的是由模型判定的各个固定“Bad”子集:
- MinerU2.5: 将 32.50% 判定为 Bad;使该子集的字符检测匹配度(CDM)提升了 2.93 个百分点。
- PaddleOCR-VL-1.5: 将 22.19% 判定为 Bad;使该子集的 CDM 提升了 2.24 个百分点。
- InternVL3.5-8B: 将 25.92% 判定为 Bad;使该子集的 CDM 提升了 3.72 个百分点。
- GLM-4.6V-Flash: 将 37.18% 判定为 Bad;使该子集的 CDM 提升了 4.62 个百分点。
在修复前,各解析器的整体 CDM 得分分布在 65.59% 至 94.12% 之间。所有被标记为 Bad 的子集均取得了改善。然而,DocEDR 判定为 Good 并不等同于达到参考级正确:InternVL3.5-8B 和 GLM-4.6V-Flash 被判定为 Good 的子集,其修复前的 CDM 得分也分别仅有 66.97% 和 78.65%。
为何这对文档工程与大模型流水线至关重要
对文档工程而言,本篇论文最具现实意义的启示在于:在特定的评测任务上,针对诊断与修复进行专门训练的小模型,其表现完全可以超越直接 prompt 规模庞大得多的基础模型。这为在流水线中设立独立的后处理纠错模块提供了有力依据。但这并不意味着单次前向传递的 OCR 已经触及了扩展极限,也不能说明每个文档处理管线都必须引入执行循环。
其次,源图像在识别完成后依然具备不可替代的价值。OCR-EDR 在整个纠错过程中将源图与可编辑文本及渲染图共同作为依据,使策略能够切实检验所作修改是否还原了真实的视觉内容与排版结构。同时,鉴于汉字作为表意文字拥有数以千计的字符与高密度排版特性,若当前研究范畴主要集中于英文与拉丁符号,其在汉字形近字诊断与复杂中文版面上的适用性仍有待进一步拓展检验。此外,论文并未评测检索、RAG、数学问答等下游应用,因此在这些实际业务系统中的收益仍未经测试。
第三,将“表示形式差异”与“识别错误”区分开来对评测体系大有裨益。OCRErrBench 除了真实错误外,明确纳入了精确正例与渲染等价正例。实验结果表明,基准测试既要考核纠错能力,也必须检验保持能力:一个能够修复大量错误预测的模型,仍有可能对完全合法的输出进行不必要的擅改。
消融实验进一步印证了这一结论。在受控对比实验中,仅增加迭代轮次而不提供更新的渲染反馈,相比于无反馈的单步设置,其 ExactFix 反而从 72.46% 下滑至 66.82%。而将多轮迭代与即时渲染反馈结合后,ExactFix 攀升至 82.17%,VisFix 达到 86.23%。这表明单纯增加交互轮次并不能带来增益,模型真正需要的是关于其编辑效果的有效视觉依据。
最后,针对外部解析器的实验展示了一种极具落地价值的集成范式:接收现有的 OCR 预测结果,对其进行诊断,进而决定予以保留还是修复,并评估最终成效。在实际工程部署中,将选定的文档区域路由至此类纠错模块是一种可行的拓展方案。不过论文并未对基于置信度的路由机制进行测试,亦未测算其上线运行成本。
工程权衡与未解难点
尽管研究结果令人信服,但论文所报告的实验仍留下了若干实际部署层面的疑问。
其一是延迟。在 OCRErrBench 的所有测试用例中,DocEDR 的平均交互轮数为 2.313 轮,在错误输入上的平均渲染调用为 1.598 次。这些指标反映的是交互效率,而非实际耗时。论文并未汇报绝对物理时间延迟(wall-clock latency)、吞吐量或部署成本,因此尚无法定论该系统是否适用于交互式实时扫描或大规模离线批处理。
其二是渲染环境的依赖。基准测试中的等价性检查与视觉修复标准依赖于固定的编译器和字体配置。这保证了在选定环境下对比实验的可复现性,但并不意味着它能够覆盖任意标记语法、多变字体或复杂文档格式。虽然该框架能够显式表示渲染失败,但论文尚未针对不受支持的合法语法结构给出通用的解决方案。
此外,在各自的评测指标下,公式定位的表现依然弱于文本定位(F1 分别为 73.26% 与 92.72%)。输入消融实验提供了一个有价值的注脚:仅输入源图像加 OCR 文本所取得的定位得分反而高于完整三元组,而引入渲染图则能带来最优秀的有效性判断与错误类型诊断。可见,渲染确实大有裨益,但并不能全方位提升所有维度的指标。
对等价正例的评测结果需要客观看待。表 3 在边界诊断分析中汇报了 DocEDR 存在 25.81% 的假阳性率,而 DOCR-Inspector-7B 为 75.81%;但在表 E1 中,完整输入模型在等价正例上的假阳性率又被单独汇报为 4.75%。论文并未对这两组数据做出明确的调和解释,因此 25.81% 不应被视作合法代码变体的普遍假阳性率。同时,诊断上的假阳性本身也并不等同于模型必然触发了实质性修改。
对正确结果的保留机制仍不完美,正如有效输入上 93.44% 的保留率所体现的那样。此外,并非每次修改都会经过新的视觉复检:是否请求重新渲染属于策略决策,模型完全可能在编辑完成后直接选择终止。因此,修复得分仅代表基准评测流程下的性能表现,并非针对所有实际输出的绝对保证。
尽管存在上述局限,OCR-EDR 依然带来了实质性的突破。它在单一策略模型中融合了基于源图的诊断、可执行的编辑修正以及可选的视觉二次重评,并同时兼顾了对错误预测的成功修复与对有效预测的精准保留。