Skip to content
← Blog

从未接受过职业训练的OCR专家

Based on: Multi-Expert Routing for Multi-Domain Low-Resource OCR: A Manchu Case Study — Zhan Chen, Jiqiao Ma, Chih-wen Kuo

让我坐直身子的是这个发现:研究人员构建了一个系统,用于为给定的一页17世纪满文手写稿选择最佳的OCR模型,而在三分之二的情况下,该系统选中的模型实际上从未接受过识别此类手写体的训练。它之所以表现良好,完全是由于在其他任务上的训练所产生的附带效果,直到有人专门检查才发现这一点。

这种结果乍看之下像是一个Bug报告,但当你阅读论文(arXiv 2607.14041,作者为Zhan Chen、Jiqiao Ma和Chih-wen Kuo)后,你会发现这实际上是一种巧妙应对OCR团队常遇难题的方法:标注数据不足,且文档外观各异。

Manchu script manuscript document

为什么满语是 OCR 的噩梦

满语是清代宫廷使用的语言,采用源自蒙古文的垂直字母书写,从上至下排列。如果你正在为其构建 OCR 系统,你将同时面临两大难题。

首先,它是低资源语言。不像英语或中文那样拥有海量的标注满语文本,每一个用于训练或评估的字符级转录都必须由真正能读懂满语的人完成,而这类人才非常稀缺。

其次,这也是使其成为良好压力测试的原因,满语文档的手写风格因书写者和用途的不同而差异巨大。该论文涉及三种字体:正楷(工整、正式,接近印刷体)、行书(更快、更流畅,字母相互连笔)以及专门用于奏折(清朝官员呈递给皇帝的报告)的半草书“馆阁体”。针对其中一种字体训练的模型在另一种字体上可能会表现糟糕,就像一个能轻松阅读清晰印刷体英文的人,在解读医生的手写处方时可能会感到困难。

将这两个问题结合起来,就得到了真正的挑战:你需要一个能够很好地处理三种视觉差异显著的书写风格的系统,但你没有足够的单一风格的标注示例来简单地通过增加数据量来解决这个问题。

核心理念:停止训练单一模型,开始路由到最合适的模型

当数据不足以训练一个大型通用模型时,标准做法是进行微调:使用预训练模型,并在目标数据上持续更新它,同时保存中间的检查点。通常,我们会丢弃所有中间检查点,只保留最终的那个。

这篇论文的洞察在于,那些被丢弃的检查点并非毫无价值。在迭代微调过程中,模型会经历不同的阶段,在这个过程中,它可能在某个时刻对数据的某种特定特征表现出异常出色的处理能力,即使这并不是训练的目标。作者保留了一个这些检查点的池子,并将它们视为领域专家。

然后,他们构建了一个轻量级的路由器:一个小型图像分类器,它查看页面并预测其属于三种书写风格中的哪一种(常规体、行书或章草),然后将该页面发送到池中已知的擅长该风格的检查点。如果池中没有适合某个领域的专家,他们会训练一个并添加进去。

一个恰当的类比是医院分诊。你不需要一位医生治疗所有患者。你需要一位在前台的护士,她可以瞥一眼患者,就知道应该将他们送往走廊尽头的哪位专家。这里的不寻常之处在于,其中一些“专家”从未正式接受过其专业领域的训练。他们是在为其他目的训练的过程中,作为副产品习得了这项技能,而系统是通过测试发现他们的,而不是通过询问他们应该擅长什么。

他们测量了什么,以及为什么 CER 是关键指标

这里的主要指标是 CER(字符错误率):OCR 系统识别错误的字符占人工验证转录文本中字符总数的百分比。数值越低越好,在成熟的 OCR 流程中,优秀模型与平庸模型之间的差异往往不到 1 个百分点的 CER,而这正是通过小规模或精心挑选的测试集很容易伪造的结果。本文使用了三个固定的测试集,每种书写风格各一个,以确保比较的一致性。

路由系统按风格划分的结果如下:

  • 楷书:0.30% CER
  • 奏折(馆阁体):1.57% CER
  • 行书:4.83% CER

有两点尤为突出。首先,这些数字与如果你已经知道每一页的正确领域并手动将其路由到最佳专家模型所得到的结果相匹配。换句话说,自动路由器并没有因为猜测错误而降低准确率。它的表现就好像直接拿到了答案一样。

其次,行书显然是三者中最难的一种,误差率是楷书的 16 倍以上。这符合一般 OCR 的规律,即最大的挑战几乎总是来自最松散、最非正式的笔迹,而不是工整的字迹。

