Tesseract OCR 引擎-概述

1.摘要

本文将对Tesseract OCR引擎做一个综合概述,重点放在OCR引擎几个创新/不寻常的方面,尤其包括线查找(line finding),特征/分类方法(features/classification methods),以及自适应分类器(adaptive classifier).


2.简介--动机和历史

Tesseract 是由HP在1984年到1994年之间开发的一个开源OCR引擎。它就像一颗超新星,横空出现在1995年拉斯维加斯大学OCR准确率年检上[1],因其优异的成绩闪闪发光,然后以相同的神秘感销声匿迹。现在,这是第一次披露关于它详细的架构和算法。

Tesseract开始于HP Bristol实验室的博士研究项目[2],作为惠普平板扫描仪系列的合适软件或者硬件扩展,进行推动。Tesseract的设计初衷是基于一个状况:当时的商业OCR引擎还在发展初期,除了高质量的印刷字体外,其他字体表现非常糟糕。

HP Bristol实验室和HP在科罗拉多的扫描仪部门的一个联合项目之后,相比于商业引擎,Tesseract在精度上有了明显的领先,但是它依然没有成为一个产品。后一阶段的开发是一个针对压缩的OCR研究,又回到了HP Bristol实验室。工作内容更多的是集中在提高排除阻碍的效率而不是基本的准确率。1994年末,该联合项目结束,Tesseract的开发完全终止。1995年,该引擎被送到1995年拉斯维加斯大学OCR准确率年检上,在那里,证明了它的价值。在2005年,HP将其作为开源软件发布。你可以在这里下载(谷歌连接,需要翻墙,也可以在GitHub上下载)。


3.架构

因为HP独立开发了页面布局分析技术并运用到了产品当中,所以Tesseract不需要自己的页面布局分析,Tesseract也因此假定它的输入是一个任意多边形确定文本区域的二进制图像。

处理遵循传统逐步流水线过程,但是可能是不一样的。第一步是连接组件分析,存储组件的轮廓。从计算方面来讲,这在当时是一个代价很大的设计决策,但是它也有一个显著的优势:通过检查轮廓的嵌套以及子轮廓和孙子轮廓的数目,很容易检测和识别反向文本,就像识别黑白文本一样。Tesseract可能是第一个可以如此轻易处理黑白文本的OCR引擎。在这一阶段,轮廓通过嵌套被聚集在一起,成为Blobs。

Blobs组成文本行,对于固定间距和成比例的文本,分析行和区域。根据字符间隔的类型,将文本行分割成不同的单词。固定间距的文本立刻被字符单元格切割。利用确定的和模糊的空格,成比例的文本被分割成为单词。

识别,进行两段处理过程。第一段,尝试依次识别每一个单词,每一个符合要求的单词都当成是自适应分类器的的训练数据。然后,自适应分类器可以更加准确地识别页面后面的文本。

因为存在这样的情况,自适应分类器也许学习到了一些有用的信息,但是没有作用到页面前面的文本。所以,第二段过程重新处理整个页面。在这个过程中,第一段过程没有被很好识别的单词将会被再次识别一次。

最后阶段,处理模糊的空格和检查x高度的可替代假设来定为小覆盖文本。

4.行和词的查找

4.1行查找

Tesseract中被预先发布了的很少一部分,行查找算法就是其中之一[3]。因为行查找算法的设计,歪斜的页面可以在不必纠偏的情况下被识别。挽救了图像质量的损失。这个处理过程的关键部分是blob过滤和行构造。
假设页面布局分析已经提供了文本大小大致相同的文本区域,用一个简单的百分比高度过滤器去除首字母下沉和垂直接触的字符。平均高度近似这个区域的文本大小,所以过滤一些比平均高度小的部分的blobs是安全的,比如像标点符号、符合和噪声。
过滤后的blobs 更适合非重叠、平行但是行倾斜的模型。排序和处理blobs的x坐标可以将这些blobs分配到一个唯一的文本行,同时跟踪页面的倾斜,在有倾斜的页面中,大大降低了分配到一个不正确的文本行的可能。一旦过滤的blobs被分配到行,最小平方拟合[ 4 ]将被用来估计基线,过滤掉的blobs被安装回适当的行。
行创建的过程的最后一步是合并一些水平上至少重叠一半的blobs,将一些可区别的标记按照正确的基线放在一起,正确的关联一些破损字符。

4.2基线拟合

一旦文本行找到了,用二次样条更精准的拟合基线。这是一个OCR系统的另一个首次,使Tesseract可以处理带有曲线基线[ 5 ]的页面,这是在扫描常见的伪影,不只是在书籍装订中。

基线的拟合是通过将blobs划分成原始直线基线的连续位移组来拟合的。在最稠密的分割上用一个二次样条拟合,(假设是基线)的最小二乘拟合。二次样条的优点是这种计算相当稳定,但在需要多个样条线段时会出现不连续性的缺点。传统的三次样条可能表现更好。


