OCR 认错字别急着重跑:OCR-EDR 教模型「看图改错」

先问一个可能戳到你的问题:你上一次被 OCR 坑,是什么时候?

做 RAG 的朋友大概都有类似的经历------文档解析器把论文里的积分公式抄成一串乱码,检索命中的片段里全是 \fra 和半截括号;或者扫描件里的表格被拍平成一行字,列和列粘在一起。你盯着解析结果,明知道「这里错了」,但你什么都做不了:换一个模型重跑?下一个模型八成错在别的地方。

腾讯微信视觉团队刚挂在 arXiv 上的这篇《OCR-EDR: Rendering-Aware Diagnosis and Repair for Closed-Loop OCR Improvement》,干的就是这件事:别急着重跑,先诊断错在哪,然后改,改完还要看一眼渲染图确认改对了。 一整套流程全部自动化,而且效果相当能打------诊断准确率 94.78%,公式识别 Case-F1 零样本暴涨 31 个百分点。

TL;DR

  • 新任务范式:OCR-EDR 把「源图像 + 可编辑的 OCR 文本 + 渲染图」三方联检做成闭环任务------判定对错(含渲染等价的正确写法)、定位错误、执行修复、按需重渲染复检、决定停止。
  • 新基准 :OCRErrBench,900 例全部来自 DeepSeek-OCR、PaddleOCR-VL、Qwen3.5 等系统的真实预测,三模型交叉标注 + 专家复核。
  • 新模型 :基于 Qwen3.5-9B 训练的 DocEDR,诊断准确率 94.78% (超过 397B 大杯模型 7 个点),把 86.23% 的错误输入修复到视觉一致,零样本把 DOCRcaseBench 公式 Case-F1 从 56.69 拉到 87.68

想看原文?

🎯 这篇论文到底想解决什么问题?

现在的 OCR 评测,基本停留在「出一期成绩单」的阶段:CDM 多少、编辑距离多少、端到端准确率多少。数字很好看,但对你手里的那条错误输出毫无帮助------它不会告诉你错在哪、为什么错、能不能改。

更要命的是两个隐藏的坑。

第一个坑:字符串判据会冤枉好人。 数学式子从来不是只有一种写法:\to\rightarrow 是两个不同的字符串,渲染出来一模一样;{\bf x}\textbf{x} 也是如此。如果你用字符串比对来判对错,这些「写法不同、长得一样」的正确输出会被全部判死刑。论文里有个很扎心的数字:编辑距离判据会误杀 57.14% 的渲染等价文本------超过一半的「冤案率」。

第二个坑:诊断了也修不了。 前作 DOCR-Inspector 已经能做到细粒度诊断(28 种错误类型 + 位置),但它是「一次性判官」:给出诊断报告就走人,不会动手改,更不会改完再看一眼效果。另一条线 LATTE 引入了渲染反馈做迭代修复,但只处理已识别的公式错误,格式也是专用的。

为什么会这样?因为**「判对错」「动手改」「改完验证」这三件事,从来没人放进同一个框架里训练过。** OCR-EDR 就是冲着这个来的:把它们闭合成一个环。

🛠️ 它的思路是什么?

核心思路一句话:把 OCR 输出当成一个「可编辑的草稿」,而不是「一次性的终审判决」。

具体来说,每一轮决策时,模型能看到三样东西:源文档区域图像 II I(外部视觉证据)、当前 OCR 文本 pp p(支持精确定位和编辑)、以及这份文本的渲染图 R(p)\mathcal{R}(p) R(p)(让「写法」变成「看得见的样子」)。三方对质,谁在说谎一清二楚。

图说:左边是文档原图,中间是 OCR 预测,右边是它的渲染。预测渲染后和原图长得一样------哪怕字符串写法非主流------也算对;长得不一样才是真错误,需要诊断和修复。

那具体怎么「改」?DocEDR 被训练成一个带工具的 agent,每轮从 7 个动作里挑一个:

  • 🔍 诊断三件套(inspect / diagnose_scope / localize):判定有效性、圈定错误范围、定位到字符或 token,只收集证据不动手;
  • ✏️ 修复两板斧(patch / global_patch):局部插入/删除/替换,或者整体重写------改完之后旧渲染图自动作废;
  • 🖼️ 请求渲染 (request_render):把当前文本重新渲染出来看效果,要不要看由模型自己决定,不是每次改完都必须看;
  • 🛑 停止(stop):确认视觉一致,收工。