路由器本身是一个小型分类器,负责决定每一页应归入哪个类别,它在识别正确书写风格方面的页面级准确率达到 99.3%。对于一个真正棘手的视觉分类任务来说,这是一个非常出色的成绩:区分三种当今大多数人根本无法阅读、更不用说一眼辨别的书体风格。

17th century Qing dynasty official seal

意外专家发现,以及为何这才是真正的头条

回到本文开篇提到的细节。论文报告称,在路由器最终依赖的三位专家中,只有“运行脚本”专家是原本就以运行脚本为目标进行训练的模型检查点。另外两位——处理常规脚本和宫闱奏折的专家——则来自旨在实现其他目标的迭代微调过程中产生的检查点。

这一发现的重要性远超表面所见。它表明,在低资源环境下,模型在特定领域是否表现出色,并不能完全从你最初设定的训练目标中预测出来。训练动态会产生副作用,而其中一些副作用正是你绝不会想到要专门构建的有用专家。其实际意义在于,如果你手头堆积着过去微调运行产生的中间检查点,将它们视为可丢弃的废物,可能意味着你正在抛弃那些你已经花钱创造出来的专家模型。

这也重新定义了“路由器”的实际作用。它不仅仅是在引导流量。它更像是在进行一场盲选,让一个轻量级分类器去发现你现有的哪些资产在无人指派的情况下,秘密地擅长某项工作,然后根据这一发现采取行动,而不是基于对每个检查点“用途”的假设。

为什么构建或采购 OCR 时这很重要

如果您以实际业务量运行文档 OCR,您很可能已经遇到了这个问题的某种变体,只是没有历史手稿的背景。扫描的合同、手写表格、褪色的收据和混合质量的 PDF 都是不同的视觉域,争夺一个模型的注意力,就像这里的楷书、行书和花体字一样竞争。

教训不是“去训练一个满文专家”。而是单一的“最佳”OCR 模型,那种你会从排行榜上挑选的模型,往往是错误的框架。一个将不同文档类型路由到不同专家的路由器,每个专家都针对该类型进行了调整或发现其在该类型上表现强劲,可以击败任何单一模型。这与尝试多种 OCR 引擎并保留最佳结果的服务往往优于每次只赌一个引擎的逻辑相同。鉴于中文等汉字系统拥有数千个字符且排版密集,若模型仅针对拉丁字母优化,其在处理高密度汉字时的局限性便尤为凸显,这进一步印证了专用路由策略的必要性。

这也是不要急于删除旧模型检查点的原因之一。如果您曾经通过多次迭代微调模型并只保留最终版本,这篇论文为保留中间版本并定期测试是否有任何版本在您未计划的事情上表现优异提供了案例。存储检查点的成本很低。重新训练您已经拥有但丢弃的专家的成本则不然。

这种方法的诚实局限

这是一项范围明确、规模较小的研究,而非通用的解决方案,论文也没有对此过度宣传。

三个领域对于路由器来说是一个易于区分的数量。当面对十种或二十种视觉上截然不同的文档类型时,这种方法的效果如何尚不清楚。在这种情况下,轻量级页面分类器可能会开始犯更多的路由错误,而且由于出错的方式更多,错误路由决策的成本也会更高。

该系统仍然需要一种回退机制:当检查点池中没有适合某个领域的专家模型时,必须有人训练一个新的专家模型,这意味着仍然需要有人为该领域生成标注数据。这种方法减少了需要新鲜训练数据的频率,但并没有消除对训练数据的需求。

这里的路由是在页面级别进行的,而不是逐行或逐词进行。如果一个页面混合了两种书写风格(在真实的历史文档中并不罕见,例如抄写员可能在页面中间切换手写风格),这可能会让基于每页一个分类的路由器感到困惑。

而且这是专门针对满文的:一种在不同风格变体之间具有明显结构差异的文字。对于彼此界限更加模糊的领域(例如,同一书法流派中几个人的草书手写体),轻量级分类器可能更难区分,这将削弱自信路由的整个前提。

这些局限性并没有抹去核心成果。论文展示了一种真正巧妙的方法,可以从已有的检查点池中榨取更多价值,并提醒我们“打造一个非常优秀的模型”并不总是正确的问题。有时候,正确的问题是“在我已经构建的东西中,哪一个在这方面实际上是最佳的”,并构建一个系统来真正找出答案。