发明名称 多字体多字号的基于彝文字符集的印刷体字符识别方法
摘要 本发明涉及一种多字体多字号的基于彝文字符集的印刷体字符识别方法,以彝文印刷体书本或杂志单页文档为处理对象,首先将该页文档扫描为计算机中的图片文件,对图片文件中的彝文字符和标点符号、英文字母、数字常用字符进行初分割、合并、再分割的字符分割处理后,再对分割得到的每一个单个字符提取其基于周边方向贡献度的高维特征,然后用特征压缩转换矩阵将高维特征压缩成低维特征,由基于低维特征的字典三级特征匹配完成字符分类判决,再经文档后处理组合还原成计算机文本,并提示该文本中可能识别出错的字符。
申请公布号 CN100589119C 申请公布日期 2010.02.10
申请号 CN200810047813.0 申请日期 2008.05.23
申请人 中南民族大学 发明人 朱宗晓;吴显礼;刘赛;田微;程立
分类号 G06K9/68(2006.01)I 主分类号 G06K9/68(2006.01)I
代理机构 武汉开元知识产权代理有限公司 代理人 唐正玉
主权项 1、一种多字体多字号的基于彝文字符集的印刷体字符识别方法,其特征在于:(1)彝文字体采集:计算机系统首先大量扫描印刷体彝文字符的样本;采用批量处理的方式进行字符切割,建立的训练样本字符库;具体做法:样本准备:参与生成字典彝文字体样本包括黑体、宋体、微软白体、SIL体,方正彝文白体、方正彝文细黑体、方正彝文宋体、方正彝文仿宋体、方正彝文黑体、方正彝文手写体、方正彝文圆头体、方正彝文综艺体的12种字体,对这12种字体均采用三号、五号两种字号,规则、加粗两种形式,原件、一次拷贝、二次拷贝三种处理模式,300DPI、400DPI两种扫描模式,得到288套样本扫描图片,然后在样本预处理过程中采用130、150、170三种浓度进行二值化采样,共得到864套大小、形态、粗细、浓淡、模糊程度不同的彝文字典样本参与生成彝文字典;字符分割:纸质彝文文本经过扫描成为计算机中灰度图片,通过设定合适的二值化门槛将灰度图片文件变为只有0和1两种元素的二值图片文件,对二值图片文件进行图像处理,分离出其中的文字块,对文字块进行基于行投影的文字行切分,即根据图片文件在纵轴方向的投影分布情况确定出每一行的起始纵轴位置和结束纵轴位置,得到每一行的分割信息并记录下来,再进入字分割;分割好的文字行首先进行基于列投影的字初分,即根据每一行在横轴方向的投影分布情况确定出每一个字符的起始横轴位置和结束横轴位置,从而得到初分字,初分字中会出现大量将单个字符的组成部件分割成字符的情形,根据彝文字符的特点和总结出的合并规则和反合并规则,将错误分割成多个字符的部件合并成一个字符从而得到合并字,将错误合并的字符再分解开来;(2)特征字典的生成:利用采集的训练样本字符库进行基于周边方向贡献度的高维特征提取,特征提取如下:方向贡献度定义,以被研究点P为中心,在8个方向上连续黑像素数目的相对关系,i=1,2,...,8,其中,i表示方向,1i表示第i个方向连续黑像素数,得到8维特征向量,<maths num="0001"><![CDATA[<math><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mfrac><msub><mi>l</mi><mi>i</mi></msub><msqrt><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><msubsup><mi>l</mi><mi>i</mi><mn>2</mn></msubsup></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>[d1,d2,...,d8]即为P点的8维方向贡献度特征向量;如果将互为反方向的1-2,3-4,5-8,6-7相合并为一个特征,则<maths num="0002"><![CDATA[<math><mrow><msub><mi>d</mi><mn>1</mn></msub><mo>=</mo><mfrac><mrow><msub><mi>l</mi><mn>1</mn></msub><mo>+</mo><msub><mi>l</mi><mn>2</mn></msub></mrow><msqrt><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>1</mn></msub><mo>+</mo><msub><mi>l</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>3</mn></msub><mo>+</mo><msub><mi>l</mi><mn>4</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>6</mn></msub><mo>+</mo><msub><mi>l</mi><mn>7</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>5</mn></msub><mo>+</mo><msub><mi>l</mi><mn>8</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><msub><mi>d</mi><mn>2</mn></msub><mo>=</mo><mfrac><mrow><msub><mi>l</mi><mn>3</mn></msub><mo>+</mo><msub><mi>l</mi><mn>4</mn></msub></mrow><msqrt><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>1</mn></msub><mo>+</mo><msub><mi>l</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>3</mn></msub><mo>+</mo><msub><mi>l</mi><mn>4</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>6</mn></msub><mo>+</mo><msub><mi>l</mi><mn>7</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>5</mn></msub><mo>+</mo><msub><mi>l</mi><mn>8</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msub><mi>d</mi><mn>3</mn></msub><mo>=</mo><mfrac><mrow><msub><mi>l</mi><mn>6</mn></msub><mo>+</mo><msub><mi>l</mi><mn>7</mn></msub></mrow><msqrt><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>1</mn></msub><mo>+</mo><msub><mi>l</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>3</mn></msub><mo>+</mo><msub><mi>l</mi><mn>4</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>6</mn></msub><mo>+</mo><msub><mi>l</mi><mn>7</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>5</mn></msub><mo>+</mo><msub><mi>l</mi><mn>8</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>-</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><msub><mi>d</mi><mn>4</mn></msub><mo>=</mo><mfrac><mrow><msub><mi>l</mi><mn>5</mn></msub><mo>+</mo><msub><mi>l</mi><mn>8</mn></msub></mrow><msqrt><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>1</mn></msub><mo>+</mo><msub><mi>l</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>3</mn></msub><mo>+</mo><msub><mi>l</mi><mn>4</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>6</mn></msub><mo>+</mo><msub><mi>l</mi><mn>7</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>l</mi><mn>5</mn></msub><mo>+</mo><msub><mi>l</mi><mn>8</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>-</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>为该点的4维方向贡献度;周边方向贡献度:以水平1方向为例,经扫描、分割、归一化处理后得到的彝文字符;沿8个搜索方向平行将字符分成8个区域,在每个区域内,先按搜索方向求取每一层边界点的8维方向贡献度,然后取平均值向量作为该区域该搜索方向的周边方向贡献度向量(PDC)特征,则一个字符总的特征维数为:8搜索方向×8分割区域×4层深度×8维周边方向贡献度向量(PDC)特征=2048维(3)如果采用每一层边界点的4维周边方向贡献度向量(PDC),则一个字符总的特征维数为:8搜索方向×8分割区域×4层深度×4维周边方向贡献度向量(PDC)特征=1024维(4)方向贡献度特征提取算法:A.将检验过规范样本文件中的一个字的64*64点阵读入基本点阵dim[64][64];B.64*64点阵dim[64][64]分为八个方向,分别按方向读入八个方向数组:WtoE[64][64]——由西向东,第1方向,从dim[0][0]读起,至dim[63][63]止;EtoW[64][64]——由东向西,第2方向,从dim[0][63]读起,至dim[63][0]止;NtoS[64][64]——由北向南,第3方向,从dim[0][0]读起,至dim[63][63]止;StoN[64][64]——由南向北,第4方向,从dim[63][0]读起,至dim[0][63]止;WNtoES[4096]——由西北向东南,第5方向,从dim[63][0]读起,至dim[0][63]止;ENtoWS[4196]——由东北向西南,第6方向,从dim[0][0]读起,至dim[63][63]止;WStoEN[4196]——由西南向东北,第7方向,从dim[0][0]读起,至dim[63][63]止;EStoWN[4196]——由东南向西北,第8方向,从dim[63][0]读起,至dim[0][63]止;C.找出八个方向矩阵与基本点阵dim[64][64]对应转换关系,将这些转换关系预先计算出来存放到特征转换文件PdcTransArray.kl中,将该文件中的数据读入PdcTrans[4096][16],转换时采用查表法;D.在方向矩阵中搜索边界点,每次搜索一个方向的一条直线,前四个方向数组直线为定长,后四个方向数组直线为每次+1或-1的变化,该直线上首先连续为1的段的第一个点为第一层边界点,中断后再次连续为1的段的第一个点即为第二层边界点,依次得到第三层边界点,第四层边界点,直到该直线结束;E.对每一个方向找到的每层边界点坐标转换到dim[i][j],再转换到八个方向数组坐标,八个方向数组坐标后连续为1的个数用来计算该字符的4维周边方向贡献度向量(PDC);计算4维周边方向贡献度向量(PDC)特征得到的特征数据记录在PdcArray[8][8][4][4]中,再写入到Pdc文件中;由全体训练样本字符的高维特征变换出特征压缩转换矩阵;用该矩阵将全体训练样本字符的高维特征压缩为低维特征;由全体训练样本字符的低维特征集生成特征字典;特征压缩:采用K-L变换,将1024维周边方向贡献度向量(PDC)特征压缩到128维,对于每一个字符,用归一化后的N个单字标准字符像作为训练样本集,每一个单字标准字符像提取其1024维周边方向贡献度向量(PDC)特征x,以该样本集的总体散布矩阵为产生矩阵,即∑=E{(x-μ)(x-μ)<sup>T</sup>}或<img file="C2008100478130004C1.GIF" wi="648" he="144" />式中,xi为第i个训练样本的1024维特征向量,μ为训练样本集的平均特征向量,M为训练样本总数,求出每一个字符的协方差矩阵,并求出协方差矩阵的平均值;下面求取1024x1024维协方差矩阵的平均值矩阵∑的特征值入i和正交归一的特征向量u<sub>i</sub>,使用豪斯荷尔德变换将1024阶实对称矩阵∑约化为对称三对角阵,再使用变形0R方法计算实对称三对角阵的全部特征值入<sub>i</sub>与相应的特征向量u<sub>i</sub>;将特征值从大到小顺序排序:λ<sub>0</sub>≥λ<sub>1</sub>≥L≥λ<sub>M-1</sub>,其对应的特征向量为u<sub>i</sub>,每一个字符的1024维特征都可以投影到u<sub>0</sub>;u<sub>1</sub>,...,u<sub>M-1</sub>张成的子空间中,因此每一个字符对应于子空间中的一个点,同样,子空间中的任一点也对应于一个字符;有了特征向量集合,任何新的待识字符样本f可以投影到M维特征空间中,表示为:(y<sub>0</sub>,y<sub>1</sub>,L,y<sub>M-1</sub>)=(u<sub>0</sub>,u<sub>1</sub>,L u<sub>M-1</sub>)<sup>T</sup>(f-μ)(6)使用K-L变换作为对字符的压缩手段,可以选取最大的前k个特征向量,使得<maths num="0006"><![CDATA[<math><mrow><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mi>k</mi></munderover><msub><mi>&lambda;</mi><mi>i</mi></msub></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo></mrow><mrow><mi>M</mi><mo>-</mo><mn>1</mn></mrow></munderover><msub><mi>&lambda;</mi><mi>i</mi></msub></mrow></mfrac><mo>&GreaterEqual;</mo><mi>&alpha;</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>在上式中,可以选取α=99%,说明样本集在前k个轴上的能量占整个能量的99%以上,维数降到了128维;在应用过程中首先生成128x1024维K-L转换矩阵(u<sub>0</sub>,u<sub>1</sub>,L u<sub>M-1</sub>)<sup>T</sup>,用这个K-L转换矩阵去乘以从Pdc文件中提取的1024维特征向量,得到128维压缩特征,再写入到Pkl文件中,Pkl文件读入计算机系统后用Pkl数据矩阵PklData[CHARMAXNUM][128]存放;特征字典的生成:特征字典包括两个文件,一个是字典文件YIDICT.dic,一个是加权系数文件YIWEIGHT.di c,字典文件是864个Pkl文件中1165个字符128维特征的平均值,每个字符的128维特征向量是该字符在864个样本中128维特征向量的平均值;每个字符的加权系数也是128维,是每个字符128维特征向量中的每一维特征向量在864个样本中方差倒数,字典文件读入计算机系统后用字典矩阵DicArray[CHARMAXNUM][128]存放,加权系数文件读入计算机系统后用加权系数矩阵WeightArray[CHARMAXNUM][128]存放;(3)特征字典的验证:将全体训练样本字符进行基于周边方向贡献度的高维特征提取;用特征压缩转换矩阵将全体训练样本字符的高维特征压缩为低维特征;将全体训练样本字符低维特征分别与特征字典进行三级匹配识别完成字符分类判决,三级距离匹配算法:样本识别首先要计算从Pkl样本特征压缩文件中提取的每个待识别字符128维压缩特征与从字典文件中提取的标准字符128维压缩特征之间的三级加权距离,每个待识别字符加权距离的计算分为三级,参数的定义如下表:第一级候选字符个数为128,第一级特征数为24,第二级候选字符个数为24,第二级特征数为48,第三级候选字符个数为10,第三级特征数为128,第一级计算对字典中全体字符的前24维压缩特征之间的加权距离,取信并采纳前128个距离较小的字符进入第二级计算,第二级计算对第一级得到的128个字符的前48维压缩特征之间的距离,取信并采纳前24个距离较小的字符进入第三级计算,第三级计算对第二级得到的24个字符的128维压缩特征之间的距离,取信并采纳前10个距离较小的字符进入该字符的候选结果集,其统一加权距离计算公式为:<maths num="0007"><![CDATA[<math><mrow><mi>d</mi><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>Level</mi></munderover><mi>WeightArray</mi><mo>[</mo><mi>objUnicode</mi><mo>]</mo><mo>[</mo><mi>i</mi><mo>]</mo><mo>&times;</mo><msup><mrow><mo>(</mo><mi>PklData</mi><mo>[</mo><mi>OCRNumber</mi><mo>]</mo><mo>[</mo><mi>i</mi><mo>]</mo><mo>-</mo><mi>DicArray</mi><mo>[</mo><mi>objUnicode</mi><mo>]</mo><mo>[</mo><mi>i</mi><mo>]</mo><mo>)</mo></mrow><mn>2</mn></msup></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>Level</mi></munderover><mi>WeightArray</mi><mo>[</mo><mi>objUnicode</mi><mo>]</mo><mo>[</mo><mi>i</mi><mo>]</mo></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中Level记录当前级中需计算距离的维数,其取值为24、48和128,WeightArray[objUnicode][i]记录该维特征的加权系数,PklData[OCRNumber][i]记录待识别字符的压缩特征,DicArray[objUnicode][i]记录字典中标准字符的压缩特征;每一级加权距离计算出来后,需计算其前若干个加权距离较小的字符进入下一级计算或进入候选结果集,这就需要对加权距离进行排序,采用的是经过改进的快速排序法:当作为基准的枢轴所处的位置序号大于候选字符个数Num时,只对枢轴之前的子序列记录进行下一轮快速排序;当枢轴的位置序号小于等于Num时,对枢轴之前的子序列记录和枢轴之后“Num-1-枢轴位置序号个记录”分别进行下一轮快速排序;最终得到前Num个最小加权距离的排序结果;由文件识别统计报告和字符识别统计报告验证该特征字典,并提供字典修正的依据;识别结果统计:由于参与生成字典的字典样本和参与测试字典的测试样本均为由Unicode码0xA000开始,到0xA48c结束的1165个彝文字符,每个字符的Unicode编码已知,如果识别出来的Unicode编码与已知编码不相符合,即可认为出错一个;统计的是一次识别率和前十次识别率,统计按统计对象可分为文件识别统计、字符识别统计和字符分布距离统计;文件识别统计是指统计在指定计算机路径下一个或多个样本文件中每一个样本文件的一次识别率和前十次识别率以及识别全部样本文件所花费的时间,用以反映对文件整体的识别准确程度和速度;字符识别统计的是指统计每一个彝文字符在一个或多个样本文件中的总的一次识别出错次数和前十次识别出错次数,用以挑选出容易识别出错的字符,为后面的出错预警和后处理校正引导方向并提供数据上的支持;字符分布距离统计是指统计参与生成字典的每一个样本中每一个字符特征与字典中标准字符特征的距离分布,用来分析多字体、多字号彝文字符集中每一个字符的字形变化情况,字形变化大的字符距离分布较远,识别出错概率较大,为出错预警的判断提供依据;(4)彝文文档识别:以彝文印刷体书本或杂志单页文档为处理对象,首先将该页文档扫描为计算机中的图片文件,对图片文件中的彝文字符和标点符号、英文字母、数字常用字符进行初分割、合并、再分割的字符分割处理后,再对分割得到的每一个单个字符提取其基于周边方向贡献度的高维特征,然后用特征压缩转换矩阵将高维特征压缩成低维特征,由基于低维特征的字典三级特征匹配完成字符分类判决,再经文档后处理组合还原成计算机文本,并提示该文本中可能识别出错的字符,识别出错预警机制:为每一个字符设定它的置信距离,用其对当前的识别距离进行判断,大于这个距离的认为可能出错,置信距离与字符分布和扫描图片的模糊程度两个因素有关,不同的字符距离分布不一样,需要对每一个字符的864个样本绘制其与字典中标准距离分布图,根据其分布情况设定其分布置信距离,目前在加权字典YIWEIGHT.dic的height字节记录了这个分布置信距离;用扫描图片所有识别字符第一选择的平均距离来代表它的模糊程度;根据模糊程度进行出错预警的步骤如下:步骤一:取下一个字符的第一距离和第二距离;步骤二:比较第一距离和80%的平均距离,如果小于80%的平均距离,则进入步骤五,否则进入步骤三;步骤三:比较第二距离和第一距离的差,如果大于10%的平均距离,则进入步骤五,否则进入步骤四;步骤四:对该字符进行出错报警;步骤五:判断该图片是否处理完,未处理完则进入步骤一,处理完则退出。
地址 430074湖北省武汉市民院路5号