OCR行业有一个”硬骨头”:多语言识别。

英文只有26个字母,识别难度相对小。中文有7000多个常用汉字,困难度上了一个台阶。但这些跟阿拉伯文、泰文、蒙古文、藏文比起来,又都是小儿科了。

那些让人头疼的文字系统

阿拉伯文的写法几乎把OCR的所有弱点都戳中了。

阿拉伯文是从右向左写的,字符在单词里的位置不同,形态也会变——同一个字母在词首、词中、词尾的写法不一样,有些字母还会和非相邻的字母连笔。一句话在印刷体里看起来像一条连续的波浪线,机器很难判断哪里是字母的边界、哪里是装饰性曲线。

泰文的麻烦在另一个维度。泰文有上下标——辅音字母上会叠加元音符号和声调符号,一个文字单元可能有上下三四层高度。传统的按行切分方法在泰文上会失效,因为切分线会从字母中间穿过。

蒙古文(传统蒙文,非西里尔蒙文)是竖写的,从上到下排列分列,列与列之间从右往左。这种布局对大多数为横写文字设计的OCR系统来说是噩梦。

藏文的结构很像印地语系统,辅音和元音组合规则复杂,印刷体和手写体的差异极大。

传统方法是怎么处理的

在深度学习普及之前,这类非主流文字的识别需要大量人工介入。

首先需要资深语言学专家建立字符集和语言模型——梳理每个文字的书写规则、连字变体、上下文形态变化等信息。

然后针对每种文字的特性,单独设计图像预处理流程:阿拉伯文需要特殊的连字拆分算法,泰文需要纵向层级分析,蒙古文需要竖排转横排的预处理。

最后再用传统的模式识别方法做字符分类。

这条路极其费人力,且每增加一种新文字就是从头来一次。

深度学习的范式转移

深度学习的思路完全不一样:不看规则,只看数据。

只要收集足够多的某种文字的标注样本——通常是几十万到几百万张包含文字的图像——就可以训练一个通用的识别模型。不需要语言学家来分析规律,模型自己从数据里学。

对于多语言OCR系统,现在通常用一个统一的模型架构,对不同语言的数据做联合训练。底层的卷积网络负责提取文字的视觉特征,上层的序列网络负责学习语言的字符分布规律。同一个模型里,阿拉伯文部分学习阿拉伯文的形态变化规律,泰文部分学习泰文的层级结构规律。

这种方法让”新语言支持”的速度大幅提升——以前增加一种新语言需要几个月甚至一年的工程周期,现在只需要收集齐数据、训练几周、调优上线。

大模型在多语言识别上的潜力

Transformer大模型在多语言方面有天然的优势。

预训练阶段用海量多语料做的语言建模,让大模型天生就包含了各种语言的字符序列规律和上下文依赖关系。这些先验知识对稀有语言字符的识别非常有帮助——即使某种语言字符的视觉训练样本不够,语言模型层面的先验知识也能帮助提升识别准确率。

但这里有一个现实问题:稀有语言的高质量标注数据本身就极度稀缺。蒙古文、藏文这类文字的数字化程度相对低,可用的训练样本比中英文少几个数量级。数据不够,模型再强也发挥不出来。

这也是为什么多语言OCR仍然是一个活跃的研究领域——不是没有方向,而是数据的积累需要时间。

每次边境口岸读出一本来自陌生国度护照上的文字时,背后都是一套跨文字系统、跨国界、跨语言的多语言识别系统在安静地工作。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