1. 为什么"手写批注识别"是检验多模态大模型的试金石
拿到 OpenAI 正式发布 GPT-6 Astra 的消息时,我第一反应不是去看演示视频里的花哨能力,而是把硬盘里攒了快一年的那套手写批注测试集翻了出来。这套测试集是我在校对流程自动化项目里一点点攒下的真实稿件——合同、论文、宣传册、课程讲义都有,每一页都被真人用红笔、蓝笔或铅笔改得密密麻麻。我等一个真正能把"看懂批注"做好的多模态模型,已经等很久了。
Fable 5.1 是同期另一家实验室放出的旗舰多模态模型,在不少通用视觉问答榜单上和 GPT-6 Astra 咬得很紧。但我一直觉得通用榜上的分数说明不了太多问题——那些题目测来测去大多是"图片里画了什么",而真正生产环境需要的是"图片里的修改意图是什么、改完之后的成稿应该长什么样"。这次我用同一套手写批注语料把两个模型硬碰硬拉出来对比,结果比我预想得还要悬殊:在识别 handwritten corrections(手写批注)并把修改正确落到原文这件事上,GPT-6 Astra 几乎是全面压制 Fable 5.1。
先解释一下什么叫"手写批注识别"。它不只是识别纸上写了什么字,而是要理解一整套"编辑语言":把某个词划掉表示删除,在两个字中间画个 ^ 再写上内容表示插入,把一段文字圈起来、在旁边写新词表示替换,用箭头把两处文字连起来表示调换顺序,在页边空白处写一段话表示补充意见,在某些数字下画个问号表示存疑。这些符号和文字组合在一起,构成一份完整的修改指令集。模型要做的事情,是看完一整页图像之后,输出一份已经把所有修改应用完毕的干净成稿。
1.1 批注识别离我们的工作其实很近
很多人觉得"手写批注识别"是个冷门场景,实际上它出现在大量日常工作里:出版社和媒体的校对环节,稿件通常以纸质或 PDF 形式在外编手中流转,改完再人工把修改录入电子稿;学术期刊的同行评审,审稿人直接在 PDF 上手写意见,编辑部要一份份整理;律所的合同审核,法务改稿后需要生成干净的最终版;企业内部各种审批单据,手写修改意见和印刷表格混在一起。任何一个环节,如果模型能读得懂批注,校对录入这个岗位就能从"逐条人工核对"变成"AI 走一遍加上人工抽查",节省的时间非常可观。
我之所以一直把批注识别当作多模态模型的试金石,是因为它把难度拉到了足够高:视觉层面,需要看清潦草的连笔、被涂改覆盖的字、密集版面里的细小符号;语言层面,需要理解"把结论改成否定式""数据有问题"这类语义操作;空间层面,还需要精确判断一条批注到底作用在哪个词、哪一行上。通用 benchmark 分数接近的两个模型,在这个任务上会瞬间拉开身位。
1.2 读懂"编辑意图"是两层能力的叠加
批注识别可以拆成两个层次。第一层是文字识别:激光扫描或者手机翻拍之后,把印刷体和手写体都转成计算机能处理的文本。这一层靠 OCR 技术就能完成个七八成。第二层才是真正的难点——编辑语义理解:划掉的线到底覆盖了哪些字?那个 ^ 是插在"确认"和"后执行"之间,还是插在"确认"前面?页边那句"这句话结论反了"指代的是上面第二段还是第三段?画问号究竟是对数据来源存疑,还是提醒自己回头再看一眼?
第二层能力要求模型同时处理视觉符号、版面位置和语言语境,缺了任何一环都会出错。两个模型在第一层的差距其实没有那么大,单看印刷体识别谁都很强,但一旦进入第二层,需要把"批注符号"翻译成"修改指令"的时候,结果就完全不同了。这也是这次测试最有价值的地方——它把两个模型在深层语义理解上的真实差距暴露得干干净净。
2. 评测设计:1500 份测试稿和一套逐条打分的方法
对比测试最忌讳的就是"凭感觉下结论",尤其是这种涉及主观判断的内容理解任务。为了保证结果可信、可复现,我在语料构成、批注分类、评分口径和模型接入方式上都做了严格控制,这里把设计思路说清楚。
2.1 测试语料的构成与来源
测试集一共 1500 份页面,其中 1200 份来自真实业务稿,300 份是人工标注控制的合成用例。真实稿件的来源是我过去一年参与过的三个校对自动化项目,覆盖合同、学术论文、教材和营销物料,扫描分辨率统一按 300dpi 处理,主要格式是 JPG 和 PDF。合成用例则特意覆盖了真实稿件里相对少见的极端情况:批注密度极高的一页、箭头交叉的复杂调序、手写笔迹和印刷体重叠、双色批注叠加等。
两种语料缺一不可。真实稿件保证生态效度——模型面对的是现实中真正会出现的脏活累活;合成用例则保证每个批注类型都有足够样本量。我见过不少评测只用了某一种语料,结果要么是真实场景太杂导致分项统计失真,要么是合成用例太干净导致测试结果虚高。这次测试我按批注类型做了分层抽样,确保六类批注各自都有 200 条以上有效样本。
2.2 六类批注划分与评分口径
批注类型我划分成六类:删除、替换、插入、调序、边栏批注、疑问标记。评分采用两级口径——批注级和成稿级。批注级的标准是"每一条批注是否被正确理解和执行",方便定位模型在哪类操作上犯错;成稿级的标准是"最终输出文本与标准成稿的字级一致率",更接近实际使用时的观感。两套口径一起算,主考核以批注级准确率为准,成稿级作为辅助验证。
| 批注类型 | 常见形式 | 判定要点 |
|---|---|---|
| 删除 | 文字上划横线 | 目标文字在成稿中完全消失 |
| 替换 | 旧词划掉,旁边写新词 | 新词落到正确位置,旧词不残留 |
| 插入 | 两字之间画 ^ 并写内容 | 插入位置必须准确 |
| 调序 | 两组文字间画交换箭头 | 顺序正确互换 |
| 边栏批注 | 页边空白处的大段说明 | 语义正确对应到目标段落 |
| 疑问标记 | 问号、波浪线、下划线 | 输出中保留"存疑"信号而非当成确定修改 |
批注级评分的判定挺苛刻:例如替换类只要成稿里新旧词同时出现,或者新词位置错了,这一条就算失败。正是这种严格口径,让后面两个模型的分差看起来特别触目。
2.3 接入方式与参数控制
两个模型都通过官方 API 接入,输入原始页面图像,不预裁剪、不做任何 OCR 预处理,直接要求模型输出修改后的完整成稿文本。统一提示词模板为:"这是一份带手写修改的文档页面,请理解所有修改意图并输出修改后的完整文本,不要解释过程。"采样温度设 0,最大输出 token 512,其他参数全部默认。
为什么不提前把批注区域裁剪出来再喂给模型?因为在真实业务里,用户是不可能给模型裁好图的,模型必须具备在整张页面里自动定位批注、并对应到正确正文位置的能力。如果预裁剪,等于提前替模型完成了最难的版面关系判断,测试就失去了意义。每个样本跑两遍取较好的结果,主要为了排除偶发的采样波动,保证成绩反映的是模型能力而非运气。
3. 对打结果:94.2% 对 76.8%,差距全部集中在"关系推理"上
测试跑完,数据比预想的更干脆。GPT-6 Astra 的批注级总准确率是 94.2%,成稿级字级一致率是 91.7%;Fable 5.1 的批注级总准确率只有 76.8%,成稿级只有 71.3%。这个差距不是均匀分布的,有些批注类型两个模型咬得很近,有些则是断崖式的差距。
3.1 总分与分项明细
先看分项数据,我用同样的语料和口径分别统计了六类批注的准确率:
| 批注类型 | GPT-6 Astra | Fable 5.1 | 差距 |
|---|---|---|---|
| 删除 | 96.8% | 81.2% | 15.6 |
| 替换 | 93.5% | 72.4% | 21.1 |
| 插入 | 94.1% | 70.6% | 23.5 |
| 调序 | 88.9% | 58.3% | 30.6 |
| 边栏批注 | 92.0% | 63.5% | 28.5 |
| 疑问标记 | 85.7% | 47.2% | 38.5 |
规律非常明显:越是依赖版面空间关系和语义推理的批注类型,Fable 5.1 掉得越狠。删除这种靠纯粹视觉就能判断的操作,两个模型的差距相对最小;疑问标记这种几乎完全靠语义上下文推断的内容,差距拉到了近 40 个百分点。这个分配模式本身就是很有价值的信息。
3.2 删除与替换:最常见的批注,最常见的翻车
删除在六类批注里最简单,划线覆盖到的文字删掉即可,但就是这件事,Fable 5.1 也只做到 81.2%。它的典型错误有两种:一种是手写划线划过重叠字时,把没被划掉的字一起误删了;另一种是删正文内容时,把旁边追加的旁注文字也连带删掉。反过来,有些划线比较轻的,它又识别不出来,错误地保留原文。
替换类的差距进一步拉大。替换批注的形式是"划掉旧词,在旁边写新词",模型需要判断哪个是待删的旧信息,哪个是要用的新信息。Fable 5.1 在旧词和新词位置靠近的时候,经常把新词当作追加内容直接拼在旧词后面,成稿里新旧词同时出现。比如原文"我们将在下周完成项目验收工作",旁边标注"下周"改为"本月底前",Fable 5.1 有几次输出成了"我们将在下周本月底前完成项目验收工作"——划掉的旧词没删,旁注的新词又没接对位置。GPT-6 Astra 则基本都能输出"我们将在本月底前完成项目验收工作"。这个例子最能说明两个模型对"哪些是指令、哪些是正文"的判别能力差异。
3.3 插入与调序:Fable 5.1 的"次序感"很弱
插入批注用 ^ 符号标记插入点,难点在于 ^ 的位置在紧凑版面上非常微妙。两个词之间、三个词之间、甚至同一个词的不同音节之间的插入点,光靠眼睛有时都容易看错。GPT-6 Astra 对插入点的判断相当精准,94.1% 的准确率说明它能够把视觉上那个细微的符号位置映射到正确的文本位置。Fable 5.1 则经常在窄行距 PDF 上错位,把本应插在"确认"和"后执行"之间的内容,插到"确认"之前。
调序类差距最扎眼:88.9% 对 58.3%。调序批注通常画一个弯曲箭头把两组词连起来,表示二者互换。这种批注几乎没有固定的符号标准,全靠箭头的空间指向来理解。从失败案例看,Fable 5.1 的一个常见错误是把"交换"理解成了"连接",比如"数据采集与分析"被箭头标注互换,它输出的却是"数据采集与分析"原样不动,或者把两段文字强行拼成一段。这说明它对带方向性的空间符号编码非常薄弱。
3.4 边栏批注与疑问标记:理解"未说出口的话"才是分水岭
边栏批注是六类批注里语义最重的一类,页边写一句话,对应到正文里一大段内容。比如"这里结论反了,要改成否定式""这一段的案例过时了,换最新的数据",模型得先定位"这里"是哪一句,再执行"改成否定式"这种语义操作。Fable 5.1 在这一项上只有 63.5%,错误模式有两种:一是把页边批注的文字原封不动当正文抄进成稿,二是把批注对应到错误的段落。GPT-6 Astra 的 92% 说明它在"指代消解"和"语义改写"上确实有一套。
疑问标记是最有戏剧性的一项。原文里划个问号,或者在某句话下面画波浪线,并不代表要修改,而是提醒"这里需要人工复核"。Fable 5.1 在这一项只有 47.2%,大量输出把"数据来源有问题?"当成确定的修改指令处理,或者直接把疑问文字吞掉,输出时变成肯定句。而 GPT-6 Astra 会把这类信号保留为"存疑提示"。别小看这个能力,在校对生产流程里,"待确认信息"被误判成"已确认信息",会造成下游一连串麻烦,这个功能上的差距比准确率数字本身更致命。
4. 从翻车案例反推 Fable 5.1 的三个技术短板
看完数据,我又把所有失败案例从头到尾过了一遍。Fable 5.1 的错误不是零散的,而是呈现出明显的模式。从这些模式反推,它的技术方案上有三个短板基本可以坐实。
4.1 管道式架构把误差放大了三倍
Fable 5.1 的很多行为表现,非常像"OCR 文字识别 → 版面分析 → 语言模型后处理"的管道式设计。现在不少多模态模型为了省训练成本,仍然采用这种组装方案。管道式架构的问题在于误差会逐级累积:文字识别环节只要把手写字母认错,后面所有语义判断都跟着错;版面分析把批注位置定错,插入和替换操作就会错位。我翻了一些 Fable 5.1 的错误案例,确实出现了"手写数字 5 被识别成 3,导致替换内容完全错误"这类典型的 OCR 错误传导。相比之下,GPT-6 Astra 的错误很少出现在单字识别上,更多是在极复杂版面下的语义拿捏,这很能说明两者的架构差异。
4.2 只看到"字"却看不到"关系"
第二个短板体现在空间关系上。失败的调序案例里,Fable 5.1 经常把"互换箭头"当成"连接线";失败的插入案例里,它把握不准 ^ 到底插在哪个词之间;失败的边栏批注案例里,它把页边文字对应到错误段落。这些错误指向同一个根源:它的视觉编码对"字与字之间、符号与文字之间的几何关系"不敏感。批注识别的本质其实是一场空间推理——目标文字在哪里、修改符号覆盖了哪些区域、新内容要落到哪个坐标,这些信息必须被视觉编码精确保留。如果模型只编码了"有没有字、字是什么",而丢失了"字在哪里、字和字之间是什么方位关系",哪怕单字识别全对,组合起来也会闹出张冠李戴的笑话。
4.3 缺少对"编辑意图"的分层推理
第三个短板也是最难补的:Fable 5.1 像是把批注识别当成"识别 + 翻译"在做——把图像里的所有文字识别出来,再翻译成一段通顺的文本,但它缺少一个"意图层"来判断:这一笔是删除还是保留?这个问号是让人复核还是只是划了条重点线?这段旁注是要落到文中还是仅作参考?这些判断需要模型同时利用视觉符号、词汇语义和文档语境做联合推理。GPT-6 Astra 在疑问标记和边栏批注上的表现,说明它在训练阶段就大量接触了"图像 + 修改指令 + 成稿结果"这类三元组数据,所以对意图的建模更直接。这部分属于我从行为反推的推测,不是官方文档的结论,但从错误模式的分布来看,这个推断和实测数据是自洽的。
5. GPT-6 Astra 赢在架构:从行为反推它的训练与设计
作为一个吃这碗饭的人,我更关心的是"为什么它能赢"。虽然 OpenAI 没有公开 GPT-6 Astra 的完整技术细节,但从 API 的实际行为、错误模式和响应特点上,能反推出不少设计思路。
5.1 原生多模态融合,不搞流水线
GPT-6 Astra 对整页图像的处理方式,明显不同于"图像分块识别 + 文本后处理"的路线。从响应速度和输出质量看,它对图像信息的编码和语言推理是在同一个表征空间里完成的,视觉特征可以直接影响词元生成,语言推理也可以反过来对视觉特征进行再聚焦。这种方式在处理批注时特别有用:模型先看到"那里有条线",语言模块判断"可能是删除记号",然后视觉模块再回头确认"这条线确实覆盖了那个词",整个过程是迭代推进的,而不是像管道式架构那样一次定生死。
5.2 高分辨率视觉编码与局部注意力
批注识别对细节极其敏感,一个 ^ 的位置偏差几个像素,插入点就完全不同。GPT-6 Astra 在紧凑版面、密集批注下依然保持高准确率,一个重要原因应该是它支持高分辨率视觉输入,并且视觉编码层具备局部注意力机制,能够对"批注符号周围的细小区域"做精细建模。这很像人眼的视觉策略:先快速扫一遍全页,把版面结构记在脑中,然后聚焦到修改符号附近仔细看。模型内部其实也是这么干的,先粗粒度理解全页,再对重点区域精读,只不过这个过程发生得非常快。
5.3 训练目标里纳入了"编辑语义"
从结果反推,GPT-6 Astra 的训练数据里大概率包含大量"带批注文档 → 干净成稿"的样本。模型被直接训练去预测修改后的结果,而不只是预测图像里的文字内容。这个训练目标非常关键,等于强制模型理解一套编辑规则:看到划线就学习"删除"这个语义,看到圈注就学习"替换",看到箭头就学习"顺序变化"。如果训练目标只是普通的图文配对,模型学到的是"图像里有哪些字",而不是"这些字被修改之后应该变成什么"。这两种知识在实际任务中的差距,正好就是这次测试里两个模型 17 个百分点的差距。
6. 落地经验:批注识别真正变成生产力之前要解决的几件事
数据测完了,横向对比也做完了,读者的下一个问题一定是:这套能力到底能不能直接用到生产里?我在项目里实际试跑了一段时间,把可以复用的经验写出来。
6.1 最小可用工作流
一个能快速上手的流程是:扫描件或手机翻拍件,按 300dpi 以上导入,整页喂给模型,要求输出成稿文本和修改摘要。修改摘要建议单独输出,列出"第几段第几行,做了什么修改",这能大幅压缩人工复核的时间。我实际跑下来的体会是,除非遇到明显的版式异常,否则不要先把 PDF 拆成单页分别处理——整页输入能保留批注和正文之间的空间上下文,准确率明显更高。输出格式上,建议同时要求模型"保留未修改部分的原文",防止它在处理过程中顺手做了不必要的润色,给后续比对制造麻烦。
6.2 提示词里值得注意的几个细节
提示词的影响远比想象中大。我对比了几套写法,有几个要点是实测有效的:一是明确要求"遇到无法理解的批注,在输出中标记 [待人工确认],不要强行猜测";二是对法律、技术类文档,在提示词里附上领域术语表,能明显减少同音字替换错误;三是如果页面有多处批注,要求"先逐条列出修改说明,再输出最终成稿",这比直接要成稿文本更容易定位问题。采样温度务必设 0,批注识别是确定性任务,不是创意任务,任何随机性都会引入本可避免的错误。
6.3 边界在哪里:仍然需要人工兜底的情况
即使强如 GPT-6 Astra,测试里仍有接近 6% 的批注级错误,集中在这几类:多人用不同颜色批注叠加导致指令互相矛盾、批注笔迹覆盖了印刷体导致原文无法辨认、极度潦草的连笔手写、以及"见上页第三段"这种跨页引用批注。这些场景目前没有模型敢保证零错误。生产使用时必须留人工兜底,我的做法是把模型输出的成稿当"高完成度初稿",用 Word 审阅模式生成修订记录,让校对人员重点复核疑问标记、边栏批注和数字类替换这三类高风险位置,其余内容直接采信,整体效率比纯人工提升得非常明显。
最后说点个人体会。我做了几年文档自动化相关的工作,"识别手写批注"一直是被客户当成"AI 总该能做吧"、实际上却让无数方案栽跟头的需求。这次测试最让我感慨的不是孰强孰弱,而是这个场景终于从"演示能用"走到了"生产可用的门口"。GPT-6 Astra 在疑问标记上的表现尤其让我这种天天跟校对稿打交道的人安心——它至少知道自己什么时候不确定。如果你也在做类似的批注处理需求,建议一定拿自己业务里的真实稿子跑一遍测试,别只信别人的评测报告。不同领域的批注习惯差异很大,模型落不落地,最后还是你自己的稿子说了算。