蚂蚁集团OCR模型:如何做到既“笨”又“聪明”?
你有没有想过,一个识别文字的AI模型,到底应该有多"笨",又应该有多"聪明"?说它笨,是因为传统OCR说到底就是把图片里的字变成电脑能读的文本,跟翻译机差不多,输入是像素,输出是字符串,没什么好商量的。说它该聪明,是因为现实世界里的文字从来不是干净利落地躺在那里等你识别。它们印在皱巴巴的收据上,藏在模糊的监控截图里,写
一个识别文字的AI模型,究竟该有多“笨”,又该有多“聪明”?
说它笨,是因为传统OCR归根结底只是把图片里的字转成电脑能读的文本,跟翻译机差不多,输入像素,输出字符串,没什么可商量的。
说它该聪明,是因为现实中的文字从来不会干干净净地待在那里等你识别。它们可能印在揉皱的收据上,可能藏在模糊的监控截图里,可能出现在医生都认不出的病历本上,也可能是一张图表里得先弄懂坐标轴含义才能读出来的“文字”。
2026年9月,蚂蚁集团研究团队发布技术报告,介绍了一套叫PolyOCR的OCR模型家族。报告里有个说法挺扎心:眼下多数OCR系统都是“偏科生”,有的只认字,有的只解析文档结构,能把这些事都干好的模型很少见。PolyOCR想做的,就是让一个模型同时具备这些能力,且各方面都不掉链子。
难在哪,又是怎么解决的,我们一点点聊。
当“全能”成为一个工程问题
先看现状。眼下处理文字图像的AI,大致分两条路走。
一条是专才路线,盯着某个具体任务打磨到极致,比如专做场景文字识别的、专做表格解析的、专做证件信息提取的。这类系统在自己的赛道上跑得飞快,换个任务就歇菜——架构、训练数据、输出格式全是按特定场景定制的,迁移起来很难。
另一条是通才路线,靠通用多模态大模型硬扛,凭海量预训练数据“自然而然”学会一些OCR本事。可这种能力是副产品,不是精心调教出来的,于是常出现这个模型认字准但定位不准、那个模型能解析文档却看不懂图表的尴尬。
这暴露出一个根本矛盾:广度和精度很难两头兼顾。
多模态大模型*:能同时处理图像和文字输入、并生成自然语言输出的AI模型,比如GPT、Qwen系列。
你也许觉得这不就是“鱼和熊掌”的老问题吗?但在OCR领域,这个矛盾被放大了。OCR任务之间的差异实在太大:认字要精确到每个字符,定位要精确到像素坐标,结构化提取要严格遵守输出格式,推理类任务又得理解语义逻辑。拿同一套训练策略硬train一个模型去学这些性质完全不同的能力,很容易某个任务学猛了,把另一个任务的“手感”带偏,这在机器学习里叫灾难性遗忘。
好比一个厨师同时要学做法式甜点和川菜火锅,教学安排不合理的话,练甜点那几周手劈椒的刀法可能都生了。训练节奏不精心设计,结果就是样样通、样样松。
PolyOCR团队的应对思路分成两条线:一条是数据怎么喂,一条是训练策略怎么排。先看数据这条线。
数据从哪来:把六种能力摆上台面
PolyOCR把OCR相关能力拆成六个维度:文字识别、文字定位、文档解析、信息提取、视觉文本理解、OCR推理。
这六个维度听着有点抽象,举个例子就清楚了。同一张身份证图片,任务若是“读出姓名”,这是文字识别;若是“框出姓名所在位置”,这是文字定位;若是“把整张证件转成结构化字段”,这是信息提取;若是“这张证件属于哪种文件类型”,这是视觉文本理解;若是“证件上的出生年份距今多少年”,那就跑到OCR推理的范畴了。
同一张图,六种玩法。这样拆分的好处是,训练数据不再是零散堆积,而是能对照六个维度检查哪里薄弱,再针对性地补。
中英互译并带空间定位的翻译数据、模板化证件信息提取、中文文档与表格解析、场景文字精确定位,这几类内容在公开数据集里缺口明显:要么标注代价过高,要么开放资源稀缺。团队为此自建了一套数据构造引擎,专门产出对应稀缺能力的训练样本。
数据构造引擎*:一套自动化流水线系统,能把原始图片、文档、网页等素材转换成带标注的训练数据,同时内置质量检验机制,过滤掉不合格样本。
这套引擎分三条流水线。
第一条专门处理场景文字和翻译。对于本身已有文字的自然图片,团队用两套不同的识别工具(PP-OCRv6和LocateAnything)分别标注,只有两者结果互相印证才留下,有分歧的交给人工复核。对于没有文字的空白背景图,则用合成技术把文字渲染上去,字体、角度、颜色、模糊程度等变量都可控,生成带精确坐标的合成样本。
这里有个细节值得琢磨:为什么要用两个模型交叉验证,而不是直接信一个模型的输出?
想象你开了家翻译公司,接到一份重要合同,你会只找一个译员翻完就交稿,还是找两个译员分别翻、再对照结果,只有一致的部分才算数,分歧处请资深译员人工核实?只信一个译员,他犯的系统性错误你永远发现不了,错误会原样复制进最终文档。两个独立译员同时犯同样错误的概率低得多,一旦结果一致,可信度就高了不少。PolyOCR用两个模型交叉验证,本质上就是这个逻辑——用“独立性”换“可靠性”。
第二条流水线管的是结构化信息提取、文档解析和表格理解。里面有个设计挺巧,叫模板保留式合成:先让视觉语言模型把一份文档重建成可编辑的HTML/CSS,再由语言模型把具体内容换掉——张三换成李四、金额换个数——字段语义和排版结构都保持原样,最后重新渲染成新图片。这么一来,就能批量造出语义多样、格式又真实的训练样本,而且因为底子来自真实模板,标注天然是对齐的。第三条流水线负责推理类数据的合成。能用规则精确算出答案的任务,比如统计某个字符出现多少次,直接套模板生成,答案绝对准。复杂多步推理任务则交给强模型(
DeepSeek-V4-Pro),让它依据已验证的OCR标注生成候选问题和推理过程,再做一致性校验,把错误样本筛掉。
整套流程走完,最终筛出并沉淀了大约6000万条高质量训练样本。
训练怎么排:三阶段课程表加动态蒸馏
数据备齐了,下一步是怎么喂给模型。
PolyOCR采用两阶段训练框架。头一阶段是监督微调,目的是把六大能力的地基打牢;第二阶段叫竞争力引导的策略优化(CGPO),在已有基础上做精细打磨,让模型各项任务的表现更均衡。
先看第一阶段。团队把训练数据划成四组:文本感知(认字、定位相关)、文档结构理解(解析、提取相关)、OCR理解与推理(分类、翻译、计算相关)、通用多模态对齐(保住模型广泛的图像理解能力)。
训练按三个阶段推进。早期文本感知和文档结构的权重更高,分别占40%和35%,推理类任务只有10%;到了后期,推理类任务的权重升到35%,通用对齐则始终稳定在15%。
这套安排的道理其实挺直白:认字和定位是基本功,先把基本功练扎实,后面学复杂推理才有地基。一上来就逼模型去啃需要多步逻辑的推理任务,它连字都认不准,高阶能力根本立不住。
好比学乐器,老师不会第一堂课就让你弹复杂的协奏曲,得先练音阶、练指法,等手指对琴键有了肌肉记忆,再慢慢加入技巧性更高的曲子。顺序一颠倒,强行先上难度,基本功没打牢,后面的技巧动作全是悬在半空的。
CGPO:教师模型该什么时候出手
第二阶段的CGPO是整篇报告里技术含量最密集的部分,值得多花点篇幅聊。
先交代一下背景。做强化学习微调时,业界常用一种叫GRPO的方法。
GRPO*:全称Group Relative Policy Optimization,一种强化学习策略优化算法,核心思路是让模型针对同一个问题生成多个候选答案,再按这些答案的相对好坏打分,用优劣答案之间的差异当训练信号。
GRPO的问题出在哪?报告里举了个很具体的例子。假设一份财经文档有1000个字符,其中有一个关键金额18650。模型生成8个候选答案,全都把这个数字抄错了,有的写成18850,有的写成18350。错的只是一个字符,整体文本相似度算下来几乎一模一样,都在0.999分左右。结果8个候选答案的相对优劣几乎没差别,GRPO压根提取不出有效的训练信号去纠正这一个关键错字。
这就像一场辩论赛,8个辩手同场比拼,裁判打分时发现大家分数都差不多,那就分不出谁更强,也就不知道该往哪个方向改进。哪怕其中一个辩手其实说漏了关键论点,只要整体表现跟别人差不多,这个漏洞就被平均分淹没了。
那怎么办?业界另一个常用技术叫在策略蒸馏(OPD)。
在策略蒸馏*:让一个更强的教师模型,针对学生模型自己生成的内容逐字逐词地给反馈,告诉学生模型在每一个位置应该生成什么词的概率分布更合理,这种反馈比笼统的整体打分精细得多。
OPD是逐词给反馈的,所以GRPO那种“颗粒度太粗”的毛病它能治——写错的那个数字,能被精确定位出来。可OPD的麻烦也在这儿:它全靠教师模型来判断。万一教师自己就看走眼,比如它也觉着那笔金额该是18850,蒸馏就成了把错答案往学生那儿搬,越学越歪。更别扭的是,学生越练越强,某些样本上判断可能已经比教师准了,这时候还按固定权重一个劲地蒸,反倒会把学生本来改对的答案又带偏。
这里就是CGPO真正要解决的核心矛盾:蒸馏的强度不能是一刀切的固定值,得随着教师和学生的真实水平变化动态调整。
那这套东西具体怎么落地?团队搭了一套竞争力评估机制。做法是让教师模型先对每个训练样本生成若干候选答案,再由专门的打分器评分——不同任务评分方式不一样,文字识别看编辑距离相似度,表格解析看树编辑距离,信息提取看字段级F1分数——据此得出教师在该题上的平均得分,并提前算好缓存起来。训练时,同一个样本交给当前学生模型生成候选答案,算出学生的实时得分。两个分数一减,得到的便是教师相对学生的优势差距。
不过只看优势差距并不够。报告里点明了一件事:教师平均优势为正,不等于它在这道题上的指导就靠谱。一个水平本就一般的教师,碰上更弱的学生,照样可能“赢”,可这种赢未必站得住脚,很可能只是双方都做得不够好。为了不让这种虚假优势带偏训练,团队把教师的“绝对质量”和“相对胜率”两个指标单独做了校准:只有教师质量确实过硬、又确实能稳定压过学生,才给它高权重的蒸馏指导;不然权重直接压到接近零。
这套机制的本质是让蒸馏权重跟着师生之间真实的能力差距走,而不是跟着一个预先写好的时间表走。
为了验证这套思路,团队还专门做了对比实验。他们设了一个对照组,权重随训练步数按余弦曲线单纯递减,完全不看实际能力差距。结果这种“拍脑袋递减”明显不如CGPO的动态路由:在OCRBench v2.1上,英文和中文测试里CGPO分别比固定递减策略高出2.19分和2.06分。
这组对比值得琢磨。它证明“训练越往后、对教师依赖越少”这个大方向没错,可一旦脱离具体样本上教师靠不靠谱、学生学得怎么样这两件事,只拿一张统一时间表去调,效果就要打折扣。方向对,不等于执行方式对,关键还看每一步是不是真踩在该踩的位置上。
论文里用一张图(Figure 5)画出了实际训练中观察到的权重变化曲线:整体趋势确实是从训练初期的高权重一路降到后期接近于零,但曲线并不平滑,带着明显的波动。这说明在不同批次的样本上,教师的可信度一直在变,并非按固定节奏走。
修订一份有瑕疵的考卷:OCRBench v2.1
模型本身讲完,还得说说团队做的另一件事——他们把业界常用的评测基准OCRBench v2重新审视并修订了一遍。
OCRBench v2是一个覆盖多种OCR任务的大规模中英双语评测集,含1万条经人工验证的问答样本,常被用来横向比较不同OCR模型的综合能力。
团队发现,这套评测集里不少标注本身就有问题,还有些任务的打分方式跟任务目标对不上。比如公式识别原先用的是“子字符串匹配”,简单粗暴:只要预测结果里包含参考答案那串字符就算对。这种判法容易误判——视觉上完全等价、但LaTeX写法不同的公式会被判错;语义并不完整、却碰巧含了参考字符串的答案反倒能过。
于是公式识别改成先渲染、再逐词匹配的CDM方法;文档解析从只看结构骨架,改成文本内容、公式、表格一起评;文本翻译则从简单的n-gram重叠率,换成用大模型做语义判断。
这活儿听着枯燥,其实挺要紧。考卷本身的判分标准有问题,选手考得再好,分数也反映不出真实水平。团队修订了1万条样本里的24.5%(2449条),样本总数没增减,任务分布也没动,为的就是让这把“尺子”量得更准。
好比体检报告:化验设备本身带系统性误差,病人身体状况如何,出来的数字都是失真的。先把设备校准,再谈诊断结果才有意义。
真刀真枪的测试结果
方法说了这么多,效果到底如何?
团队把PolyOCR放到五个评测基准上跑分:OCRBench v2.1(即前述修订版)、CC-OCR、OmniDocBench v1.6、MDPBench,以及一个自建的企业内部KIE基准。对比对象覆盖Qwen3.5系列、GPT-5.6-Sol、GLM-4.6V-Flash、InternVL3.5、OvisOCRv2、HunyuanOCR等一众主流模型。
先看综合能力测试OCRBench v2.1。PolyOCR-9B拿到英文80.42分、中文78.37分,13个细分任务分组里5项第一、2项第二。参数规模比它大得多的Qwen3.8-Max是77.75/79.32分,规模相当但更强调通用能力的Qwen3.5-122B-A10B为70.34/78.77分。这意味着,一个9B参数的专项OCR模型,靠训练策略和数据构造上的精细化,综合OCR能力能追平甚至反超参数大得多的通用模型。
再看更贴近真实应用场景的CC-OCR,它含文档解析、信息提取、多场景文字识别三个子项。PolyOCR-9B在文档解析和信息提取两项均列第一,分别为71.71分和94.02分,综合分82.43。这个数字说明,模型不只是“认字准”,还能把认出的字组织成有意义的结构化输出——企业批量处理发票、合同这类实际文档场景,要的正是这种能力。
企业内部KIE基准更贴近落地,测的是模型从身份证、准考证、护照、学信网认证书等真实证件图片里提取字段信息的能力。PolyOCR-9B综合F1拿到93.60%,高于参数规模更大的GPT-5.6-Sol(90.98%)和Qwen3.6-35B-A3B(89.17%)。准考证一项上,PolyOCR-9B的F1达到88.35%,在所有对比模型里最高。
多语言文档解析方面,团队另训了一个更轻量的PolyOCR-2.7B(1.2B参数视觉编码器加1.5B参数文本解码器),专门针对多语言文档场景优化,覆盖21种语言脚本体系。在多语言测试MDPBench上,这个小模型综合得分87.0%,超过参数规模远大于它的GPT-5.6-Sol(86.6%)和Gemini-3-Pro(86.4%);17个语言脚本分组里,PolyOCR-2.7B拿下6项第一、12项排进前二。
这几个数字摆在一起,指向同一个信号:参数规模并非决定OCR能力的唯一变量,数据构造的精细度和训练策略的合理性,有时能补上甚至超过单纯堆参数的优势。
CGPO到底值不值
团队还做了一组消融实验,把CGPO拆开,逐个数每个组件贡献了多少。
从SFT基线(未经过第二阶段精调)出发,单独加GRPO,CC-OCR从79.46提升到81.72;单独加OPD,提升到80.91;两者以固定权重结合,提升到82.18;完整的CGPO(带动态竞争力路由)则到82.43。
单看数字差距不算夸张,可每一步提升都建立在前一步之上,属于边际改进;而CGPO相比固定权重的GRPO+OPD组合,又多出0.25分。后期OCR模型的竞争已经进入“分毫必争”的阶段,这种边际提升,往往就是能否排进第一梯队的关键。
更能说明问题的,是OCRBench v2.1上的那组对比数据。SFT基线为72.08/74.71,加上完整CGPO后升到80.42/78.37,涨幅超过8个百分点。反观加了固定权重GRPO+OPD、却没有动态路由的版本,只到75.42/77.08。两者相差接近5个百分点,这个差距基本可以归到“知道什么时候该信教师、什么时候不该信”这件事本身的价值上。
写在后面
通读整篇报告,让我最意外的倒不是模型分数有多高,而是CGPO举的那个具体例子:财经文档里一个数字写错了,8个候选答案全错,可传统的打分方式竟然完全分辨不出差别。
这个例子点出了一个常被忽略的盲点:我们习惯拿一个综合分数判断AI模型好坏,但综合分数天生有“抹平细节”的毛病。一份1000字的文档,错一个关键数字,整体相似度照样接近满分,可就是这一个字,可能让整份文档在实际使用中彻底失去可信度。
这让我想起审计行业里一句老话:一份财务报表,99.9%的数字都对,可错的那0.1%偏偏是总负债金额,这份报表照样是废纸。精度和重要性从来不是线性对应的,有些错误占比极小,后果却极大。CGPO想解决的,某种意义上就是让模型的训练信号对这类“小错误大后果”更敏感一些。
另一个耐人寻味的细节,是团队重新校订OCRBench v2的那部分工作。乍看这是不起眼的“打杂”活,改标注、调指标,听着不像什么创新。可实际上,AI研究圈子里大量论文的分数比较,都建立在一套本身就有瑕疵的评测标准上,大家比来比去,比的是谁更擅长在一把有偏差的尺子上拿高分,而不是谁真把问题解决了。PolyOCR团队肯花精力把这把尺子本身修一修,这事比发一个新模型架构可能更不讨喜,但长远看价值未必小。
还有个没细说、却值得多想一步的问题:报告里那六大能力维度划分(识别、定位、解析、提取、理解、推理),本质上是“工程上好用”的分类法,未必是认知科学意义上人类阅读文字时真实发生的能力结构。人读一张发票,认字和理解字段含义几乎同时发生,根本不是先认字再理解。那AI模型是不是也该朝这种“浑然一体”的方向走,而不是继续用六个独立维度分别优化?这个问题报告没回答,但值得继续追问下去。
Q&A
Q1:PolyOCR是什么?
A:PolyOCR是蚂蚁集团GuangJian团队推出的一套统一OCR基础模型家族,包含2B、9B、2.7B等不同参数规模的版本,能同时完成文字识别、定位、文档解析、信息提取、视觉文本理解和OCR推理六大类任务。
Q2:CGPO解决了什么问题?
A:传统强化学习训练OCR模型时,蒸馏权重是固定不变的,CGPO针对的正是这一点:它依据教师模型的真实可靠程度,以及与学生模型当前能力的实时差距,动态决定要不要依赖教师指导,从而避免学生学到教师的错误判断,也不会错失自己已经学对的内容。
Q3:PolyOCR和其他OCR模型比表现怎样?
A:在OCRBench v2.1、CC-OCR、企业内部KIE基准等多个测试中,PolyOCR-9B综合表现超过了参数规模更大的GPT-5.6-Sol、Qwen3.8-Max等模型,专为多语言设计的轻量版PolyOCR-2.7B在MDPBench多语言文档解析测试中也拿到最高综合分。