1是一个带有拟合基线、上缘线、中线和下缘线的文本行例子,所有这些线都是平行的(整个长度的y间隔是一个常量),并且带有轻微弯曲。上缘线是蓝绿色,它上面的黑线是直的。仔细观察可以发现,蓝绿色的线相对于它上面的黑色直线是弯曲的。

4.3固定字宽的检测和截断

Tesseract测试文本行,判断他们是否固定字宽。在找到固定字宽的文本的地方,Tesseract使用这个宽度将单词截断成为字符,and disables the chopper and associator on thesewords for the word recognition step. 

4.4成比例单词查找

非固定间距或比例文本间距是一个非常不平凡的任务。图3举例说明了一些典型的问题。“11.9%”中的十位的间隔与一般的空格相同,必然地大于“erated”和“junk”之间的间隔。在‘of’和“financial”之间甚至没有水平间隔。Tesseract通过在有限的垂直范围内,测量基线和中线的间隔,来处理这些问题。在这个阶段接近阈值的空格设置为模糊的,因此在单词识别之后可以做出最后的决定。

5.单词识别

任何字符识别引擎的识别过程的一部分是识别一个词应该如何分割成字符。行查找的初始分割结果是首次分类。单词识别步骤的其余部分只适用于非固定字宽文本。

5.1截断连在一起的字符

当一个单词的结果不符合要求的时候,Tesseract会通过截断字符分类器中最差可信度的blob。候选字符截断点的选择来源于轮廓近似多边形的凹面顶点,也可以是凹面顶点的对立点,或者线段。
成功的分割ASCII字符集中的连接字符可能需要3对截断点。

图4展示了带有箭头指示的截断点候选集合,以及被选择的被选择的截断点所组成的‘r’和“m”之间的连接线。

截断点执行按照优先级顺序。任何不能提高结果可信度的截断将不会被执行,但是也不会被完全丢弃,如果需要,这些截断将在后面被associator再次利用。

5.2关联损坏字符

当一个可能的截断被执行后,如果这个单词依然不够好,将这个单词交给associator。associator最大限度的截断blobs进行所有可能的组合,在分割图中将做一个最好优先搜索,并生成候选字符。它做这些实际上并没有构建分隔图,而是对访问状态构建一个哈希表。最好优先搜索过程是将新的候选状态推进一个优先队列中,并分类未分类片段的组合来评估他们。
完全截断然后关联,是非常低效的,也许会遗漏重要的截断,这可能是事实。但是优点是截断然后关联的策略简化了被要求维持完全分隔图的数据结构。


当最好优先分割搜索第一次在1989应用时,Tesseract的在破损字符上的准确率遥遥领先于当时的商业引擎。图5是一个典型的例子。该成果的重要的部分就是字符分类器可以轻易识别破损字符。

6.静态字符分类器

6.1特征

一个Tesseract的早期版本使用来源于Shilman等人成果中的拓扑特征[7-8],虽然非常好的独立于字体和大小,但是这些特征对于真实生活中的图片所存在的问题不是很理[9]。一个折中的办法将多边形近似分割片段的使用关联特征。但是这种方法也对于损坏了的字符也不是很理想。比如在图6(a)中,轴的右侧是两个主要部分,但是在图6 (b)中只有一个。


具有突破性的解决办法是,未知特征没必要与训练数据中的特征相同。在训练的时候,多边形近似的片段作为特征,但是在识别的时候,小的固定长度的特征从轮廓中提取出来
匹配多对一的训练数据聚类原型特征。在图6(c)中,短的粗的线就是从未知字符中提取的特征,细的长的线是被当成原型的多边形近似的聚合片段。一个连接两块的原型是完全不匹配的。一边的三个特征和另一边的两个特征也是不匹配的,但是除此之外,每一个原型和每一个特征都是非常匹配的。这个例子展示了小特征匹配大原型的过程是很容易
处理破损图片等识别的。它主要的问题是计算未知字符和原型的距离时的计算代价非常高。

从未知字符中方提取特征是这样三维的,(x,y位置信息,angle角度 ),一个字符中一般有50到100个特征。原型特征是四维的,(x,y位置,angle角度,length长度),一个原型结构一般都10到20个特征。

6.2分类

分类按照两步处理进行。第一步,class pruner创建一个未知字符可能匹配的字符类别的候选名单。从三维查询表中,从可能匹配的类别的位向量中,从叠加所有特征的位向量中获取每一个特征。有最高通缉数量的类别,将组成下一步要使用的候选列表。
未知字符的每一个特征,查询给定的可能匹配的字符类别原型的位向量。然后计算他们之间的相似度。每一个原型字符类别用乘积表达式的逻辑和表示,每一项叫做外形。
因此,距离计算过程记录了每个外形(原型)中每个特征的总相似性程度。从总结的特征和原型证据中计算出的最佳组合距离是所有存储外形类别中最好的。

6.3训练数据

