为Tesseract适配多语言模型

摘要:我们描述了将Tesseract开源OCR引擎用于多种脚本和语言的工作。人们的努力集中于实现通用的多语种操作,以至于一种新的语言除了提供文本语料库之外,还需要进行微不足道的定制。尽管需要对各个模块进行更改,包括物理布局分析和语言后处理,但字符分类器不需要更改几个限制。Tesseract的分类器很容易适应简体中文。从随机抽取的书籍中的英语,欧洲语言的混合物,和俄语进行测试,结果显示出相同且一致的错误率,即在3.72 %和5.78 %之间,而简化汉字的错误率仅为3.77 %。


介绍(radicals in Han, Jamo in Hangul, and letters in Hindi)

汉语和日语都是汉字,包含几千种不同的字形。研究特定语言的解决方案比通用更容易实现。例如,汉字、韩文和印地语的大型字符集主要由数量少得多的组成部分组成,这些组成部分在汉语中被称为偏旁/部首,在韩文中被称为词根,在印地语中被称为字母。由于为少数类开发分类器要容易得多,一种方法是识别偏旁[参考文献1,2,5],并从偏旁的组合推断出实际的字符。这种方法对韩文来说比对汉文或印度语更容易,因为韩文中词根形状变化不大,但是在汉语中,偏旁经常被压扁来适应汉字,而且大多与其他偏旁挨着。又比如阿拉伯语,很难通过将连通区域分割为字符的方法来确定字符边界。一种常用方法是将单个垂直像素strips分类,每个像素strips都是一个字符的一部分,并将分类中引入HMM模型,该模型对字符边界建模[参考文献3]。

本文基于Tesseract,讨论了我们在其国际化的方向上所做的工作,其中一些可能能够轻松实现。我们采用了语言泛化的模式/方法,以此来尽量少覆盖多语言的手工工作。


拉丁语的Tesseract的回顾

Tesseract的新的版面分析技术从一开始就被设计为语言无关的[参考文献10],但引擎的其余部分是为英语开发的,并没有过多考虑如何适配其他语言。在注意到当时的商业引擎严格的使用black-on-white文本后,Tesseract最初的设计目标之一是它应该像识别black-on-white黑白文本一样容易识别white-on-black(逆视频)文本。这使得设计(结果很偶然)朝着连接组件(CC,Connected component)分析的方向发展,并对组件的轮廓进行操作。在连通组件分析后的第一步就是在文本区域中寻找blobs。一个blob是一个假定的分类单元,可能是一个/多个水平重叠的CCs及其内部的嵌套轮廓/洞(holes)。问题在于检测box内的inverse文本还是字符里面的洞。对于英语来说,很少有字符有超过2级的轮廓(如© and ®),而且也很少有超过2个的洞,因此任何打破这些规则的blob一定是一个包含有inverse 字符的box,甚至是围绕黑白black-on-white字符的框架的内部/外部。

       在确定哪些轮廓构成blobs后,文本行检测器通过文本行上相邻字符的垂直重叠来检测(仅水平)文本行。【参考文献11】。对于英语,这个重叠和基线表现得很好以至于他们可以用来非常精确地检测到一个非常大角度的倾斜。在找到文本行后,固定音高检测器检查固定音高字符布局,并根据固定音高采用两种不同的单词分割算法之一进行运行。识别过程的大部分是独立地对每个单词进行操作,然后是最终的模糊空间解析阶段,在这个阶段中确定不确定的空间。

下图2是单词识别器的架构。在大多数情况下,一个blob对应一个字符,因此单词识别器首先对每个blob进行分类,并将结果提供给字典搜索,以便在单词中每个blob的分类器选择的组合中找到一个单词。如果结果不好,则下一步就是删除难以识别的字符,这提高了分类器的置信度。在穷举分割可能性后,对所得到的分割图进行最佳搜索,这会将切碎的字符片段或在原始图像中被分割成多个CCs的字符部分重新组合在一起。在最佳优先搜索的每一步中,对任何新的blob组合进行分类,并将分类器结果再次提供给字典。单词的输出是根据单词是否在字典中和/或是否有合理的标点符号排列进行加权后,具有最佳的基于距离的总体评级的字符串。在英文版本中,大多数标点规则都是硬编码的。

图像中的文字被处理了两次。在第一阶段中,成功的单词,即字典中没有危险歧义的单词,被传递给自适应分类器进行训练。一旦自适应分类器有足够的样本,它就可以提供(最后的)分类结果,即使是在第一阶段。在第二阶段中,第一次传递中不够好的单词进行第二次处理,第二次处理,以防自适应分类器在第一次遍历单词后获得了更多信息。

从前面的描述来看,对于非拉丁语言,这种设计显然存在问题,一些更复杂的问题将在第3、4和5节中处理,但有些问题只是简单的复杂工程。例如,字符类的一个字节代码是不够的,但是它应该被UTF-8字符串或更宽的整数代码所取代吗?起初,我们为拉丁语言改编了Tesseract,并将字符代码更改为UTF-8字符串,因为这是最灵活的,但这最终导致了字典表示的问题(参见第5节),因此我们最终使用UTF-8字符串表的索引作为内部类代码。

  1. 版面预处理

Tesseract的“textord”(文本排序)模块的几个方面需要更改,以使其更加独立于语言。本节将讨论这些更改。

3.1 垂直文本布局

汉语、日语和韩语在不同程度上都是水平或垂直阅读文本行,而且经常在同一页上混淆方向。这个问题并不是CJK独有的,因为英文杂志页面经常在照片或文章旁边使用垂直文字来表示摄影师或作者。

垂直文本由页面布局分析检测。如果大多数在制表位上的ccs都满足:CCs的左边在左边制表位上,CCs的右边在右边制表位上,那么制表位之间的所有内容都可以是一行垂直文本。为了防止表中的假阳性,进一步的限制要求垂直文本在ccs之间的垂直间距中值小于ccs的平均宽度。如果页面上的大多数ccs是垂直对齐的,则将页面旋转90度,并再次运行页面布局分析,以减少在垂直文本中发现假列的机会。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值