法律状态公告日
法律状态信息
法律状态
2019-09-10
未缴年费专利权终止 IPC(主分类):G06K9/00 授权公告日:20070815 终止日期:20180923 申请日:20050923
专利权的终止
2007-08-15
授权
授权
2006-04-26
实质审查的生效
实质审查的生效
2006-03-01
公开
公开
技术领域
印刷体阿拉伯字符集文本切分方法属于光学字符识别(OCR)中的字符切分领域。
背景技术
阿拉伯语是联合国工作语言之一,在埃及、阿尔及利亚、摩洛哥、沙特阿拉伯等国家广泛使用。维吾尔、哈萨克、柯尔克孜语是我国重要的少数民族语言,虽然和阿拉伯语不属于同一语系,但是都借用阿拉伯字符书写,只是字符集稍有不同。在本发明中,阿拉伯、维吾尔、哈萨克等使用阿拉伯字符集书写的文本统称为阿拉伯字符集文本,并简记为阿文文本。无论是国内还是国际,识别阿文文本都有迫切的现实需求和广泛的应用前景。
阿文文本中,阿文字符从右向左书写,其他语言的文字(例如汉字、英文、数字)从左向右书写。标准阿拉伯文有28个基本字符,维吾尔文有32个基本字符。每个阿文字符有1-4种书写形式:尾部与下一字符连接的首写形式;首尾与相邻字符连接的中间形式;首部与上一字符连接的尾写形式;首尾与相邻字符都不相连的独立形式。每个阿文字符由一个主体部分和若干个与主体部分不连接的附加部分组成,附加部分的位置可以在主体部分的上方、下方或者中间,标准阿拉伯文字符的附加部分是1-3个点以及
一般的印刷体阿文文本识别系统如图3所示:预处理部分增强输入的文本图像;文字行切分部分把多行文本区域切分成文字行;联体字符段切分部分把文字行分割成互不相连的联体字符段;切割部分把联体字符段分解成字符或笔画等基本部件;识别部分提取有效特征,利用分类器识别切割出来的部件;后处理部分利用词典、语言模型等手段,修正识别错误,提高文本识别率。
根据切割和识别之间的关系,系统可分为先切割后识别,边切割边识别和不切割整体识别三类:
第一,先切割后识别(图3中路径(1)和路径(2)无效)。该类系统首先把联体字符段切割成字符或者笔画,然后识别切割得到的部件,并组合这些部件为字符识别结果。该类方法不受词典大小的限制,可以识别任意字符串的组合,能够处理大(无限)词汇情况。
第二,边切割边识别(图3中路径(1)有效无效均可,路径(2)有效)。该类系统在识别之前不必须进行字符切割(路径1无效时,则预先进行切割),而是借助识别结果获得字符切分结果。字符边界是识别结果的伴随产物。该类方法依赖于字体,计算量大,对形变敏感。如果中间某个字符识别错误,或者一个字符是另外字符的一部分,其后的字符识别结果都会受到影响。
第三,不切割整体识别(图3中路径(1)有效,路径(2)无效)。该类系统不需要识别出每个字符,而是直接识别整个联体字符段,从而避免了切割。该类方法从语音识别发展过来,只能处理小(有限)词汇情况。
因为一般的印刷体阿文文本,具有词汇量大,使用字体多,但是排版比较规范的特点,所以先切割后识别的方法是最合适的。因此,设计印刷体阿文文本切分算法是实现印刷体阿文文本识别系统的关键。目前,印刷体阿文文本识别的研究远远落后于其它广泛使用的文字(如拉丁字母、汉字、日文等)的原因,主要就在于没能很好解决印刷体阿文文本切分的问题。例如:水平投影切分文字行的方法不能处理倾斜文本或者文字行之间存在粘连字符的情况;大量的字符附加部分会模糊文字行之间的界限,或者产生伪文字行;竖直投影切分联体字符段的方法不能处理相邻联体字符段水平重叠的情况;一般的字符切分方法只是在基线上寻找字符切点,但是实际上部分字符可能在基线上方或者下方粘连。
发明目的
本发明的目的就是要提供一种可靠的多字体多字号印刷体阿文文本切分的方法。如图4所示:本发明在字符块分类的基础上,切分文本图像为文字行,然后估计文字行的基线和头线位置,切分文字行成联体字符段,最后根据字符切点位置的特点寻找所有的候选切点。根据本发明实现的印刷体阿文文本切分方法,已经应用于一个印刷体阿文文本识别系统。
技术方案
本发明的特征在于通过如下措施把输入的印刷体阿文文本图像正确切分成单个的字符图像。
1文字行切分
文字行切分的目的是把文本区域切分成连续的文字行。水平投影是最直接的行切分方法,但是不能处理倾斜文本。此外,由于阿文文本中存在大量与字符主体部分不相连的字符附加部分,所以水平投影得到的空白间隙既可能是文字行间的空白,也可能是文字行内字符附加部分和主体部分之间的空白。部分投影和部分轮廓跟踪相结合的方法能够处理倾斜方向不变的文本,但是不能处理行间字符粘连的情况。
为了解决上述问题,本发明提出了如下文字行切分方法(图5):在字符块分类的基础上,选择部分字符块水平投影,把输入文本图像分割成子区域;然后检测多行子区域,归并字符块实现多行子区域的文字行切分;最后切割行间粘连的字符块,并根据距离信息把小字符块归入所属文字行。该文字行切分方法不仅能够处理无倾斜的文本,还能够处理倾斜、行间字符存在粘连的文本。
1.1字符块分类
令I表示输入的文本图像,H是I的高度,W是I的宽度。I上的字符块C表示为
其中C(y,x)=1表示黑像素,C(y,x)=0表示白像素,l、t、r、b、w和h分别表示C的左边界、上边界、右边界、下边界、宽度和高度(图6)。I上所有的字符块BLOCK={CnB|nB=1,2,...,nBlock}。在本发明中,使用附加了各种上下标的C表示特定的字符块(例如CnB,C(line)等),附加了同样上下标的l、t、r、b、w和h分别表示该字符块的左边界、上边界、右边界、下边界、宽度和高度(例如hnB,r(line)等)。
根据高度和宽度信息,可以把所有的字符块分成三类:MIDDLE类是一般的阿文联体字符段,高度比较固定;BIG类包括行间粘连的字符,高度最高;SMALL类包括较小的孤立字符、字符附加部分以及标点等,高度矮,宽度也短。
本发明由下式确定CnB的类别,
其中
是所有字符块的平均高度。
1.2子区域切分
为了去除字符附加部分以及行间粘连字符的影响,只保留MIDDLE类字符块进行水平投影。则水平投影值为0的位置把文本区域分割成多个子区域。每个子区域包含一条或多条文字行。
1.3多行子区域检测
如图7所示,多行子区域一定存在多组水平重叠、竖直不重叠的联体字符段,而单行子区域不存在满足条件的联体字符段组。
因此,在每个子区域内找到所有水平重叠、竖直不重叠的MIDDLE类字符块组
CC={(CI,DJ)|XOL(CI,CJ)>0,YOL(CI,CJ)=0,CI∈MIDDLE,CJ∈MIDDLE}。
其中,
XOL(CI,CJ)=max(min(rI,rJ)-max(lI,lJ),0),
表示CI和CJ在水平方向上的重叠长度,
YOL(CI,CJ)=max(min(bI,bJ)-max(tI,tJ),0),
表示CI和CJ在竖直方向上的重叠长度。如果‖CC‖>10,就可以判定该子区域是多行子区域。
1.4多行子区域切分
因为阿文文本从右向左书写,所以按照右边界降序排列多行子区域内部所有的MIDDLE类字符块。按顺序每次取出一个字符块,第n次取出的字符块表示为Cn。Cn和已经取出的所有字符块C1,C2,...,Cn-1比较,找到竖直方向上重叠最多的字符块CY,即
若Cn和CY竖直重叠部分足够大,即
YOL(Cn,CY)>h/2,
Cn和CY就属于同一文字行,否则Cn属于新文字行。取出所有字符块后,就得到了多行子区域的文字行切分结果。
1.5切分BIG类字符块
因为BIG类字符块是行间粘连的字符块,所以需要在跨越文字行处进行切分。如果字符块CB∈BIG跨越了多条文字行,那么在跨越的每条文字行内,在CB附近一定都存在字符块和CB竖直重叠。
因此,本发明采用下面的办法切分BIG类字符块:
对于每个字符块CB∈BIG,在文字行L(nL)内寻找字符块C(nL)(nL=1,2,..,nLine),即
其中
表示第nL条文字行内,在CB附近和CB竖直重叠的所有MIDDLE类字符块,
表示CNB(nL)和CB之间的水平距离。这样C(nL)就是在NB(nL)中和CB水平距离最近的字符块。
若C(m)和C(m+1)存在,就说明CB跨越了第m条和m+1条文字行,需要在
也就是跨越文字行的地方切分CB。
在所有跨越文字行处切分CB,标记每个部分为MIDDLE类,然后分配到相应的文字行。
1.6插入SMALL类字符块
对于每个字符块CS∈SMALL,计算CS和每条文字行的距离,并把其分配到距离最近的文字行。计算CS和文字行L(nL)的距离的方法如下:
首先,在L(nL)内CS的左侧寻找水平距离CS最近的MIDDLE类字符块Cl,即
其中
然后,在L(nL)内CS的右侧寻找水平距离CS最近的MIDDLE类字符块Cr,即
其中
那么,CS和文字行L(nL)的距离为
2基线和头线估计
因为阿文字符在基线上连接,所以文字行基线定位对于字符切分非常关键。当前处理的文字行图像用L表示,HL是L的高度,WL是L的宽度。
2.1基线高度估计
从图2可以看出,文字行L中连接字符的基线的高度是相同的。因此,L中出现频率最高的竖直黑像素游程的长度就是基线的高度。
本发明用三元组(y(s),y(e),x(se))表示竖直黑像素游程,其中y(s)是游程的竖直起始位置,y(e)是游程的竖直终止位置,x(se)是游程的水平位置。
则L中高度为runH的竖直黑像素游程的数目为
runH=1,2,...,HL。
由此可得基线的高度为
2.2基线位置估计
理想情况下,文字行内所有联体字符段的基线都在同一水平直线上。但是实际的扫描文本图像中,文字行通常存在小角度的倾斜或者弯曲形变,导致不同联体字符段的基线位置不一定相同。为了解决上述问题,本发明把较长的文字行分成多个较短部分分别估计基线位置,这样就可以认为每个部分内的基线位置是相同的。
把文字行L分成
个部分,每个部分的长度为α×H0。令HP(nP)(y)(y=0,1,...,HL-1)是L只保留第nP部分图像的水平投影结果,那么第nP部分的基线位置为,
其中BTop(nP)和BBtm(nP)分别表示基线的上边界和下边界。在实际系统中,α可以在10~15之间取值。这样就可以得到L任意处的基线位置,
其中l(nP)和r(nP)分别是第nP部分的左、右边界。
2.3头线位置估计
如图2所示,去除附加部分后,阿文字符的顶端和基线上边界的距离可以明显分成两类:一类为高字符顶端和基线上边界的距离;一类为低字符顶端和基线上边界的距离。头线位置指的是低字符顶端的位置。
令UL(x)(x=0,1,...,WL-1)是文字行L去除附加部分后的上轮廓,则
EL={x|UL(x)<UL(x-1),UL(x)<UL(x+1),1≤x<WL-1},
是UL(x)极小点的集合。
本发明利用两次求距离均值的方法,区分高字符顶端和低字符顶端到基线上边界的距离。
定义
则可得
H1就是头线和基线上边界之间的距离。
3联体字符段切分
得到文字行后,需要把文字行切分成联体字符段。每个联体字符段由一个主体部分和若干附加部分组成。竖直投影的方法不能处理相邻联体字符段在水平方向重叠的情况,因此本发明根据基线位置和字符块类别标记联体字符段的主体部分,然后根据距离信息归并联体字符段的主体部分和附加部分。
本发明面认定下面两种类型的字符块是联体字符段的主体部分:被基线穿过的MIDDLE类字符块;被基线穿过并且在水平方向上不和其他字符块重叠的SMALL类字符块。部分SMALL类字符块之所以被认为是联体字符段主体部分,是因为这些字符块可能是标点或者孤立字符。剩余的SMALL类字符块则属于联体字符段的附加部分。
对每个属于联体字符段附加部分的SMALL类字符块CS搜索最近的属于联体字符段主体部分的字符块CM,则CS和CM是同一个联体字符段的附加部分和主体部分。CS和CM的距离定义为
DIS(CS,CM)=|lS+rS-lM-rM|。
4字符切分
字符切割是把联体字符段切分成单个字符的过程。当前处理的联体字符段图像用P表示,HP是P的高度,WP是P的宽度。本发明把字符切点分成在基线上的切点,在基线上方的切点及在基线下方的切点三类。依图8所示,本发明依次搜索每类所有可能的切点位置,然后检查切点的合法性,最后把附加部分分配给相应的字符主体部分。
4.1在基线上的候选切点
如图9所示,在基线上的切点处满足如下情形之一:
(A)游程数目改变。字符左边界,竖直游程数目从1增加到2以上;字符右边界,竖直游程数目从2以上减少为1。
(B)游程数目不变,但长度发生较大变化。字符左边界,上轮廓和/或下轮廓的位置远离基线区域;字符右边界,上轮廓和/或下轮廓的位置回归基线区域。
(C)游程数目不变,上轮廓位置逐渐变化,导致上轮廓位置累积发生较大变化。字符左边界,上轮廓位置逐渐远离基线区域;字符右边界,上轮廓位置逐渐回归基线区域。
定义函数D(x)描述P的上、下轮廓和基线之间的距离,
D(x)=max(BTop(x)-UP(x),0)+max(VP(x)-BBtm(x),0),x=0,1,...,WP-1,
其中UP(x)和VP(x)分别是P去除附加部分后的上轮廓和下轮廓。
这样,在基线上的候选切点xO满足下述条件(1)和(2)或者条件(1)和(3),条件(1)(2)(3)各式中的“+”运算和“-”运算分别对应字符的左侧切点和右侧切点:
(1)切点xO在基线上:
D(xO)≤2;
(2)切点情形(A)或(B):
D(xO±1)-D(xO)>1.5×H0;
(3)切点情形(C):
其中e满足xO±e∈EP,EP是RP(x)极小点的集合;
4.2基线上方的候选切点
如图10所示,如果位置xT是基线上方的候选切点,那么xT必须满足如下条件:
(1)切点本身是上轮廓的极低点:
UP(xT)>UP(xT-1),UP(xT)>UP(xT+1);
(2)上轮廓在切点位置处于头线上方:
UP(xT)<BTop(xT)-H1;
(3)切点左侧下轮廓的最低点在基线的下方:
(4)切点右侧下轮廓的最低点在基线的下方:
4.3基线下方的候选切点
如图11所示,如果位置xB是基线下方的候选切点,那么xB必须满足如下条件:
(1)切点左侧3列上轮廓的最高点TL在基线的上方:
(2)切点本身及右侧3列上轮廓的最高点TR在基线的下方:
(3)TL和TR高度差大于两倍基线高度:
TR-TL>2×H0。
4.4检查切点的合法性
从右到左依次检查每个切点的合法性,并删除不合法切点。如果相邻两个切点之间的距离小于基线的高度而且两个切点之间的字符高度小于2倍基线高度,那么左侧的切点就是一个不合法的切点。具体方法如下:设xr和xl是两个相邻的切点,其中xr>xl,若
则删除切点xl。
4.5附加部分分配
当连续两个字符都拥有附加部分时,附加部分(图12)也有可能粘连。如果一个附加部分和多个字符的主体部分在水平方向上重叠,则该附加部分是粘连的。若该附加部分跨越xR和xL两个相邻切点,则在xB和xL之间附加部分竖直投影值最小处切分附加部分。
粘连的附加部分切分完毕后,就要把每一个附加部分分配给最近的字符主体部分。附加部分CA和字符主体部分CM的距离为
DIS(CA,CM)=|lA+rA-lM-rM|。
根据本发明实现的阿文文本切分算法,已经应用于一个印刷体阿文文本识别系统。300DPI分辨率扫描的黑白二值阿拉伯文及维吾尔文的报纸和期刊用来测试该系统,识别结果如表1。其中只有30%左右的错误是因为切分错误引起的,也就是说字符切分的准确率在99%以上。试验结果能够说明本发明提出的印刷体阿文文本切分方法的有效性。
表1试验结果
本发明提出的多字体多字号印刷体阿文文本切分方法在实验中获得了优异的文本切分性能,具有广泛的应用前景。综上所述,本发明具有以下优点:
第一,本发明提出的在字符块分类的基础上,先水平投影把文本区域分割成子区域,然后在多行子区域内部归并字符块实现文字行切分的方法不仅能够处理水平无倾斜的文本,还能处理倾斜角度大,存在行间字符粘连的文本。
第二,本发明提出的基线、头线位置估计方法准确率高。
第三,本发明提出的联体字符段切分方法,能够处理相邻联体字符段在水平方向重叠的情况。
第四,本发明能够寻找在基线上的切点,在基线上方的切点及在基线下方的切点,能够切割粘连附加部分,并且利用结构规则删除经常出现的过切分点。字符切点查全率高,伪切点数目少。
附图说明
图1标准阿拉伯文基本字符集
图2阿文文本特点
图3印刷体阿文文本识别系统结构图
图4发明主要内容的流程
图5文字行切分流程
图6坐标系及变量说明
图7多行子区域检测
图8字符切分流程
图9在基线上的切点特点
图10基线上方切点特点
图11基线下方切点特点
图12附加部分切分
具体实施方式
一个印刷体阿文文本识别系统在硬件上由图像采集设备和计算机两部分构成。图像采集设备一般是扫描仪,用来获取待识别文本的数字图像。计算机用于对数字图像进行处理,完成文本的最终识别。
对于一篇阿文文本样张,首先通过扫描仪将其扫入计算机,使之变为数字图像。对数字图像采取二值化、去除噪声等预处理措施,得到二值图像。再对输入图像进行行切分得到文本行,估计文本行的基线、头线位置,把文本行切分成联体字符段。在此基础上对每一个连体字符段进行单字切分,得到单个字符,然后识别单个字符。每个阶段的错误可以用手工方式改正。
因此,实现实用的印刷体阿文文本识别系统,在文本切分方面需要考虑如下几个方面:文字行切分;基线和头线位置估计;联体字符段切分;字符切分。下面分别对这四个方面进行详细介绍:
第一,文字行切分
1.1字符块分类
根据高度和宽度信息,把文本图像I上的所有字符块{CnB|nB=1,2,...,nBlock}分成三类:
其中
1.2子区域切分
只保留MIDDLE类字符块水平投影,水平投影值为0的位置把文本区域分割成多个子区域。每个子区域包含一条或多条文字行。
1.3多行子区域检测
对每个子区域求出
CC={(CI,CJ)|XOL(CI,CJ)>0,YOL(CI,CJ)=0,CI∈MIDDLE,CJ∈MIDDLE}。
其中,
XOL(CI,CJ)=max(min(rI,rJ)-max(lI,lJ),0),
YOL(CI,CJ)=max(min(bI,bJ)-max(tI,tJ),0)。
如果‖CC‖>10,就判定该子区域是多行子区域。
1.4多行子区域切分
按照右边界降序排列多行子区域内部所有的MIDDLE类字符块。按顺序每次取出一个字符块Cn和已经取出的所有字符块C1,C2,...,Cn-1比较,找到竖直方向上重叠最多的字符块CY,即
若Cn和CY竖直重叠部分足够大,即
YOL(Cn,CY)>h/2,
Cn和CY就属于同一文字行,否则Cn属于新文字行。取出所有字符块后,就得到了多行子区域的文字行切分结果。最后把所有子区域的所有文字行按照从上到下的顺序排列。
1.5切分BIG类字符块
对于每个字符块CB∈BIG,在文字行L(nL)内寻找字符块C(nL)(nL=1,2,..,nLine),即
其中
若C(m)和C(m+1)存在,就说明CB跨越了第m条和m+1条文字行,需要在
处切分CB。在所有跨越文字行的位置把CB切分成多个部分,标记每个部分为MIDDLE类,然后分配到相应的文字行。
1.6插入SMALL类字符块
对于每个字符块CS∈SMALL,计算CS和每条文字行的距离,并把其分配到距离最近的文字行。
计算CS和文字行L(nL)的距离的方法如下:寻找满足条件的字符块Cl和Cr,即
其中
则CS和文字行L(nL)的距离为
第二,基线和头线估计
当前处理的文字行图像用L表示,HL是L的高度,WL是L的宽度。
2.1基线高度估计
令
runH=1,2,...,HL。
则可得基线的高度为
2.2基线位置估计
把文字行L分成
个部分,每个部分的长度为15×H0。令HP(nP)(y)(y=0,1,...,HL-1)是L只保留第nP部分图像的水平投影结果,那么第nP部分的基线位置为,
其中BTop(nP)和BBtm(nP)分别表示基线的上边界和下边界。这样就可以得到L任意处的基线位置,
其中l(nP)和r(nP)分别是第nP部分的左、右边界。
2.3头线位置估计
令UL(x)(x=0,1,...,WL-1)是文字行L去除附加部分后的上轮廓,则
EL={x|UL(x)<UL(x-1),UL(x)<UL(x+1),1≤x<WL-1},
是UL(x)极小点的集合。
定义
则可得
H1就是头线和基线上边界之间的距离。
第三,联体字符段切分
每个联体字符段由一个主体部分和若干附加部分组成。被基线穿过的MIDDLE类字符块以及被基线穿过并且在水平方向上不和其他字符块重叠的SMALL类是联体字符段的主体部分。剩余的SMALL类字符块则属于联体字符段的附加部分。
对每个属于联体字符段附加部分的SMALL类字符块CS搜索最近的属于联体字符段主体部分的字符块CM,则CS和CM是同一个联体字符段的附加部分和主体部分。CS和CM的距离定义为
DIS(CS,CM)=|lS+rS-lM-rM|。
第四,字符切分
当前处理的联体字符段图像用P表示,HP是P的高度,WP是P的宽度。
4.1在基线上的候选切点
定义
D(x)=max(BTop(x)-UP(x),0)+max(VP(x)-BBtm(x),0),x=0,1,...,WP-1,
其中UP(x)和VP(x))分别是P去除附加部分后的上轮廓和下轮廓。
在基线上的候选切点xO满足(1)和(2)或者(1)和(3),下面各式中的“+”运算和“-”运算分别对应字符的左侧切点和右侧切点:
(1)切点xO在基线上:
D(xO)≤2;
(2)切点情形(A)或(B):
D(xO±1)-D(xO)>1.5×H0;
(3)切点情形(C):
其中e满足xO±e∈EP,EP是UP(x)极小点的集合。
4.2基线上方的候选切点
基线上方的切点xT必须满足如下条件:
(1)切点本身是上轮廓的极低点:
UP(xT)>UP(xT-1),UP(xT)>UP(xT+1);
(2)上轮廓在切点位置处于头线上方:
UP(xT)<BTop(xT)-H1;
(3)切点左侧下轮廓的最低点在基线的下方:
(4)切点右侧下轮廓的最低点在基线的下方:
4.3基线下方的候选切点
基线下方的切点xB必须满足如下条件:
(1)切点左侧3列上轮廓的最高点TL在基线的上方:
(2)切点本身及右侧3列上轮廓的最高点TR在基线的下方:
(3)TL和TR高度差大于两倍基线高度:
TR-TL>2×H0。
4.4检查切点的合法性
从右到左依次检查每个切点的合法性,并删除不合法切点。具体方法如下:设xr和xl是两个相邻的切点,其中xr>xl,若
则删除切点xl。
4.5附加部分分配
如果附加部分和多个字符的主体部分在水平方向上重叠,则附加部分是粘连的。若该附加部分跨越xR和xL两个相邻切点,则在xR和xL之间附加部分竖直投影值最小处切分附加部分。
最后把每个附加部分分配给最近的字符主体部分。附加部分CA和字符主体部分CM的距离计算公式为
DIS(CA,CM)=|lA+rA-lM-rM|。
机译: 字符集,以阿拉伯文本中的表单文本并置
机译: 基于有效阿拉伯文本特征提取的阿拉伯文本识别系统和方法
机译: 基于有效阿拉伯文本特征提取的阿拉伯文本识别系统和方法