因为分类器可以识别破损的字符,所有,分类器不在破损字符上进行训练。事实上,分类器在同种大小8种字体94个字符中的20个例子中训练。但是附带四个参数 (normal, bold, italic,bold italic)  ,产生了60160个训练例子。这是一个与其他以及发布的分类器的重要对比,比如超过一百万例子的Calera分类器和1175000训练数据100种字体的Baird分类器。

7.语言学分析


Tesseact只有相当少点语言学分析。无论何时,一个词识别模型是在考虑一个新的划分,语言学模型在下列各种类别中选择最可能的字串:频率最高的词,最高字典序的词,最高数值的词,最高大些词,最高小写词,分类器选择最优词。对于一个给定的分割最后选择的是这样的词,它具有最低的总距离,其中以上的每一个类别,乘以一个不同的常量。

来自不同分割的词可能有不同数量的字符。直接比较这些单词是比较困难的,即使一个分类器产生了一个Tesseract没能产生的概率。在Tesseract中,这个问题的解决是通过每个字符分类产生两个数。第一个叫做置信度,从原型中减去归一化距离。这么做使得置信度表示数值更大则更好,但是它仍然是一个距离,如同,距离0越远,距离愈好。第二个叫做等级,未知字符总的轮廓长度乘以原型的归一化距离。一个单词中的字符的等级可以有意义的概括,因为一个单词中所有字符总的轮廓长度总是相同的。

8.自适应分类器

OCR引擎可以从自适应分类器的使用中受益这一点以及被阐明[11-12]。因为静态分类器必须擅长归纳任何种类的字体,它区别不同字符和字符与非自负的能力是很弱的。一个对字体更加敏感的的自适应适配器,通过静态分类器的输出进行训练,通常被用来获得更好的识别力,其中,字体的数量是有限的。

Tesseract没有使用模版分类器,但是使用了如同静态分类器相同的特征和分类器。在静态分类器和自适应分类器中唯一显著的区别,除了训练数据,就是自适应分类器使用同性基线/x高度归一化,而静态分类规范特征的质心(矩)位置和大小归一化二阶各向异性。
基线/x高度规范化使得它更容易区分大写和小写字符以及改善对噪声斑点的免疫力。字符矩标准化的主要好处是去除字体的长宽比和一定程度的字体笔划宽度。这也使得识别上标和下表变得简单,但需要一个额外的分类器的特征来识别一些大写和小写字符。图7显示3个字符在基线/高度的归一化形式和矩的归一化形式的例子。

[1] S.V. Rice, F.R. Jenkins, T.A. Nartker,The Fourth AnnualTest of OCR Accuracy, Technical Report 95-03, InformationScience Research Institute, University of Nevada, Las Vegas,July 1995.

[2] R.W. Smith,The Extraction and Recognition of Textfrom Multimedia Document Images,PhD Thesis, Universityof Bristol, November 1987.

[3] R. Smith, “A Simple and Efficient Skew DetectionAlgorithm via Text Row Accumulation”,Proc. of the 3rdInt.Conf. on Document Analysis and Recognition(Vol. 2), IEEE1995, pp. 1145-1148.

[4] P.J. Rousseeuw, A.M. Leroy,Robust Regression andOutlier Detection, Wiley-IEEE, 2003.

[5] S.V. Rice, G. Nagy, T.A. Nartker,Optical CharacterRecognition: An Illustrated Guide to the Frontier, KluwerAcademic Publishers, USA 1999, pp. 57-60.

[6] P.J. Schneider, “An Algorithm for Automatically FittingDigitized Curves”, in A.S. Glassner,Graphics Gems I,Morgan Kaufmann, 1990, pp. 612-626.

[7] R.J. Shillman,Character Recognition Based onPhenomenological Attributes: Theory and Methods,PhD.Thesis,Massachusetts Institute of Technology. 1974. 

[8] B.A. Blesser, T.T. Kuklinski, R.J. Shillman, “EmpiricalTests for Feature Selection Based on a PscychologicalTheory of Character Recognition”,Pattern Recognition8(2),Elsevier, New York, 1976.

[9] M. Bokser, “Omnidocument Technologies”,Proc. IEEE80(7), IEEE, USA, Jul 1992, pp. 1066-1078.

[10] H.S. Baird, R. Fossey, “A 100-Font Classifier”,Proc. ofthe 1stInt. Conf. on Document Analysis and Recognition,IEEE, 1991, pp 332-340.

[11] G. Nagy, “At the frontiers of OCR”,Proc. IEEE80(7),IEEE, USA, Jul 1992, pp 1093-1100.

[12] G. Nagy, Y. Xu, “Automatic Prototype Extraction forAdaptive OCR”,Proc. of the 4thInt. Conf. on DocumentAnalysis and Recognition, IEEE, Aug 1997, pp 278-282.

[13] I. Marosi, “Industrial OCR approaches: architecture,algorithms and adaptation techniques”,DocumentRecognition and Retrieval XIV,SPIE Jan 2007, 6500-01. 




猜你喜欢

转载自blog.csdn.net/fei13971414170/article/details/73014154