Closed wanghaisheng closed 7 years ago
3.1 现代英语 数十年里 现代英语的文字都是 OCR 研究领域的重中之重。拉丁文字或者说罗马文字用于书写英文。目前,我们认为印刷体的拉丁文本 OCR 是一个被诸多研究人员攻破的难题。拉丁文字的语素相对其他文字简单一些。但对印刷体的英文/拉丁文 OCR的研究一直没有间断过。后面的章节会对其中尚未完全解决的问题进行说明。
3.1.1 印刷体 英文 OCR 的难题
文字外形的相似度:在现代英语的印刷样式中存在很大相似的。这些字符使得 OCR 引擎难以准确的识别。比如 ‘l’ and ‘1’ or ‘i’ and ‘l’, ‘cl’ and ‘d’, ‘rn’ and ‘m’. 此类问题主要存在于基于切割方法的 OCR 系统中。
大小写难以区分:一些字符大小写长得很相近,比如, ‘o/O’, ‘s/S’, ‘x/X’, and ‘v/V’. 这些字符使得那些基于外形进行匹配识别的算法无法识别。
文档的损坏:扫描件文档中存在噪声是很常见的[NS14].会在一定程度上影响某些字符使得引擎无法识别。一般而言 DIA 版面分析系统首先是扫描整个页面,二值化然后再进行其他处理。在文档采集过程中文档上会出现很多其他东西,比如墨水的扩散、bleed through(说的是一部分文本出现在页面的另外一边),倾斜,salt-and-pepper noise/椒盐噪声。这样的处理过程有个弊端就在于很多字符变形的更厉害了,有些字符则黏在了一起。切割就会更困难,识别率自然就低了很多。
摄像头采集 的文档:由于有很多价格很低的采集设备,手持终端所采集的文档越来越多。这类文档主要的问题是,文本行是卷曲的,运动所造成的模糊和失焦文本图像。标准的OCR 算法根本没法处理
自然场景和视频中的文本识别:此类场景下通常需要文本定位(文字在图片中什么位置)和文本切割(文本和背景分离)
3.1.2 现代英文的 OCR 数据库
过去这几十年里有很多 现代英文的数据库,你可以核对比较 OCR 算法的效果。本文中用到的最有名的两个如下:
3.2 中世纪晚期的拉丁文字
中世纪的拉丁文字包含大量的现代拉丁文中不存在的字符。见图3.2所示。大量的文献使用了中世纪的拉丁文。为了长时间保存这些文化遗产就需要对此类文档数字化。
3.2.1 古拉丁文 OCR 的挑战
历史文档在方方面面或多或少的影响了 OCR 系统的可靠性。
ArchaicOrthography:和其他古语种一样,很多古拉丁文中的字符现在都没有使用了。图3.2展示了15世纪拉丁文所有的字符。
3.2.2 古拉丁文的 OCR 数据库 对古籍的数字化所面临最主要的问题是缺少标记数据以及如何评估OCR算法的效果。使用人工合成的数据是一种思路,但要合成数据,你得有抄写好的数据。把这些文本抄下来本身就是很困难的,需要你对文字有很深入的了解,因此成本非常高。 IMPACT 项目旨在对欧洲各国语言的古籍进行数字化。很多工具、方法都是出自这个项目,但仍然有很多难题值得继续深入研究。
3.3 German Fraktur Script
Fraktur(https://en.wikipedia.org/wiki/Fraktur)在欧洲仍然是主流文字,尤其是16世纪和20世纪中期的德国。在德国,很多报纸的标题仍然用的是这种文字。图3.3节选自 Ersch-Gruber Encyclopedia
3.3.1 Fraktur OCR 的挑战
3.3.2 OCR 数据库
缺少 数据库 导致无法评估比较 Fraktur 文字 OCR 方法的识别率。为了训练出基于有监督学习的OCR 系统需要大量的抄写数据。人工准备数据是繁琐和乏味的。缺少ancient orthographies and scripts 使得 OCR 更加困难。需要对语言文字熟悉的专家才能够抄写数据,成本奇高。
3.4 Polytonic Greek 文字
Polytonic orthography 是monotonic orthography (modern Greek) in 1982 之前古希腊和中世纪希腊人用的最多的。
3.4.1 Polytonic Greek的 OCR 难题
在公元前 3世纪出现的诸多发音符号使得每个元音都有很多不同的又长得很接近的标记符号。这些发音符号包括 (i) the acute accent oxeia – sharp or high, (ii) the grave accent (bareia – heavy or low), (iii) the circum ex (perispomene – twisted around), (iv) the rough breathing dasi pneuma, (v) the smooth breathing psilon pneuma, (vi) the di- aeresis to indicate diphthong, and (vii) the iota subscript (hypogegrammene written under ).
希腊历史的不同时期所使用的不同的phonological and orthographical rules,这些发音符号与各种组合可以关联到14个元音字符 七个大写 七个小写的。比如: 'α' 会有如下的变种: αάἀἁἂἃἄἅἆἇὰᾶᾰᾱᾳᾀᾁᾂᾃᾄᾅᾆᾇᾲᾷᾴ. 相似字符使得字符集特别大 超过200,这就使得 OCR 非常困难。
3.4.2 Polytonic Greek的 OCR 数据库
缺少标记数据 严重阻碍了 Polytonic Greek OCR 系统的研发.希腊政府资助了一个叫OldDocPro GSL+的项目,采集了大量的标记数据来识别机打和手写的希腊古籍。到此为止,我们探讨了字素相对简单的语言文字。后面两节是针对东南亚的文字,字素相对拉丁文 希腊文要复杂的多
3.5 梵文
像Sanskrit, Hindi and Nepali 梵语、北印度语和尼泊尔语 是少数使用梵文的流行语种。诸多经典著作、科学书籍、宗教典籍都是用 Hindi/Sanskrit. 因此,数字化此类古籍的工作越来越多。
梵文是一种草书,字都是由元音和辅音构成的。但在构成字的时候元音和辅音的外形是变化的。用印度写字的过程如图3.6所示,右上角是必须用到的词汇。两个辅音’rst ’是由特殊字符‘ ◌् ’连接的,这样就去掉了第一个辅音里的内置的元音。下一步,把上面得到的与元音l ि◌ (pronounced as ‘ee’)组合,组合之后会出现在字符的最前面。类似的,辅音 t य (ya) 与元音l ◌ा (aa) 组合得到 या (yaa), 辅音त (th) 和म (ma) 组合得到 म (thma). 最后把 क (ka)加到词上去,然后再来一个横线就构成了 kriyaathmak 这个词,含义是功能性的或者实用性的。
3.5.1 梵文 OCR 存在的挑战
即使 梵文 OCR 需要很强烈,这块的研究赶不上对拉丁文的研究。梵文比拉丁文 希腊文要复杂的多。字符数量多太多,不同字体差异很大,如果在词中的位置不同,辅音-辅音和辅音-元音的组合形式都不一样。
辅音-元音的组合:除了内置的原因‘a’以外,辅音和元音组合起来 是要用 diacritics or Maatra 修改的。diacritics or Maatra也就是添加到字中去要改变自己的外形。比如,辅音त (tha) 与元音l इ (e)组合后是 ित (thi). ‘ि◌’ 添加到 त 上去就被称作 Maatra.
辅音-辅音的组合:辅音在一个词里面的话也会存在不同的形式,比如, त (th) and म (ma)同时出现在词里面的话,会变成 म (thma). 这种被称为 Samyuktakshara, 也就是‘conjuncts’.
3.5.2 Devanagari 的 OCR 数据库
除了语言自身的复杂度,缺少标准数据库也是一大难题。一些文献中提到过一些,但大多都是自用的,做一些试验,后面不在用了,你也拿不到。
3.6 Urdu Nastaleeq 文字
和梵文一样,Urdu Nastaleeq 文字同样也很复杂。它是书写 Urdu and Persian 语言的主流文字.8-9世纪在伊朗开发出来的。自此之后,在伊朗、巴基斯坦广泛应用在日常的报纸、书籍和其他文献中。当下来看, 我们要把 Nastaleeq script 和Naskh script 区分开来,后者是阿拉伯语的主要文字。它属于 Right-to-Left (RTL) languages ,也就是从右往左的书写顺序。但其中数字的阅读顺序是从左到右的。图3.7展示了带数字的文本行。其中数字和英文阅读顺序相同,其余文字则是从右到左的。
3.6.1 Nastaleeq OCR 存在的难题
另一方面, Naskh script的组合规则和 Nastaleeq 一样,但书写顺序则是保持水平的从右到左。图3.9 是两种文字的同一段话。
从 OCR 角度看 ,Nastaleeq 比 Naskh 更难,因为当相近的字符重叠的时候,没法区分字中字符属于前面的词还是后面的词。
字符外形可变:Naskh 和 Nastaleeq 文字中 字符都会依据它出现在词中的位置发生形变。字符在词中会有四种情况:孤立存在、在字首、在字中、在字尾。见图3.11所示,注意 单个字符和其他字符组合时也会出现形变。图3.12展示了同一个字符出现在词的不同位置时的形变。
语境中的形变:在 Nastaleeq 中,字符的外形在相同位置也不一定会保持不变。不像 Naskh,处在词的某个位置的字符的外形与前后的字符都没有关系。因此,一个字符同个位置会有多种形变,如图3.13所示
No Concept of Baseline and x-height: 对于大多数 拉丁字符来说 [BUHAAS13],要区分特征的话,The x-height (the height of letter ‘x’ in Latin) and baseline 是很关键的。但 Nastaleeq 中没有这样的概念。 由于它是对角线的,字的高度取决于字符的数量和类型。因此我们会看到一些行数据可以确定一个baseline,一些就完全做不到。见图3.14
Ligatures 太多:在 Nastaleeq 和 Naskh中,一个词可能会包括一个或多个 ligatures。 见图3.15所示。Urdu Nastaleeq [KSKD15]中去重以后大概有2万6千个ligatures。这个数量使得要开发基于词的或者基于ligature的 OCR 方法就会很困难。尽管 2000 个ligatures 覆盖了 Urdu中90%的词,但仅就是对2000个ligature 进行分类也非易事。如果两个 ligature 的区别只是一个点或者diacritic mark的话,就更挑战了。
Dots 和 Diacritics:
Nabataean scripts 文字的上方、下方或者是字符中有大量的点号和 diacritics marks,在Urdu Nastaleeq script 中一些字符最多可以关联三个点号. Dot association is particularly very challenging w.r.t. OCR as their placement changes depending the shape of a character in a certain position. 对于像 # " (che) 或 # $ (jeem) 的字符,点号出现在字符里面, where a dot is present inside the character, the dot no longer remains inside as the shape of these character changes in the middle or beginning of a ligature (see Figure 3.16).
对于 ligature 中相邻的字符,点号可能位于不同字符的上方或下方。如图3.7所示。
3.6.2 Urdu Nastaleeq OCR数据库
Urdu Nastaleeq OCR 研究仍处于早期阶段,没有可以公开使用的开源的或者商用的工具。 Shafait et al. [SUHKB06]等人构建了第一个数据库,其中包含了25份文档,对版面和文本都进行了标记。收录了誊写文档的页面,所以很难 OCR 。 Ijaz and Hussani [IH07] 等人开发了一个字典,其中包含了大概5万个去重的词。这些词抽取自6个领域,体育、新闻、文化、娱乐、消费信心、个人通信和财务。词的总量超过1800万。 Urooj et al. 等人公开了一份不同字体的 Urdu Nastaleeq 数据库。数据来自信件、访谈、报刊、体育、文化、卫生保健、科学、小说、翻译稿、短篇文章和书评。
Sabbour et al. [SS13] 等人公开了一个 Urdu 打印件的文本图片数据库。其中包含了1万行文本。每行文本都是通过不同的参数变形而生成。其中包含了文本行和词级别的标记。
3.7 多种语言文字混排的印刷体
随着全球化的进程不断深入,多语言的文本越来越多。电子产品的用户手册、旅游指南,字典、翻译都会使用多种语言来获取全球的客户。另外一方面,英语已经变成一门国际化的语言,影响很大。
3.7.1 多语言文本的分类
从OCR 角度来看,多语言文本可以分为三大类,了解其中的差异,可以更好的了解数字化的难度。
同类文字 不同种语言:这类文档中所有的语言都属于同一系列的文字。比如英语、德语、法语、意大利语都同属拉丁语系,Hindi and Nepali 都同属 梵文。如图3.9-a所示
同种语言但不同的文字:一些语言可以用不同的文字来书写。可以是 Nastaleeq 或 Naskh 。另外一个例子就是日语,Hiragana, Kanji or Katakana 可以三选一。如图3.19-b所示
不同语言不同文字:例如中英混合,阿拉伯语-法语混合,希腊语-日语混合。如图3-19-c所示
3.7.2 多语言文档的 OCR 数据库
长久以来,我们首先要进行一个语言文字识别的过程,这样才能对于识别出来的文字应用针对某种语言的模型。用于识别确认语言文字的数据库很少见。有一些研究人员[GDS10].在自己的数据集上做但没有放出来。 Kanungo et al. [KRM+05] 等人提出使用圣经作为标准数据集来进行 MOCR 算法的基准测试。但这种思路并不主流。
3.8 简体中文 3.8.1 现代中文 OCR 存在的挑战
文档的损坏:扫描件文档中存在噪声是很常见的[NS14].会在一定程度上影响某些字符使得引擎无法识别。一般而言 DIA 版面分析系统首先是扫描整个页面,二值化然后再进行其他处理。在文档采集过程中文档上会出现很多其他东西,比如墨水的扩散、bleed through(说的是一部分文本出现在页面的另外一边),倾斜,salt-and-pepper noise/椒盐噪声。这样的处理过程有个弊端就在于很多字符变形的更厉害了,有些字符则黏在了一起。切割就会更困难,识别率自然就低了很多。
摄像头采集 的文档:由于有很多价格很低的采集设备,手持终端所采集的文档越来越多。这类文档主要的问题是,文本行是卷曲的,运动所造成的模糊和失焦文本图像。标准的OCR 算法根本没法处理
自然场景和视频中的文本识别:此类场景下通常需要文本定位(文字在图片中什么位置)和文本切割(文本和背景分离)
不同业务的数据复杂度不一样:发票 财报
3.8.2 现代中文 OCR 数据库
3.9 古籍中中文
Baird and Tambore [BT14]中指出要做一个健壮的文档图片识别系统存在很多硬骨头要啃。这部分主要围绕着两类挑战: 1)文字本身带来的挑战(语言学中的文字(script)、书写系统(writing system)和语言(language)) 2)缺少标记数据带来的挑战
文字本身的话就包括书写规则和字素graphemes。一些研究人员 [BR14]将graphemes 字素结构称之为文字的形态学 morphology,字素会直接影响 OCR 系统的效果。OCR 算法要处理复杂的文字本身就会存在很大问题。另外,一些文字的书写规则也会产生连体字符ligatures和复合型文字compound shapes,进一步将识别复杂化。
还有就是历史文档也给现代文字带来了一些额外的问题,一份文档的年代会在多方面影响文本,比如文本行的变形,低对比度,页面损坏引起的信息缺失,page thinning, bleed through, shine through, and ink spread. 另外,多语言的文档也会带来复杂度。
要开发一个健壮的OCR系统,第二类问题就在于缺少标记数据/训练数据。利用有监督学习来训练 OCR 模型,文档的多样性[BT14]导致很难收集全数据的所有代表。对于很多语言文字来说缺少训练数据阻碍了 OCR系统的开发。
3.1-3.4 讨论的是 拉丁和希腊语的 OCR 存在的问题 ,这些文字 字素简单,但相似字符多、decorative styles、diacritics 导致识别困难。 3.5-3.6 介绍了南亚的文字 梵文和Urdu Nastaleeq 的OCR 存在的问题 3.7 描述了 多语种文档的 OCR