整个循环就是「编辑 → 按需渲染 → 视觉复检 → 继续或停止」。注意「渲染可选」这个细节很妙:渲染是有真实成本的,让策略自己判断「这次改动需不需要视觉确认」,后面 RL 阶段会把这个决策也优化掉。

错误分类也值得一提,一共五类、互不重叠:全局两类(输出无效 / 整体张冠李戴),局部三类(完整性 ------漏内容或多内容、内容 ------字符符号认错、结构------阅读顺序、上下标、分式层级错乱)。一个样本可以同时有多处原子错误,但每处只归一类,这样错误类型和修复操作才能一一对应。

图说:左边是诊断-修复循环的整体流程,右边是 DocEDR 在 OCRErrBench 上的诊断表现------定位 F1(文本 92.72 / 公式 73.26)远超通用 VLM 直接提示。

怎么训练出来的? 三步走,一步比一步复杂:

  1. Verifier SFT:先教会模型「看图判对错」------输入三元组,输出有效性判定 + 原子错误清单(类型、位置、建议改法)。这份能力复制两份:一份冻结当「裁判」给后面 RL 打分用,一份当修复策略的起点。
  2. 课程修复 SFT(三阶段):Stage 1 学单轮直接修;Stage 2 学「要不要请求渲染」这个决策,避免把每次修复都绑成强制工具调用;Stage 3 加入真实渲染反馈,学多轮修复和「改坏了怎么恢复」。消融显示 Stage 3 贡献最大跳变(ExactFix +15.8 点)------「看着渲染结果修残余错误」这个能力是渐进学出来的,跳不过去。
  3. GRPO 强化学习:每道题采 8 条轨迹组内对比,奖励按初始标签分两支------本来对的样本,奖励「别乱动」,多改一次罚一次;本来错的样本,奖励「改到视觉一致 + 过程有进展」,同时罚重复编辑、罚没有视觉证据瞎改、罚多余渲染调用。结果:质量再涨的同时,平均轮次少了 10.8%,渲染调用少了 24%。

最后是基准本身。OCRErrBench 的 900 例全部来自真实 OCR 系统的翻车现场(DeepSeek-OCR、PaddleOCR-VL-1.5、Qwen3.5-27B 在两个文档基准上的输出),不是人工合成扰动。标注用 GPT-5.6、Claude Opus 4.8、Gemini 3.1 Pro 三家模型独立判,三家意见完全一致才自动通过,疑难杂症交给三位人类专家仲裁,渲染等价的正例还额外全量人工审计。训练集与测试集做了源文档级隔离。

图说:从真实 OCR 预测出发,渲染比对区分「精确正确 / 渲染等价正确 / 真实错误」三类,再三模型交叉标注 + 专家复核。

📈 效果到底怎么样?

挑三个最值得记住的数字。

诊断:94.78%,9B 干翻 397B。 OCRErrBench 上 DocEDR 诊断准确率 94.78%、Bad-F1 94.59%,比同底座的 Qwen3.5-9B 直接提示高 13 个点,比 397B-A17B 的大杯模型还高 7 个点(p 值 2.95×10⁻⁹)。差距主要来自训练出来的细粒度能力:直接问通用大模型「这条 OCR 有没有错」,它连错误类型都分不清,更别说定位到字符了。

修复:86.23% 改到视觉一致,还知道啥时候住手。 443 个错误输入里,82.17% 修复到规范化字符串完全一致,86.23% 达到像素级渲染一致;而 457 个本来就正确的输入,93.44% 被原样保留、没有乱改。这组数字真正难的不是「会修」,是**「不该修的时候忍住」**------后者恰恰是双支奖励设计买来的。

最妙的一个消融:只迭代、不看渲染,反而更差。 把更新渲染从循环里拿掉、只留多轮迭代,ExactFix 从 82.17% 跌到 66.82% ------比单步直接修还低 5.64 个点。换句话说,让模型盲改十轮,不如让它看一眼再改一轮。 这个结果把「闭环的价值来自视觉验证」这件事钉得死死的,也是全文我最喜欢的一张牌。

