




免费预览已结束,剩余93页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 9章 光学字符识别技术(上) 光学字符识别技术是计算机自动、高速地辨别纸上的文字,并将其转化为可编辑的文本的一项实用技术。它是新一代计算机智能接口的一个重要组成部分,也是模式识别领域的一个重要分支。文字识别技术的研究涉及图像处理、人工智能、形式语言、自动机、统计决策理论、模糊数学、信息论、计算机科学、语言文字学等学科,它是介于基础研究和应用研究之间的一门综合性学科。 随着计算机技术的推广应用,尤其是互联网的日益普及,人类越来越多地依赖计算机获得各种信息,大量的信息处理工作也都转移到计算机上进行。在日常生活和工作中,存在着大量的文字信息处理问题,因而将文字信息快速输入计算机的要求就变得非常迫切。现代社会的信息量空前丰富,其中绝大部分信息又是以印刷体的形式进行保存和传播的,这使得以键盘输入为主要手段的计算机输入设备变得相形见绌,输入速度低已经成为信息进入计算机系统的主要瓶颈,影响着整个系统的效率。因此,要求有一种能将文字信息高速、自动地输入计算机的方法。目前,文字输入方法主要有键盘输入、手写识别、语音输入和机器自动识别输入等。人工键盘输入方法需要经过一定时间的学习训练才能掌握;手写识别和语音输入虽然简单便捷,但其输入速度不高,对于大量已有的文档资料,采用这些方法要花费大量的人力和时间。因此,能够实现文字信息高速、自动输入的只能是计算机自动识别技术,即光学字符识别(OCR)技术。 目前文字识别技术已经广泛地应用到了各个领域中。它作为计算机智能接口的重要组成部分,在信息处理领域中可以大大提高计算机的使用效率,是办公自动化、新闻出版、计算机翻译等领域中最理想的输入方式;将庞大的文本图像压缩成机器内码可以节省大量的存储空间。 本章和第 10 章主要介绍光学字符识别中的一些关键技术,包括预处理、字符分割、特征提取、分类器设计以及后处理等。另外,会给出一些相关的算法代码。当然给出的代码只是一个雏形,只要读者在这个框架的基础上作修改,就可以构建自己的应用系统。 本章首先介绍了预处理技术及特征提取技术,其他技术将在第 10 章作详细介绍。 9.1 概述 这一小节从总体上介绍光学字符识别技术。 9.1.1 文字识别系统的构成 印刷体文字识别的原始图像是通过扫描仪、CCD 器件或传真机等获得的二维图像,它可以是灰度(Grayscale)或二值(Binary)图像,其识别过程如图 9-1 所示,它包括 6 个组成部分。 1. 预处理 预处理包括对原始图像的去噪、倾斜校正等。若输入图像不是二值图像,首先要对其进行二值化。 2. 版面分析 对文本图像进行总体分析,标识出文本段落、图像、表格区域;对文本区域进行识别处理,对表格区域进行专用的表格分析及识别处理,对图像区域进行压缩或简单存储。 3. 字符切割 先将文本图像切割为行(或列),再从图像行(或列)中分离出单个字符。当图像的质量较差时,不易进行简单的分割,常与识别过程相结合。随着单字识别率的提高,切割错误在所有错误中所占的比重不断上升,怎样实现字符的正确分割成了一个需要认真解决的问题。 4. 特征提取 从单个字符图像上提取统计特征或结构特征,是整个环节中最重要的,所提取特征的稳定性及有效性直接决定了识别的性能。在提取特征前常常先进行归一化、细化等处理。 5. 单字识别 从学习得到的特征库中找到与待识字符相似度最高的字符。为了提高识别速度,常采用树分类器。 6. 后处理 对单字识别的结果,利用词义、词频、语义等先验知识进行识别结果的确认或纠错。 9.1.2 文字识别技术 光学文字识别(OCR)技术可分为印刷体文字识别和手写体文字识别两大类,后者又可分为联机(on-line)手写体识别和脱机(off-line)手写体识别。从识别的难度来看,多体印刷体识别难于单体印刷体识别,手写体识别难于印刷体识别,而脱机手写体识别又远远难于联机手写体识别。 识别器是整个系统的核心,识别器的结构通常如图 9-2 所示。 字符的模式表达形式和相应的字典形成方法有多种,每种形式又可以选择不同的特征,每种特征又有不同的抽取方法,这就使得判别方法和准则以及所用的数学工具不同,形成了种类繁多、形式特别的文字识别方法。用于文字识别的模式识别方法可以大致分为统计模式识别、结构模式识别和人工神经网络识别。1. 统计模式识别方法 统计模式识别方法是先提取待识别模式的的一组统计特征,然后按照一定准则所确定的决策函数进行分类判别。将字符点阵看作一个整体,其所用的特征是从这个整体上经过大量的统计而得到的。统计特征抗干扰能力强,匹配与分类的算法简单,易于实现,但不足之处在于细分能力较弱,区分相似字的能力差。 在统计模式识别中,通常用特征矢量间的距离和相似度进行判别,其计算公式如下: 均方误差距离: 其他的判别方法有复合相似度、混合相似度等。为了提高单字匹配的准确度,还有一种类似于K-L 变换的特征提取方法,以及由此给出的多重相似度,它考虑了输入模式的畸变,抗干扰能力强,但计算量很大。 2. 结构模式识别方法 结构模式识别方法一般需要先抽取笔段或基本笔画作为基元,由这些基元构成部件(子模式),再由部件的组合来描述字符(模式),最后利用形式语言及自动机理论进行文法推断,即识别。然而,从字符图像中抽取笔画等基元比较困难,为了抽取笔画,通常需要对原始点阵图像进行细化处理,而且容易产生伪笔画段,给准确抽取基元造成了困难。有些研究人员采用字符轮廓结构信息作为特征,这一方案的识别结果优于抽取基元的方法,但识别方法需要进行松弛迭代匹配,耗时严重,而且对于笔画较模糊的字符图像,抽取内轮廓会遇到极大困难,外轮廓的抽取也不太稳定。也有些学者采用抽取字符图像中的关键特征点来描述字符,但是特征点的抽取易受噪声点、笔画的粘连与断裂等影响。 统计方法具有良好的鲁棒性和较好的抗干扰能力,它采用多维特征值累加的办法,把局部噪声和微小畸变淹没在最后的累加和里,但是,可以用来区分“敏感部位”的差异也随之消失,因此区分相似字的能力较差;而结构方法对结构特征较敏感,区分相似字的能力较强,因此,可以将两种方法结合起来使用,取长补短,网格化特征就是其中一种方法。将字符图像划分为若干区域,称之为“网格”,在每一个网格内提取各种特征,特征的统计以网格为单位,即使个别点的统计有误差也不会造成大的影响,增强了特征的抗干扰性。 3. 人工神经网络 人工神经网络(ANN,Artificial Neural Network)是一种模拟人脑神经元细胞的网络结构,它是由大量简单的基本元件神经元相互连接成的自适应非线性动态系统。ANN 具有一定的自适应的学习与组织能力,组成网络的各个“细胞”可以并行工作,并通过调整“细胞”间的连接系数完成分类、识别等复杂的功能。不同于传统的模式识别方法,在这种情况下,神经网络所“提取”的特征并无明显的物理含义,而是存储在神经物理中各个神经元的连接之中,省去了由人来决定特征提取的方法与实现过程。从这个意义上来说,ANN 提供了一种“字符自动识别”的可能性。此外,ANN 分类器是一种非线性的分类器,它可以提供复杂的类间分界面,这也为解决复杂分类问题提供了一种可能的解决方式。 9.1.3 印刷体汉字识别 汉字识别是模式识别的一个重要分支,也是文字识别领域最为困难的问题之一。自 20 世纪 70 年代以来,日本学者在汉字识别方面做了大量工作,提出了多种识别方法,先后研制了能识别 2000/4000个印刷体汉字和限制性手写体汉字的装置。1984 年日本研制成多体印刷汉字识别装置,经后处理后识别率可达 99.98%,识别速度大于 100 字/秒,代表了当时印刷体汉字识别的最好水平,但需要采用专用的硬件设备,价格昂贵,难以推广。我国从 70 年代末开始就进行印刷体和手写印刷体汉字识别的原理性研究,10 余年来,取得了很大进展,探索出许多新方法。自 1986 年以来,各种汉字识别软件与系统大量涌现,已进入实用阶段。系统支持简 /繁体汉字识别,解决了多字号、多字体以及中英文混排的识别问题,可以进行简单的版面分析,同时汉字识别率在样本质量较好的情况下可达 98%以上。 在汉字识别中,目前常见的识别方法有以下两种。 1. 统计识别方法 (1)模板匹配法 1966 年,IBM 公司的 Casey 和 Nagy 发表了第一篇关于汉字识别的论文,采用模板匹配法识别了一千个印刷体汉字,只能识别单一字体。模板匹配直接以像素为特征,不需要另外提取特征,其优点是识别算法与文字种类无关,且抗随机噪声,但其缺点是对伸缩、平移、旋转等变形敏感,对切分等前处理要求过高,且识别运算量大,目前使用的不多。 (2)笔画复杂性指数(Complexity Index) 笔画复杂性指数是指文字笔画的线段密度,其定义如下:cx、cy 分别反应了横向和纵向的笔画复杂性,横多的 cx 大,竖多的 cy 大。笔画复杂性指数与汉字的位移无关,受字体和字号的影响较小,但易受笔画断裂和粘连的影响,且其分类能力较差,常与另一种粗分类方法“四边码”联用。 (3)四边码(Four-side Code) 四边码是在汉字点阵图的四周各取一条带,计算其中的文字像素点数,并将它分成四级,构成一个四元组。 由于汉字边框不但含有丰富的结构信息,而且边框部分笔画一般较少,不易粘连,抗干扰能力强,但对汉字的位移和旋转比较敏感,与笔画复杂性指数正好形成互补。 (4)特征点法 特征点法的主要思想是利用字符点阵中一些有代表性的黑点(笔画)、白点(背景)作为特征来区分不同的字符。特征点包括笔画骨架线的端点、折点、歧点和交点,汉字的背景也含有一定的区别于其他汉字的信息,选择若干背景点作为特征点,有利于提高系统的抗干扰能力。其特点是能够大大压缩特征库的容量,对于内部笔画粘连字符,其识别的适应性较强、直观性好,但不易表示为矢量形式,匹配难度大,不适合作为粗分类的特征。 (5)变换特征法 对字符图像进行变换后,大大降低了图像特征的维数。由于直接求二维图像的变换系数的计算量很大,通常先采用投影法将其变为一维数据,常用的变换是二进制变换(如 Walsh、Hardama 变换、R变换),其计算虽然简单,但变换后的特征没有明显的物理意义。而更复杂的变换如 K-L 变换、Fourier变换等运算复杂度较高,K-L 变换虽然从最小均方误差角度来说是最佳的,但是运算量太大,不实用。由于这些变换不是旋转不变的,因此对于倾斜变形的字符的识别会有较大的偏差,而且变换特征与字体的关系十分密切,只能用于单体汉字识别。 (6)笔段特征法 汉字是由笔画组成的,而笔画又由笔段组成,笔段可近似为一定方向、长度和宽度的矩形段。利用笔段及笔段之间的关系组成的特征对汉字进行识别,受字体和字号的影响小,对于多体汉字的识别,获得了良好的效果。其缺点是笔段的提取会较为困难,匹配的难度大,抗内部笔画断裂或粘连能力差。 (7)包含配选法 许多汉字都有相同的偏旁、部首,由此可将汉字进行粗分类。包含选配法就是用偏旁、部首的骨架做成标准模板,分类时将输入汉字与各标准模板相与,如结果与标准模板相同,则表明输入的汉字含有该偏旁、部首,即可判别出它所属的类别。包含配选法的分类速度快,存储量小,缺点是容易受到文字笔画绝对位置移动的影响。 还有许多种不同的统计特征,如粗网格特征(Gross Meshed Feature)、笔画序列(Stroke)、脱壳透视法、差笔画法(Differential Stroke)、平均线密度(Average line density)、图描述法、几何矩特征(Geometric Moment)等,这里不一一介绍。 2. 汉字识别中的结构识别方法 主要包括抽取笔画法、松弛匹配法和非线性匹配法等。 (1)抽取笔画法 抽取笔画法是利用汉字由笔画所构成的特点进行识别,它利用汉字的结构信息来进行汉字的联机识别,在印刷体和脱机手写识别中,由于笔画提取的困难,结果不是很理想。 (2)松弛匹配法 松弛匹配法是一种基于全局特征的匹配方法,它对输入汉字作多边形近似,抽取边界线段,将这些边界线段组成临近线段表,然后用松弛匹配操作,完成边与边的匹配。这种方法利用弹性吸收汉字的变形,一个字只用一个样本。其缺点是操作速度较慢,计算量大。 (3)非线性匹配法 非线性匹配法是由 Tsukumo 等提出的,用以解决字形的位移、笔画的变形等现象。此方法试图克服从图形中正确抽取笔画的困难,以提高正确判别的能力。 目前,对有关人工神经网络汉字识别方法也进行了一系列的研究,如汉字嵌套层次特征和嵌套分层识别方法。但是,对于像汉字识别这样超多类的分类问题,ANN 的规模过大,结构也很复杂,运算复杂度太大,还远未达到实用的程度。 在分类器的设计上,由于汉字集合数量大,为了提高识别速度常采用多级分类方法,其中最为广泛采用的是两级分类器,待识汉字输入识别器时,先根据某一准则判定它属于整个汉字集合的某一子集,然后再将它与该子集中的汉字进行匹配和识别。前一级叫预分类或粗分类,后一级叫单字识别。由于每个子集的字数较少,因而可以减少逐字比较、匹配的时间。为进一步提高速度,可采用多级分类器。可以证明在假设汉字集中所有的汉字出现的概率相同,且分类过程的每一级相互独立的情况下,能缩短汉字集均匀分类的特征对应的平均分类时间;且分类的最佳子类数为对应平均识别时间为9.1.4 存在的问题 虽然文字识别(OCR)软件已经得到广泛的应用,但现有的 OCR 软件仍有很多不尽人意之处。 首先,抗干扰能力不强,对于噪声、缺损、变形及切分错误比较敏感,对识别结果不能正确给出置信度。抗干扰能力(鲁棒性)是 OCR 系统的重要性能,提高抗干扰能力可以使 OCR 系统能够识别质量较差的印刷文字,提高系统的可靠性。当然,提高抗干扰能力是有限度的,由于人具有根据语意推测文字的能力,单靠字型信息使 OCR 系统达到与人相同水平的识别能力是不可能的,重要的是让OCR 系统能够正确判断自身识别结果的置信度,如果能做到这一点,即使识别失败,系统也可以将不能识别的文字提交给用户,由用户进行修改,或移交其他功能模块进行处理。虽然在现有的 OCR 系统中,都具备“拒识”和可疑字标记的能力,但由于给出的置信度并不正确,因此利用价值不大。 其次,在用户界面和自动化程度方面还有待提高,如实现版面的自动分析与自动恢复,将印刷文本材料上面的各种插图、表格、横竖文字等自动加以区分,对于识别结果能够保持原来的排版形式、字体信息、表格和插入的图形图像,使用户能够在 Word、北大方正等排版软件中直接修改。实现印刷表格的自动录入,自动进行框线检测、栏目切分,直至将各栏目中的内容识别出来后再自动恢复成表格形式。 9.2 预处理技术 在进行印刷体汉字识别时,首先将印在纸上的汉字,经光电扫描产生模拟电信号,再通过模数转换将其转换为带灰度值的数字信号并输入计算机。纸张的薄厚度、洁白度、光洁度、油墨深浅、印刷或书写质量都要造成字型畸变,产生污点、飞白、断笔、交连等干扰。输入设备的分辨率、线性度、光学畸变、量化过程也要产生噪声。所以,在单个汉字识别之前,要对这幅带有随机干扰、噪声的整版汉字灰度值数字信号进行预处理。 汉字图像预处理一般包括二值化、行、字切分、平滑化、去噪声、规范化和细化(或抽取轮廓)等。这里使用的预处理方法有二值化、行、字切分、平滑化、抽取轮廓等。因为预处理部分在文字识别的整个过程中较靠前,而模式识别部分是在文字图像经过预处理的基础上进行的,所以对原始图形进行预处理后得到的文字图形的质量直接影响着模式识别的效果。 4719.2.1 二值化 把汉字图形带灰度电平的数字信号处理成二值(0、1)的,称为汉字图形数字信号二值化。最先得到的原始文字图形一般为 256 色灰度图。现在虽然在某些情况下可以直接得到二值图,但这通常是扫描仪器用一个固定的阈值(下面将给出说明)进行二值化的结果,效果并不满意,所以选用由系统进行二值化的方法。 如图 9-3 所示的文字图像就是一幅 256 色的灰度图。可以看到文字的骨架部分较黑,但边缘部分颜色较浅,与背景颜色相近,关键是怎样分离出边缘与背景。而且有的部分背景噪声很大,这是因为所扫的资料的反正面都有字,而这在一般的书刊、报纸都是很正常的事。所选择的二值化应充分注意到这些情况。 下面就介绍二值化方法和理论依据。在这里用 ( , )g i j 表示像素点 ( , )i j 的灰度值,按照文字识别的习惯定义方式,首先将 256 色灰度图进行规范化,即 255g = 为最黑, 0g = 为最白(通常的 256 色图形 0g = 为最黑, 255g = 为最白)。二值化后用 ( , )c i j 表示像素点值, ( , ) 0c i j = 表示背景,即白点;( , ) 1c i j = 表示文字上,即黑点。 汉字二值化的基本要求是,二值化后的图像能如实地再现原汉字。具体为: (1)笔画中不出现空白; (2)二值化后的笔画基本保持原来文字的特征。 二值化的关键在于阈值 T 的选取,常用一个形式为三元函数的阈值算子来表示阈值 T。 T = T g ( i , j) , N( i , j ) , ( i , j ) 式中 ( , )N i j 是 ( , )i j 周围局部灰度特性。 二值化有很多种算法,本章只介绍整体阈值二值化的方法。整体阈值二值化是指对一幅图像的各个部分都用同一阈值进行二值化,而不考虑图像局部的情况,即 T=Tg(i,j)。常用的整体阈值的设定方法有以下几种。 1. 人工设定整体阈值 根据实验或人的先验知识,预先给定一个固定的阈值,当 ( , )g i j T 时为文字笔画,否则为背景。这种方法简单、易实现、速度快。但是,这种方法既不能根据每幅图的具体情况修改阈值,又不能将一幅图中不同位置的不同情况区别对待。2. 由灰度级直方图确定整体阈值通常汉字图形的直方图如图 9-4 所示,从图中可以看出,汉字图形的直方图一般有两个峰值,一个峰值对应汉字笔画部分,另一个峰值对应汉字的背景部分。阈值应取在两个峰值的波谷处,波谷越陡,二值化效果越好。但是这种方法实施起来较麻烦,容易出现问题,计算量较大。 3. 二次定值法 先根据经验取 T1 作为阈值,对文字图形进行整体阈值二值化,区分出是背景还是图像。再分别求出对应 T1 的图像和背景的灰度平均值 Fa 和 Ba,定出二次选用的阈值为: 最后再用 T2 对原图进行整体阈值二值化。 用这种方法进行二值化比较好。因为这种二值化的方法,速度较快,而且对扫描前纸面、光源等不同的外界情况,阈值可以随之进行适应。T1 取 7090 比较合适。图 9-5 就是用二次定值法对图 9-3进行了二值化后的结果,其中 T1=70。9.2.2 版面分析 印刷体文字识别常遇到的识别主体不是一个文字段,而是整个版面,所以版面分析是印刷体文字识别系统的重要组成部分。它是指对印刷文档图像进行分析,提取出文本、图像、图形、表格等区域,并确定其逻辑关系,并将相应的文本块连接在一起。这一过程的自动完成算法还不是很完善,有些部分常由手工辅助完成,最终的系统能够自动完成所有的版面分析任务。 通常印刷体版面的成分和结构非常复杂、灵活。图文混排、中英文混排、不同字体、字号在不同方向上的混排大量存在;字间距、行间距、块间距变化无常。而且汉字的印刷体还有横排、竖排之分,同时,汉字、阿拉伯数字、英文字母和单词的几何特征不同(如宽高比、间距等),所以不能直接套用西方的版面分析方法。上述特点决定了如何适应汉字由部件组字与英文由字母组词之间的差异;如何针对版面规范性差、印刷质量差的情况,使用具有较强适应能力的版面分析特征;如何在版面分析算法中的各个部分都注意处理横 /竖排,成为了版面分析过程中需要解决的问题。 目前,版面分析的算法主要分为两类,一种是自顶向下的方法,另一种是自底向上的方法。 1. 自顶向下 这种版面分析方法是从整个图像入手,重视全局图像信息,根据对文档版面的形式语言描述,将图像递归分解成足够小的区域。它是一个分解的过程。优点是速度快、简单明了。但是,这种方法在分析过程中忽略了图像的细节,不适合复杂版面文档。 2. 自底向上 这种方法从图像细节入手,重视局部图像信息,将图像小区域逐步合并成较大区域,是一个合并的过程。由于重视图像细节,使得这类方法适合复杂版面。但是自底向上的方法合并过程非常复杂,速度较慢。 采取以自底向上分析为主,同时融入自顶向下的某些思想与方法,是目前公认的版面分析的发展方向。 9.2.3 倾斜度校正 通常扫描得到的文件可能由于扫描时文本摆放不正,光源位置不佳等各种原因,造成图像文件中文本有不同程度的倾斜。这种倾斜可能是整个版面都存在的问题,也可能是局部文本块存在的问题。当倾斜角度不大时,不影响识别过程,可以忽略不计。若倾斜角度较大,就影响到了垂直积分投影和水平积分投影的正确性和有效性,使版面分析行 /字切分受到干扰,不能正常进行。因此有人提出不依赖于垂直、水平积分投影的图像预处理,行 /字切分等识别处理工作,但是这些算法普遍较复杂,运算时间比较长,运算速度较慢。还有一种处理方式是先根据版面的不同倾斜方式,进行不同算法的倾斜校正,然后再进行其他处理。 1. 整体倾斜度校正 扫描得到的图像其整个版面有可能都是歪的,如图 9-6 所示,一般是由于扫描时文档没有放正造成的。当然可以人工放正,然后再扫描一次;也可以让计算机自行校正,其方法就是对整个版面进行校正,也就是对图像进行旋转。对整体图像进行旋转有两种方法: (1)只将图像进行旋转,并不扩大图像区域的面积。用这种方法处理的一个例子,如图 9-7 所示,可以看出,旋转后的图像丢失了一部分文字。这是因为旋转后图像的宽度应该比原图大一些,但是却没有扩大图像区域造成的。(2)将图像旋转,并按照旋转后新图像的宽高扩大区域。 对于文字识别系统,文字的丢失当然是不能接受的,所以选用第二种方法。 算法采用的是坐标变换的方法,先将图像以原点为中心进行旋转,分别计算旋转后图像的最高点、最低点的纵坐标 top、bottom,最左点、最右点的横坐标 left、right,然后推算出新图的宽和高,按照新的宽和高扩展图像。最后,将坐标轴的原点移到( left,bottom)。旋转的效果如图 9-8 所示。 2. 局部版面的倾斜校正 有的时候版面的倾斜只是发生在局部区域上,如图 9-9 所示,它可能是纸的褶皱现象造成的,可能是扫描时光源的影响,也可能是排版时故意这么做的。但是不论什么原因造成的局部版面倾斜,都会影响到版面分析及预处理的效果,所以也必须进行校正。 通常局部的版面倾斜角度都很小,或倾斜区域周围有很宽的空白部分,倾斜部分旋转回原来的位置时,不会造成文字丢失或覆盖其他文字的现象(否则发生倾斜的局部区域就已经覆盖了其他文字区域了)。所以就不考虑旋转后图像扩大的问题,而使用旋转算法中的第一种方法,但旋转的中心不再是左下点,而是发生倾斜区域的中心。校正后的效果如图 9-10 所示。 3. 倾斜度自动测量 版面的倾斜校正属于版面的预处理部分。它的难点是对版面图像的倾斜进行自动测量。虽然已经提出许多自动测斜的算法,但是效果不好,目前基本采用自动测量与人工辅助相结合的测量方法。 由于各行文字所构成的底部基线能够准确地反映出图像的倾斜角度,如图 9-11 所示,故将每个文字的底部基线的中点作为采样点,得到一系列坐标值(xi,yi)(i=0,1,2。)。然后使用直线拟合算法算出该直线的倾斜角度 a,最后再进行校正。直线拟和算法可以由最小二乘法推导得到,具体算法如下:476设拟合后得到的直线为: y =a +bx ,则:但是从图 9 -11 中可以看出这种算法只能测出小角度的倾斜。若倾斜角度较大,各个文字不能用连通域搜索算法分开,就无法知道倾斜角度了。所以对倾斜角度较大的版面图像,还是需要进行人工辅助测量。9.2.4 版面切分 印刷版面由文本域和附属域构成。文本域包括标题域和正文域,附属域包括图像、图形、表格等。版面分析和切分的任务就是利用各个域本身的知识,对它们进行自动切分和标识。目前的版面切分算法没有很完善的,这里不多加介绍。 9.2.5 行、字分割 文字图像经过二值化后得到的是一个整体,其中包含了字与字之间、行与行之间的空白。所以要想识别单个汉字,首先要把单个的汉字从整个图像中分离出来,这就是行切分和字切分要完成的任务。 这里介绍的是积分投影的方法,这种方法的算法简单,但适应性差。它要求文字图像不能有倾斜,且噪声较小,因此在切分行、字之前,要对文字图像进行倾斜校正,在文字识别时,要注意噪声的影响。 1. 行切分 行与行之间通常都有一定的空白间隙,下面就利用这个空白间隙进行切分。 假设经过版面分析后得到的是文本块。设文字图像中的第 i 行、第 j 列的像素值为 g(i,j)。 在行与行的空白间隙处的水平积分投影理论值为 0(由于噪声的存在,实际上可能不为 0),而文字行的水平积分投影不为 0。现在就利用这一性质进行行切分。由于图像存储的要求,将最下面一行设为第一行,行切分自下而上顺序进行,由于切分的是已经进行过版面分析的文本块,所以文字图像的第一行像素必然是某个文字行的行下界。其中 N 为文字图像的行数。 规则 1:对尚未切分的文本按照从下往上的顺序进行搜索,当搜索到第一个满足下列两个条件的像素行 i 时,第 i 行为文本行的下界。 有连续 n 行满足: 规则 2:对尚未切分的文本按照从下往上的顺序进行搜索,当搜索到第一个满足下列两个条件的像素行 i 时,第 i 行为文本行的上界。477其中 N 为文字图像的行数。 规则 1:对尚未切分的文本按照从下往上的顺序进行搜索,当搜索到第一个满足下列两个条件的像素行 i 时,第 i 行为文本行的下界。 有连续 n 行满足: 规则 2:对尚未切分的文本按照从下往上的顺序进行搜索,当搜索到第一个满足下列两个条件的像素行 i 时,第 i 行为文本行的上界。在以上两个规则中 n 、 p 、 q 、 m 、 r 、 t 均为根据实验经验得到的常数,其中 n m , p q ,r t 。所有这些参数都是为了消除噪声的影响。在实际中可以取: n =5 , p =3 , q =1 , m =3 , r =6 ,t =2 ,得到的切分结果如图 9-12 所示。2. 字切分 从左往右搜索一行文字单字的左右界,切分出单字或标点符号。对汉字文本行来说,由于存在左右分离字、宽窄字、字间交连等,加上行中混有英文、数字、符号和字间污点干扰,使得字切分比行切分困难得多。所以字切分大致分为两个过程,首先是求出文字、符号或部件的左右界线;其次是合并部件成为完整的汉字。 这里介绍的字切分算法是最大宽度回溯字切分算法。 首先,根据汉字是方块字的特点以平均行宽作为字宽 w 的参考值: 设文字的最大宽度为 Wm,回溯范围为 d,第 j 个字的起始位置为 ja,结束位置为 jb,如图 9-13所示。对应的算法如下:不存在(有交连现象),则转。若不存在(有交连现象),则转。 用字典对上述切割出的图像进行匹配,若匹配成功(证明切割正确),记下jb ,转;否则转。边界,重复以上步骤。 这种字切分算法比较简单,有一定的适应性,但运算时间长。其中 Wm、d、d 都要根据经验确定。 以上的行、字切分都是以横排版为基础的,如果处理的是竖排版的版面,就要将行和列以对偶原则处理。9.2.6 细化和规范化 细化就是将二值化文字点阵逐层剥去轮廓边缘上的点,变成笔画宽度只有一个比特的文字骨架图形。基于细化的识别方法以笔画骨架线为基础,将待识字符的笔段细化为骨架后再作进一步的分析和处理。通常在得到字符的骨架图形后,用链码跟踪的方法得到一系列链码形式的点列,然后再从点列中拟合出笔段。 细化算法的优劣对这类方法的影响很大。对细化的一般要求是保持原有笔画的连续性,不能由于细化造成笔画断开;细化为单线(一个比特);保持文字原有特征,既不要增加,也不要丢失,保持笔画特征,最好细化掉笔锋;细化结果是原曲线的中心线,保留曲线的端点,交叉部分中心线不畸变。针对各种不同的应用,国内外已发表了许多线细化算法,如 Hilditch 经典细化算法、Deutsch 算法、Pavlidis 异步细化算法、Zhang 快速并行细化算法等。然而,细化过程本身固有的弱点总是造成笔画骨架线的畸变,增加对识别的干扰,主要的畸变包括:交叉笔画畸变、转折处出现分叉笔画、失去短笔道、笔画合并。可以说,这些问题依赖细化算法本身是无法克服的,需要在后续的处理中尽量消除这些畸变的干扰,如孙星明的基于正方形的汉字细化后处理方法。 通常在特征提取之前,需要对字符图像进行规范化。所谓规范化,就是把文字尺寸变换成统一大小,纠正文字位置(平移),文字笔画粗细变换等文字图形的规格化处理。这样做有两个问题,一是字符图像的缩放可能会引入一些干扰;二是图像缩放本身的运算量较大。 可以采用一种新的处理方法来消除尺度变化对特征值的影响,首先根据原始字符图像提取特征,然后根据字符的大小对提取的特征进行变换,使之与字符的尺度无关。具体的计算方法如下: (1)估计字符的大小,如字符的高度或宽度,这个值可以在文本切分时获得。将它与标准样本的大小相比较,得到字符图像的放大倍数。 (2)在提取字符的特征之后,对所有的坐标、长度、宽度等特征除以这个放大倍数。方向特征本身与尺度无关,对于曲率的变换和宽度的变化,在特征提取时只分析它的变化趋势,即逐渐变大、变小或基本不变等,而对其具体数值并不关心,因此不必在此进行修正。 (3)为了提高对字符大小估计的准确性,还要利用识别结果进行修正,最终得到不是规范化字符的特征,而是字符“规范化”的特征。 9.2.7 预处理算法源代码示例 这里给出一些预处理相关的源代码的主要部分,完整的代码参见本书附带的光盘。 1. 版面分析 包括行的检测,以及旋转角度的检测。 /* * 光学字符识别程序 * 文件名:detect.c * 功能 :版面分析相关源代码 * modified by PRT */ #include #include #include pgm2asc.h #include gocr.h / * 检测文字行 * /* 傅立叶变换检测行 m1 - 大写字母的最上界 m2 - 小写字母的上界 m3 - 基线 m4 res.lines; if (lines-num = 0) lines-m40 = 0; lines-m30 = 0; lines-m20 = 0; lines-m10 = 0; lines-x00 = p-x; lines-x10 = 0; lines-num+; i = lines-num; if (dy res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); if (box2-c != PICTURE) if (box2-y1 - box2-y0 4) if (box2-y0 = y0 & box2-y1 x0 = x0 & box2-x1 y1 - box2-y0 + 1; end_for_each(&(JOB-res.boxlist); if (jj = 0) return 0; /* 没有检测到字符 */ my /= jj; if (my 3) return 0; /* 高度均值太小错误 */ m4pre=m3pre=y0; for (j2 = y = y0; y 存到 m1-min (m1=y) for_each_data(&(JOB-res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); yy = lines-dy * box2-x0 / (p-x); if ( box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 c != PICTURE / 没有图像 & 3 * (box2-y1 - box2-y0) 2 * my & (box2-y1 - box2-y0) y1 - box2-y0) 4) if (box2-y0 y0 - yy; end_for_each(&(JOB-res.boxlist); if (m1 = y0+dy) break; /* 没有发现别的 line */ lines-x0i = x0 + dx - 1; lines-x1i = x0; m4=m2=m1; mi=m1+my; m3=m1+2*my; jj=0; for_each_data(&(JOB-res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); yy = lines-dy * box2-x0 / (p-x); /* 检查 ij-dots, 如果字符等高,则使用 */ if (box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 c != PICTURE / 没有图像 & (box2-y1 - box2-y0) y0 = y & box2-y1 y0 y0 - yy; /* 求取 m2-max m3-min m4-max */ if ( box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 x0 = x0 & box2-x1 c != PICTURE / 没有图像 & 3 * (box2-y1 - box2-y0) 2 * my & (box2-y1 - box2-y0) y1 - box2-y0) 4) if (box2-y0 = m1 & box2-y0 y1 y1 = m1 + yy + my / 2) jj+; if (box2-y0 m2 + yy) m2 = box2-y0 - yy; if (box2-y1 m4 + yy) m4 = box2-y1 - yy; if (box2-y1 y1 m2+m4+yy ) if( get_bw(box2-x0,box2-x1,box2-y1+1 ,box2-y1+my/2,box2-p,JOB-cfg.cs,1) = 0 | get_bw(box2-x0,box2-x1,box2-y1+my/2,box2-y1+my/2,box2-p,JOB-cfg.cs,1) = 1 | num_cross(box2-x0,box2-x1,(box2-y0+box2-y1)/2,(box2-y0+box2-y1)/2,box2-p,JOB-cfg.cs)2 ) m3 = box2-y1 - yy; if (box2-y0 + box2-y1 2*(m3 + yy) & box2-y1 y1 = (m2 + m4)/2 ) m3 = box2-y1 - yy; if (box2-x1lines-x1i) lines-x1i = box2-x1; if (box2-x0x0i) lines-x0i = box2-x0; end_for_each(&(JOB-res.boxlist); #if 0 /* 测试使用 */ if (JOB-cfg.verbose) fprintf(stderr, step 1 y=%4d m1=%4d m2=%4d m3=%4d m4=%4d my=%2d chars=%3dn, y,m1,m2,m3,m4,my,jj); #endif if (m3 = m1) break; #if 1 mc = (3 * m3 + m1) / 4; ma1 = ma2 = ma3 = ma4 = i1 = i2 = i3 = i4 = jj = 0; for_each_data(&(JOB-res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); yy = lines-dy * box2-x0 / (p-x); if (box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 c != PICTURE & 2 * (box2-y1 - box2-y0) my & (box2-y1 - box2-y0) y0 - yy = m1-my/4 & box2-y0 - yy y1 - yy = m3-my/4 & box2-y1 - yy y0 - yy - m1) y0 - yy - m2) i1+; ma1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粤港澳大湾区跨境股权投资无人驾驶合作协议
- 蔬菜大棚种植与农村金融服务合作协议
- 工业机器人生产线租赁与自动化生产系统合同
- 股权转让及企业并购整合与品牌重塑协议
- 互联网游戏用户数据保密及内容管理协议
- 先进物流仓库管理员劳务派遣协议
- 企业官方小红书账号内容运营与品牌推广服务协议
- 防洪应急培训
- 护理并发症培训
- 钢筋材料采购合同(2篇)
- 交付管理体系
- 国际市场开拓策略研究
- 小儿支气管肺炎护理查房
- 新人教版数学五年级下册全册课本练习题精编可编辑可打印
- 2024年电气试验证考试题库附答案
- 《安全生产法培训》课件
- 急需学科专业引导发展清单
- 2024年山东出版集团有限公司招聘笔试参考题库含答案解析
- 氮化镓射频器件
- 习题课 理想气体的状态方程及状态变化图像
- 手术室甲状腺切除术手术配合护理查房
评论
0/150
提交评论