图说:修掉第一处错误后,模型请求看更新后的渲染图,发现还有残余错误,再修一处,确认视觉一致后才停止。

跨基准的表现同样能说明问题:零样本迁移到 DOCRcaseBench,公式 Case-F1 从原生 DOCR-Inspector-7B 的 56.69% 拉到 87.68% 。更有实用价值的是外部增益实验------拿 MinerU2.5、PaddleOCR-VL 等 4 个 OCR 系统在 UniMER-Test 上跑出的 12,683 条公式预测,DocEDR 只动自己判定为错的子集,结果每个系统的 Bad 子集都被修复抬升了 2.24~4.62 个 CDM 点,而正确分区纹丝不动。这意味着它真的可以作为现有 OCR 流水线的「外挂质检员」,零侵入接入。

💡 为什么你要关心?

就算你不做 OCR 研究本身,这篇论文也有三处值得抄的作业。

  • 后处理闭环是一条被低估的路线。 模型能力的提升有上限、有成本,而「错误输出里躺着的信息」几乎免费------同一份文档,与其换模型重跑,不如让一个小的修复模型专啃 hard case。对已有 pipeline 这是零侵入的外挂,对自己的业务数据尤其划算。
  • 评测口径该升级了。 「渲染等价算不算对」这个问题,所有做文档解析评测的人都绕不开。下次你看到 OCR 得分时,值得多问一句:这个指标的字符串判据,冤枉了多少等价写法?57% 的误杀率说明,很多「模型不行」的结论可能压根是量尺错了。
  • agent 化训练配方是通用的。 「三态观测(图像 / 过期 / 失败)+ 显式工具调用决策 + 双支奖励(保留 vs 修复)」这套设计,可以平移到任何「文本假设 + 视觉验证」的任务------LaTeX 排版校对、SVG 代码修复、图表生成质检,都是一个模子的活儿。

再往远看一步:这篇论文其实暗示了一个趋势------多模态模型的「自我验证」正在从文本空间走进视觉空间。 以前模型检查自己的答案是重新读一遍推理链,现在它可以把自己的输出渲染出来「亲眼看看」。这个动作一旦成为习惯,能做的事就多了。

🤔 理性看待

冷静说几句。整个系统建立在一个前提上:存在一个廉价、可靠的渲染器当裁判------等价判定、修复验证、RL 奖励全都依赖同一个 KaTeX/Chromium 环境,渲染器自己的盲区论文没有讨论;渲染等价正例仍有 25.81% 被误报(比字符串判据的 57% 好很多,但离解决尚远);全局性错误只能整体重写,修复质量着墨很少。另外截至写作,代码、模型权重和基准都还没有公开链接,而基准构建重度依赖三家顶级商业模型的标注一致性,第三方复现门槛不低。这些不影响结论方向,但落地前值得留个心眼。

相关推荐
上海锝秉工控1 小时前
告别单点检测误判:多点式激光传感器如何重构工业质检精度
人工智能·重构
数字供应链安全产品选型1 小时前
深度长文|AI 重构软件供应链:从传统开源风险到智能体时代的数字安全治理
人工智能·重构·开源
米小虾2 小时前
AI 开始改进 AI:OpenAI 公布自我改进时间表,同一天自家首席科学家喊停
人工智能·openai
故七月2 小时前
告别 AI 时代品牌 “隐身”:万域智瞰 AI‑GEO,构建品牌大模型时代营销新基建
大数据·人工智能
lifallen2 小时前
短暂 Agent 与持久化工程:让理解脱离对话
人工智能·学习·ai·重构·ai编程
知识分享小能手2 小时前
深度学习学习教程,从入门到精通,深度模型中的优化 — 完整知识点与代码案例(8)
人工智能·深度学习·学习
javaDocker2 小时前
金融级 AIOps 架构跃迁(从“1-5-10“快恢目标到 AI Agent 告警收敛的完整技术实践)
人工智能·金融·架构
多看书少吃饭2 小时前
GPT‑6 Astra 与 AGI 时代:当 AI 开始承担完整的工作
人工智能·gpt·agi
浩风祭月2 小时前
GPT-6 Astra API怎么接?Responses API迁移、异步工具调用与兼容项清单
人工智能·chatgpt·大模型·openai api·gpt-6 astra