专利详情

标题图像中数学公式的自动识别方法
[标]当前申请(专利权)人南开大学
申请日2008年6月6日
申请号CN200810053443.1
公开(公告)日2008年12月24日
公开(公告)号CN101329731A
授权日-
法律状态/事件驳回
专利类型发明申请
发明人史广顺 | 肖萃
受理局中国
当前申请人(专利权)地址300071天津市南开区卫津路94号 (天津,天津,南开区)
IPC分类号G06K9/20 | G06K9/46 | G06K9/62
国民经济行业分类号C3479 | O8129
代理机构天津佳盟知识产权代理有限公司
代理人侯力
被引用专利数量125
专利价值-

摘要

一种图像中数学公式的自动识别方法。包括:建立数学公式句法结构模型,建立数学公式底层知识库;图像中数学公式的定位;数学符号的识别;数学公式结构的分析与理解,数学公式结构的表示与格式化输出。本发明针对脱机数学公式图像的识别与理解难题,设计了一整套方法模型,形成了全流程、自动化处理数学公式图像的方法。该方法可实现对文档图像中独立行/嵌入式数学公式的自动判定和提取,从而满足数学公式图像自动录入、数学公式结构理解与格式重现的应用需求。该方法可与现有的普通文字OCR系统相互融合,形成功能更为完整的文档图像处理系统。也可支撑其他领域的表达式处理方法研究,如针对化学方程式的自动处理等。

1、一种图像中数学公式的自动识别方法,其特征在于包括以下步骤:

第1、建立数学公式句法结构模型,

采用四元组G=(V,S,P,T)形式描述,即为:数学公式句法结构=(版面关系,字符集,句法规则,语法规则),其中,

版面关系:指数学公式的版面结构,包括构成公式的所有符号的内容、字体、字号,以及符号之间的空间位置关系;

字符集:组成一个数学公式的所有符号,包括所有操作符与操作数;根据符号内容调用相应的语法规则,确定符号之间的组合关系,检查符号出现的合法性;

语法规则:主要定义了符号所具有的语法信息,包括符号自身的语法属性和符号之间的约束关系和组合关系,包括操作属性、语法属性、判定规则、特殊组合规则、子表达式组合规则等信息,同时用于对定位及识别结果的校验和修正错误!未找到引用源。;

句法规则:句法规则是为以后扩展语义所服务的,它定义了所有类型操作符之间的优先级别、操作符的目类型,即操作符所拥有的子表达式的个数,和各种类型子表达式的组合结构和约束关系;主要用于分析不同运算符之间的优先级顺序,消除数学符号的多义性,并指导数学公式转换为其他的结构描述形式;

第2、建立数学公式底层知识库,包括:

符号信息:符号图像和符号内容;

语法信息:符号的操作属性、符号的语法属性或称符号的类别、符号语法属性的判定规则、符号具有的组合关系;

句法信息:符号的目类型、子表达式的组合关系和判定规则、操作符的优先级别;

第3、图像中数学公式的定位,

数学公式的定位方法为:将输入的图像进行区域和行切分,得到版面元素集合;然后,对不同的版面元素进行特征分类,从而定位出全部数学公式的独立图像,包括独立行公式和内嵌公式两类;

版面元素的特征分类由特征向量决定,

特征向量x=(HT,AS,BS,LI,RI,LD,TD,MS,SC),其中,

(1)行高:                HT=h/h0                   (1-1)

(2)上行间距:            AS=as/h0                  (1-2)

(3)下行间距:            BS=bs/h0                  (1-3)

(4)行左缩进:            LI=li/l                   (1-4)

(5)行右缩进:            RI=ri/l                   (1-5)

(6)公式编号和公式的距离:LD=ld/h0                  (1-6)

(7)有无二维结构:        TD={1|if存在二维结构}     (1-7)

(8)有无特殊数学符号:    MS={1|if存在特殊数学符号} (1-8)

(9)区域中的最大连通体尺寸:SC=Max(Max(HCCXi,WCCXi))i=0..n,

HCCXi,WCCXi分别代表区域中的第i个连通体的高度和宽度,n是区域中连通体的数目,公式中的h是行的实际高度,l是行的实际长度,h0是行内所有字符的平均高度;

第3.1、独立行公式的定位方法,

独立行公式是文档图像中的一个特殊独立行,定位过程为:

第3.1.1、对文档图像进行区域划分,我们应用在X-Y方向反复投影的方法,通过寻找版面中的较大投影空白,将文档切分为较小的独立区域,得到多个版面区域元素;

第3.1.2、对不同版面区域元素的特征向量进行判定,过滤掉图、表元素;

第3.1.3、将每个独立区域投影到Y轴,对区域进行行切分,得到行元素;

第3.1.4、将行元素的特征向量带入分类器,得到最终分类结果;

在系统的实现中我们使用parzen window的方法对文本行和公式行的先验概率分布进行估计;

使用已知类别的样本对未知的类条件概率密度p(x|ωj)进行估计,这实际上是分类器的训练过程,Parzen分类器的训练方法是:设任一类别ωk有Nk个训练样本那么Parzen分类器就由核函数以及窗宽度hk决定,公式(3-1)是最常使用的核函数,其中是p(x|ωk)的估计量,是类别的训练样本的协方差矩阵;

p ^ ( x | ω k ) = 1 N k Σ j = 1 N k [ 1 ( 2 π ) n / 2 h k n | Σ ^ k | 1 / 2 exp { - 1 2 h k 2 ( x - x j k ) T Σ ^ k - 1 ( x - x j k ) } ] - - - ( 3 - 1 )

得到估计以后,根据最小错误率的Bayes分类准则分类了,即:

p ( x | ω i ) P ( ω i ) = max max j = 1,2 , . . . , k { p ( x | ω j ) P ( ω j ) } ⇒ x = ω i ;

第3.2、内嵌公式的定位方法,

内嵌数学公式是和普通文字混合在一起的,为了实现公式与文本的分离,需要采用自底向上的方法,先将文字行打碎,然后在打碎的文字行中通过二维特征或识别特征的提取,挑出内嵌数学公式;通过下面两个步骤,对打碎的单词进行特征分类,以实现内嵌公式的定位:

第3.2.1、第一步是应用单词的二维特征,除标点符号外,一个正常单词的所有符号的主要部分都集中在baseline和meanline之间,由于数学公式内部存在二维空间结构,符号的位置不在同一水平线上,在一个单词中,当处于meanline和baseline区域之外的连通体数量nab满足公式 n ab n > T ab , 那么这个单词就被认定具有二维结构,是一个内嵌公式,其中n是单词内的总符号数目,nab是单词内异常符号数目,Tab是判决为内嵌数学公式的阈值;

第3.2.2、第二步是判断单词中是否具有特殊的数学符号,对于不存在二维结构的隐式内嵌公式,需要使用识别特征寻找单词中的数学符号,当存在数学符号就可以认定这个单词是内嵌公式,或内嵌公式的一个组成部分,然后将已定位部分向两端扩展,定位出完整的内嵌公式;

第4、数学符号的识别

数学符号识别的主要作用是:识别公式中的数学字符,保存字符版面信息,为结构分析模块提供必要信息,识别方法如下:

第4.1、字符切割

在字符识别前,需要从定位出的公式图像中,得到独立的字符图像;我们采用寻找连通体的方法,完成公式图像中字符的切割;另外,在得到所有连通体后,对以下三种字符结构情况,还需要进行连通体合并,得到完整的字符图像,

(1)字符在垂直方向可分为多个连通体,

(2)字符在水平方向可分为多个连通体,

(3)大连通体包含小连通体;

第4.2、普通数学字符的识别

对普通数学字符的识别基于两类特征:字符结构特征与字符统计特征;

1)字符统计特征的抽取:

令待识别符号ω图像为Iw,ω的外接矩形坐标是(0,0,w,h),把ω均分成4×4个小块,每个小块上计算3个特征:块黑像素密度、块重心水平、竖直坐标,定义:

δ ( x , y ) = 1 0 < x ≤ 1,0 < y ≤ 1 0 else - - - ( 8 - 1 )

M ( x , y ) = Σ i = 0 w Σ j = 0 h δ ( x - i , y - j ) I w ( i , j ) - - - ( 8 - 2 )

黑象素密度,块重心水平坐标,块重心竖直坐标则根据下列公式计算:

f ‾ 1 = ∫ 0 h ∫ 0 w M ( x , y ) dxdy h × w - - - ( 8 - 3 )

f ‾ 2 = ∫ 0 h ∫ 0 w M ( x , y ) xdxdy ∫ 0 h ∫ 0 w M ( x , y ) dxdy - - - ( 8 - 4 )

f ‾ 3 = ∫ 0 h ∫ 0 w M ( x , y ) ydydx ∫ 0 h ∫ 0 w M ( x , y ) dxdy - - - ( 8 - 5 )

把f1,f2,f3映射到[0,255],得到最终使用的特征







计算每个小块的得f1,f2,...,f48;计算整个符号的得到f49,f50和f51;

计算整个符号的宽高比r并映射到[0,255],用f52表示;

r = w h - - - ( 8 - 9 )



这样,字符ω可以用识别特征向量feat表示,feat=(f1,f2,...,f52);

其中,符号h表示字符实际高度;符号w表示字符实际宽度;

2)字符结构特征的抽取:

如果待识别字符ω的所有训练字样ωi在点(x,y)处的取值都相同,那么点(x,y)就是一个稳定点;否则点(x,y)就是一个非稳定点;根据式(8-11)和式(8-12),得到ω的稳定黑点图B及稳定白点图W;

B ω = ∩ i I ω i - - - ( 8 - 11 )

w ω = ∪ i I ω i - - - ( 8 - 12 )

然后分别对B和W进行黑特征点抽取和白特征点抽取,得到待识别字符结构ω的识别结构特征;

第4.2.1、首先应用字符统计特征进行粗分类,计算待识别字符与样本字符的统计特征向量距离,并选择距离较小的样本作为候选识别结果;定义向量距离函数如下:

DIS ( feat 1 , feat 2 ) = Σ i = 1 52 ( feat 1 · f i - feat 2 · f i ) 2 52 - - - ( 8 - 13 )

那么满足式(8-14)的符号ωk就是待识别符号ω的候选识别结果。

DIS ( feat ω , feat ω k ) = min ω i ∈ Ω DIS ( feat ω , feat ω i ) - - - ( 8 - 14 )

其中,符号DIS表示特征向量间的距离;feat表示特征向量;fi表示特征元素;

第4.2.2、应用字符的结构特征对上步确认的候选字进行验证,通过待识别字符与候选样本字符间黑点图与白点图的匹配,选择失配点最少的样本作为最终识别结果;

第4.3、特殊数学字符的识别

特殊符号指的是宽高比例r不固定的符号,包括:水平直线,竖直直线,水平方向箭头,竖直方向箭头,根号;特殊字符的识别需要针对不同符号的特殊结构特征,设计符号专用的识别分析方法:

第4.3.1、方向箭头识别,利用投影的方法,将方向箭头符号分成三个部分:符号头部、符号尾部和符号中部,符号中部是一条或两条直线,很容易识别,而符号头部和符号尾部的形状比较复杂,采用了特征点匹配的识别方法;在符号识别阶段,对宽高比例异常的符号利用投影的方法被切割成三部分分别识别,如果三个部分的识别结果能够组合成合法的方向箭头符号,那么这个方向箭头符号就是识别结果;

第4.3.2、根号识别,根据根号的结构和语法特征,我们定义以下条件,如果一个待识别字符ω满足这些条件,我们就认为它是一个根号:

(1)ω外接矩形面积大于一般符号的外接矩形面积;

(2)ω所在区域包含其他符号;

(3)从ω左侧向右或下侧向上,沿扫描线深入ω所在区域超过一半,不会遇到黑像素阻挡;

(4)ω最上部存在一条水平直线;

(5)ω最下部存在一个拐点;

第4.3.3、竖直直线识别,如果待识别符号ω的宽高比r<TVLR,并且ω不是竖直箭头符号,那么就认为ω就是竖直直线;其中TVLR是竖直直线宽高比例的最大阈值;竖直直线除了可以作为一个符号单独存在以外,还有可能是符号“||”的一部分,所以,如果存在两条竖直直线相邻,并且高度相同,距离接近,那么就合并这两条竖直直线为“||”;

第4.3.4、水平直线识别,如果待识别符号ω的宽高比r>THLR,并且ω不是水平箭头符号,那么就认为ω就是水平直线;其中THLR是水平直线宽高比例的最小阈值;水平直线的含义很多,我们可以根据其上方和下方存在的符号的数量,以及这些符号和水平直线的位置关系,来对水平直线具体内容进行判断;

第4.4、基于熵与熵降的专用识别分类器设计

字符识别分类器用于快速找到与待识别字符特征匹配的样本字符,从而得到准确的识别结果;该识别分类器选用决策树作为本识别的模型,在分类树的建立过程中使用基于熵降的聚类算法;决策树的建立过程如下,

[决策树建立算法]

初始状态:输入对象为数学符号集中所有字符,建立空的决策树根节点,

步骤1:初始化当前节点类别信息;

步骤2:设计数参数N值为1;

步骤3:使用K-means聚类算法,对节点字符集中的字符进行聚类,K取值为当前N值;

步骤4:记录增益最大的聚类结果;

步骤5:令N值加1,若N值小于阈值,重复步骤3;

步骤6:将聚类结果保存到当前决策树节点中;

步骤7:若当前节点没有达到叶节点,建立新节点,重复步骤1;

在决策树的每一层聚类过程中,根据样本符号的特征向量反复使用K-means聚类算法聚类,并选取具有最大增益的分类作为当前节点的聚类结果;这样的策略能够保证每一次的聚类都是增益最大,保证了熵降比较大和覆盖比较小之间的一个最优平衡;

第5、数学公式结构的分析与理解

基于数学公式结构描述规则库,采用“自顶向下”的处理流程对数学公式的结构进行迭代式的分析;首先通过版面信息找到公式的核心骨干层次,然后利用语法和句法规则将该层次转换为一棵能反映公式正确计算顺序和结构的句法树;当该层次全部分析完成,再从公式中找到次级核心骨干层次,对句法树进行扩充;不断重复这一过程,直到公式结构分析全部完成;

本文采用树型结构描述数学公式,每一个操作符的树型结构都是与其对应的句法规则的一个实例;处理流程描述如下:

[数学公式结构分析算法]

初始状态:处理对象为公式中所有符号,创建空的根结点,

步骤1:进行版面结构分析,提取第一层次的所有字符;

步骤2:应用语法规则,确定核心操作符集;

步骤3:应用句法规则,判断操作符优先级,按优先级顺序将核心操作符的子表达式结构填充到结构树中;

步骤4:选择公式中次高级别的骨干层次作为下一个处理对象,跳至第一步,循环重复,直至结构分析完成;

采用以上算法,数学公式图像的识别结果可以最终被组织成遵循计算顺序的树型结构;

第6、数学公式结构的表示与格式化输出

第6.1、针对数学公式的版面结构,其表示和格式化输出体现在以下几个方面:

第6.1.1、自动转化为LATEX、或MathML格式,实现版式重现;

第6.1.2、兼容各种数学公式编辑器,将识别和分析结果自动输入到公式编辑器中,为下一步的手工修改和编辑奠定基础;

第6.2、针对数学公式的语义结构,其表示和格式化输出体现在以下几个方面:

第6.2.1、以运算符和定界符为线索,将数学公式依据优先级和运算关系转化为语义结构树,清晰表达数学公式含义;

第6.2.2、将数学公式语义结构自动转化为Matlab计算工具的程序代码,实现自动化编程;或自动转化为MathML脚本语言,满足数学公式的网络化传播。

【技术领域】:

[0001]本发明属于计算机图像识别与处理技术领域,特别涉及图像中数学公式的识别与处理。

【背景技术】:

[0002]图像中数学公式的自动识别与理解,是文档图像处理与模式识别领域的世界级难题。数学公式是非常复杂的一种文档结构,广泛存在于各类文献书籍与技术资料中。由于数学符号的多义性和数学公式结构的多变性,使得数学公式难以被计算机进行自动处理,难于在Internet上进行广泛传播,大量的数学公式依然以图像的方式进行保存,这大大降低了数学领域知识共享与信息检索的效率,也给教育、科研、工程技术等领域的信息化工作制造了巨大的障碍。

[0003]数学公式图像的识别与理解方法的发展主要受到以下几类技术的影响和制约:

[0004]1.文档图像处理技术。

[0005]文档图像不仅包含数学公式,还包含普通文本以及图表。因此,需要首先对文档图像版面结构和逻辑结构进行分析和理解,然后从文档图像中确定数学公式的位置,从而将公式图像提取出来。

[0006]目前,OCR技术已经非常成熟,通用文档图像处理系统能够较好的完成一般文档图像从版面分解到最终版面恢复输出的全过程。但不同于普通文本图像,由于数学公式复杂的版面及语义特征,到目前为止,仍然没有完整、实用的数学公式图像自动处理方法和系统出现。

[0007]2.字符切分及识别技术。

[0008]数学公式符号识别就是在数学公式定位以后,切割并识别出数学公式中的所有符号。

[0009]目前,商业OCR系统能很好地处理1-D文本,能够将文本图像切分并识别转化为与之相对应的字符。但数学公式通常不是1-D的,且字符大小不一,符号出现的频率也不同于普通文本,而且公式中经常会出现希腊字母、运算符号等一般OCR识别引擎不能识别的符号。因此许多针对普通文本的方法用于数学公式符号识别时往往会适得其反,使得一般OCR系统对数学公式无能为力,公式符号识别率往往降到10%左右,甚至更低。

[0010]3.表达式结构描述及分析方法。

[0011]要实现对数学公式结构的正确识别和理解,首先就需要建立数学公式结构描述模型,准确地反映出公式图像和语义之间的关系。并在此基础上,设计分析流程,完成对数学公式图像结构的识别和理解。

[0012]近二十年来,研究者们提出了多种数学公式结构分析的处理方法。但是,单纯依靠版面信息无法有效消除数学符号的歧义性,不能准确理解数学公式的计算含义;单纯依靠语义语法规则又无法有效检查并纠正数学公式图像识别结果中的错误,鲁棒性不足。因此,对于数学公式的2-D结构及语义的多义性,还没有实用的理解方法。

[0013]到现在为止,在世界范围内,还没有出现成熟的、满足实际应用的数学公式图像自动处理系统。在所有的商用OCR软件中,都没有提供“数学公式的符号识别与结构理解”的功能。

【发明内容】:

[0014]本发明目的是解决现有图像中数学公式的自动识别与理解问题,提供一种图像中数学公式的自动识别方法。

[0015]本发明提供的图像中数学公式的自动识别方法,包括以下步骤:

[0016]第1、建立数学公式句法结构模型,

[0017]采用四元组G=(V,S,P,T)形式描述,即为:数学公式句法结构=(版面关系,字符集,句法规则,语法规则),如附图2所示。

[0018]版面关系:指数学公式的版面结构,包括构成公式的所有符号的内容、字体、字号,以及符号之间的空间位置关系;

[0019]字符集:组成一个数学公式的所有符号,包括所有操作符与操作数;根据符号内容调用相应的语法规则,确定符号之间的组合关系,检查符号出现的合法性;

[0020]语法规则:主要定义了符号所具有的语法信息,包括符号自身的语法属性和符号之间的约束关系和组合关系,包括操作属性、语法属性、判定规则、特殊组合规则、子表达式组合规则等信息,同时用于对定位及识别结果的校验和修正错误!未找到引用源。;

[0021]句法规则:句法规则是为以后扩展语义所服务的,它定义了所有类型操作符之间的优先级别、操作符的目类型,即操作符所拥有的子表达式的个数,和各种类型子表达式的组合结构和约束关系;主要用于分析不同运算符之间的优先级顺序,消除数学符号的多义性,并指导数学公式转换为其他的结构描述形式;

[0022]第2、建立数学公式底层知识库,包括:

[0023]符号信息:符号图像和符号内容;

[0024]语法信息:符号的操作属性、符号的语法属性或称符号的类别、符号语法属性的判定规则、符号具有的组合关系;

[0025]句法信息:符号的目类型、子表达式的组合关系和判定规则、操作符的优先级别;

[0026]第3、图像中数学公式的定位,

[0027]数学公式的定位方法为:将输入的图像进行区域和行切分,得到版面元素集合;然后,对不同的版面元素进行特征分类,从而定位出全部数学公式的独立图像,包括独立行公式和内嵌公式两类;数学公式的定位方法模型如附图3所示。

[0028]版面元素的特征分类由特征向量决定,

[0029]特征向量x=(HT,AS,BS,LI,RI,LD,TD,MS,SC),其中,

[0030](10)行高:                HT=h/h0                      (1-1)

[0031](11)上行间距:            AS=as/h0                     (1-2)

[0032](12)下行间距:            BS=bs/h0                     (1-3)

[0033](13)行左缩进:            LI=li/l                      (1-4)

[0034](14)行右缩进:            RI=ri/l                      (1-5)

[0035](15)公式编号和公式的距离:LD=ld/h0                     (1-6)

[0036](16)有无二维结构:        TD={1|if存在二维结构}        (1-7)

[0037](17)有无特殊数学符号:    MS={1|if存在特殊数学符号}    (1-8)

[0038](18)区域中的最大连通体尺寸:SC=Max(Max(HCCXi,WCCXi))i=0..n,

[0039]HCCXi,WCCXi分别代表区域中的第i个连通体的高度和宽度,n是区域中连通体的数目,公式中的h是行的实际高度,l是行的实际长度,h0是行内所有字符的平均高度;

[0040]第3.1、独立行公式的定位方法,

[0041]独立行公式是文档图像中的一个特殊独立行,定位过程为:

[0042]第3.1.1、对文档图像进行区域划分。我们应用在X-Y方向反复投影的方法,通过寻找版面中的较大投影空白,将文档切分为较小的独立区域,得到多个版面区域元素;

[0043]第3.1.2、对不同版面区域的特征向量进行判定,过滤掉图、表元素;

[0044]第3.1.3、在将每个独立区域投影到Y轴,对区域进行行切分,得到行元素;

[0045]第3.1.4、将行元素的特征向量带入分类器,得到最终分类结果;

[0046]在系统的实现中我们使用parzen window(Richard O.Duda Peter E.Hart David G StorkPattern Classification Second Edition 2001 John Wiley&Sons,Inc.)的方法对文本行和公式行的先验概率分布进行估计;

[0047]使用已知类别的样本对未知的类条件概率密度p(x|ωj)进行估计,这实际上是分类器的训练过程,Parzen分类器的训练方法是:设任一类别ωk有Nk个训练样本x1 k,x2 k,......,那么Parzen分类器就由核函数以及窗宽度hk决定,公式(3-1)是最常使用的核函数,其中是p(x|ωk)的估计量,是类别的训练样本的协方差矩阵;

[0048] p ^ ( x | ω k ) = 1 N k Σ j = 1 N k [ 1 ( 2 π ) n / 2 h k n | Σ ^ k | 1 / 2 exp { - 1 2 h k 2 ( x - x j k ) T Σ ^ k - 1 ( x - x j k ) } ] - - - ( 3 - 1 )

[0049]得到估计以后,根据最小错误率的Bayes分类准则分类,即:

[0050] p ( x | ω i ) P ( ω i ) = max max j = 1,2 , . . . , k { p ( x | ω j ) P ( ω j ) } ⇒ x = ω i .

[0051]第3.2、内嵌公式的定位方法,

[0052]内嵌数学公式是和普通文字混合在一起的,为了实现公式与文本的分离,需要采用自底向上的方法,先将文字行打碎,然后在打碎的文字行中通过二维特征或识别特征的提取,挑出内嵌数学公式;通过下面两个步骤,对打碎的单词进行特征分类,以实现内嵌公式的定位:

[0053]第3.2.1、第一步是应用单词的二维特征,除标点符号外,一个正常单词的所有符号的主要部分都集中在baseline和meanline之间,baseline与meanline的位置如附图4所示。由于数学公式内部存在二维空间结构,符号的位置不在同一水平线上,在一个单词中,当处于meanline和baseline区域之外的连通体数量nab满足公式 n ab n > T ab , 那么这个单词就被认定具有二维结构,是一个内嵌公式,其中n是单词内的总符号数目,nab是单词内异常符号数目,Tab是判决为内嵌数学公式的阈值;通过在不同的阈值取值下,进行测试,选择实验结果最好的取值,作为最终的阈值。

[0054]第3.2.2、第二步是判断单词中是否具有特殊的数学符号,对于不存在二维结构的隐式内嵌公式,需要使用识别特征寻找单词中的数学符号,当存在数学符号就可以认定这个单词是内嵌公式,或内嵌公式的一个组成部分,然后将已定位部分向两端扩展,定位出完整的内嵌公式;

[0055]第4、数学符号的识别

[0056]数学符号识别的主要作用是:识别公式中的数学字符,保存字符版面信息,为结构分析模块提供必要信息。识别方法模型如附图5所示。

[0057]第4.1、字符切割

[0058]在字符识别前,需要从定位出的公式图像中,得到独立的字符图像。我们采用寻找连通体的方法,完成公式图像中字符的切割。另外,在得到所有连通体后,对以下三种字符结构情况,还需要进行连通体合并(在字符切分的过程中,我们所列出的三种情况的字符会被切分为多个连通体,无法得到字符完整的图像。因此,在切分后,需要针对这三种情况进行判断,合并相关联的连通体,得到字符完整图像),得到完整的字符。

[0059](1)字符在垂直方向可分为多个连通体,例如“i”,

[0060](2)字符在水平方向可分为多个连通体,例如“<<”,

[0061](3)大连通体包含小连通体,例如“Θ”。

[0062]第4.2、普通数学字符的识别

[0063]对普通数学字符的识别基于两类特征:字符结构特征与字符统计特征;

[0064]1)字符统计特征的抽取:

[0065]令待识别符号ω图像为Iw,ω的外接矩形坐标是(0,0,w,h),把ω均分成4×4个小块,每个小块上计算3个特征:块黑像素密度、块重心水平、竖直坐标,定义:

[0066] δ ( x , y ) = { 1 0 < x ≤ 1,0 < y ≤ 1 0 else - - - ( 8 - 1 )

[0067] M ( x , y ) = Σ i = 0 w Σ j = 0 h δ ( x - i , y - j ) I w ( i , j ) - - - ( 8 - 2 )

[0068]黑象素密度,块重心水平坐标,块重心竖直坐标则根据下列公式计算:

[0069] f ‾ 1 = ∫ 0 h ∫ 0 w M ( x , y ) dxdy h × w - - - ( 8 - 3 )

[0070] f ‾ 2 = ∫ 0 h ∫ 0 w M ( x , y ) xdxdy ∫ 0 h ∫ 0 w M ( x , y ) dxdy - - - ( 8 - 4 )

[0071] f ‾ 3 = ∫ 0 h ∫ 0 w M ( x , y ) ydydx ∫ 0 h ∫ 0 w M ( x , y ) dxdy - - - ( 8 - 5 )

[0072]把f1,f2,f3映射到[0,255],得到最终使用的特征

[0073]

[0074]

[0075]

[0076]计算每个小块的得到f1,f2,...,f48;计算整个符号的得到f49,f50和f51;计算整个符号的宽高比r并映射到[0,255],用f52表示;

[0077] r = w h - - - ( 8 - 9 )

[0078]

[0079]这样,字符ω可以用识别特征向量feat表示,feat=(f1,f2,...,f52);

[0080]其中,符号h表示字符实际高度;符号w表示字符实际宽度。

[0081]2)字符结构特征的抽取:

[0082]如果待识别字符ω的所有训练字样ωi在点(x,y)处的取值都相同,那么点(x,y)就是一个稳定点;否则点(x,y)就是一个非稳定点;根据式(8-11)和式(8-12),得到ω的稳定黑点图B及稳定白点图W;

[0083] B ω = ∩ i I ω i - - - ( 8 - 11 )

[0084] w ω = ∪ i I ω i - - - ( 8 - 12 )

[0085]然后分别对B和W进行黑特征点抽取和白特征点抽取,得到待识别字符结构ω的识别结构特征;

[0086]第4.2.1、首先应用字符统计特征进行粗分类,计算待识别字符与样本字符的统计特征向量距离,并选择距离较小的样本作为候选识别结果;定义向量距离函数如下:

[0087] DIS ( feat 1 , feat 2 ) = Σ i = 1 52 ( feat 1 · f i - feat 2 · f i ) 2 52 - - - ( 8 - 13 )

[0088]那么满足式(8-14)的符号ωk就是待识别符号ω的候选识别结果。

[0089] DIS ( feat ω , feat ω k ) = min ω i ∈ Ω DIS ( feat ω , feat ω i ) - - - ( 8 - 14 )

[0090]其中,符号DIS表示特征向量间的距离;feat表示特征向量;fi表示特征元素。

[0091]第4.2.2、应用字符的结构特征对上步确认的候选字进行验证,通过待识别字符与候选样本字符间黑点图与白点图的匹配,选择失配点最少的样本作为最终识别结果;

[0092]第4.3、特殊数学字符的识别

[0093]特殊符号指的是宽高比例r不固定的符号,包括:水平直线,竖直直线,水平方向箭头,竖直方向箭头,根号;特殊字符的识别需要针对不同符号的特殊结构特征,设计符号专用的识别分析方法:

[0094]第4.3.1、方向箭头识别,利用投影的方法,将方向箭头符号分成三个部分:符号头部、符号尾部和符号中部,附图6描述了水平方向箭头的结构。符号中部是一条或两条直线,很容易识别,而符号头部和符号尾部的形状比较复杂,采用了特征点匹配的识别方法;在符号识别阶段,对宽高比例异常的符号利用投影的方法被切割成三部分分别识别,如果三个部分的识别结果能够组合成合法的方向箭头符号,那么这个方向箭头符号就是识别结果;

[0095]第4.3.2、根号识别,根据根号的结构和语法特征,我们定义以下条件,如果一个待识别字符ω满足这些条件,我们就认为它是一个根号:

[0096](1)ω外接矩形面积大于一般符号的外接矩形面积;

[0097](2)ω所在区域包含其他符号;

[0098](3)从ω左侧向右或下侧向上,沿扫描线深入ω所在区域超过一半,不会遇到黑像素阻挡;

[0099](4)ω最上部存在一条水平直线;

[0100](5)ω最下部存在一个拐点;

[0101]第4.3.3、竖直直线识别,如果待识别符号ω的宽高比r<TVLR,并且ω不是竖直箭头符号,那么就认为ω就是竖直直线;其中TVLR是竖直直线宽高比例的最大阈值;竖直直线除了可以作为一个符号单独存在以外,还有可能是符号“||”的一部分,所以,如果存在两条竖直直线相邻,并且高度相同,距离接近,那么就合并这两条竖直直线为“||”;

[0102]第4.3.4、水平直线识别,如果待识别符号ω的宽高比r>THLR,并且ω不是水平箭头符号,那么就认为ω就是水平直线;其中THLR是水平直线宽高比例的最小阈值;水平直线的含义很多,我们可以根据其上方和下方存在的符号的数量,以及这些符号和水平直线的位置关系,来对水平直线具体内容进行判断;

[0103]第4.4、基于熵与熵降的专用识别分类器设计

[0104]字符识别分类器用于快速找到与待识别字符特征匹配的样本字符,从而得到准确的识别结果;该识别分类器选用决策树作为本识别的模型,在分类树的建立过程中使用基于熵降的聚类算法;决策树的建立过程如下,

[0105][决策树建立算法]

[0106]初始状态:输入对象为数学符号集中所有字符,建立空的决策树根节点,

[0107]步骤1:初始化当前节点类别信息;

[0108]步骤2:设计数参数N值为1;

[0109]步骤3:使用K-means聚类算法,对节点字符集中的字符进行聚类,K取值为当前N值;

[0110]步骤4:记录增益最大的聚类结果;

[0111]步骤5:令N值加1,若N值小于阈值,重复步骤3;

[0112]步骤6:将聚类结果保存到当前决策树节点中;

[0113]步骤7:若当前节点没有达到叶节点,建立新节点,重复步骤1;

[0114]在决策树的每一层聚类过程中,根据样本符号的特征向量反复使用K-means聚类算法聚类,并选取具有最大增益的分类作为当前节点的聚类结果;这样的策略能够保证每一次的聚类都是增益最大,保证了熵降比较大和覆盖比较小之间的一个最优平衡;

[0115]第5、数学公式结构的分析与理解

[0116]基于数学公式结构描述规则库,采用“自顶向下”的处理流程对数学公式的结构进行迭代式的分析;首先通过版面信息找到公式的核心骨干层次,然后利用语法和句法规则将该层次转换为一棵能反映公式正确计算顺序和结构的句法树;当该层次全部分析完成,再从公式中找到次级核心骨干层次,对句法树进行扩充;不断重复这一过程,直到公式结构分析全部完成;结构分析与理解详细方法模型如附图7所示。

[0117]本文采用树型结构描述数学公式,每一个操作符的树型结构都是与其对应的句法规则的一个实例;处理流程描述如下:

[0118][数学公式结构分析算法]

[0119]初始状态:处理对象为公式中所有符号,创建空的根结点,

[0120]步骤1:通过版面分析以确定属于第一层次的操作符。可利用的版面信息包括:操作符的水平中心线HCL,符号的大小,表达式图像外接矩形的水平中心坐标等。首先,将所有字符按照HCL的值进行聚类,得到公式中所有骨干线信息;然后,挑选出具有最高优先级的骨干线作为当前分析层次对象。

[0121]步骤2:应用语法规则。判断字符语法属性,确定当前骨干层次的核心操作符集;

[0122]步骤3:应用句法规则。首先,对当前骨干层次核心操作符进行优先级比较,选择最高优先级操作符,标记为句法树根节点;然后,进行公式结构拆分、子表达式拆解等句法结构分析,得到当前层次的句法树结构;

[0123]步骤4:选择公式中次高级别的骨干层次作为下一个处理对象,跳至第一步,循环重复,直至结构分析完成;

[0124]采用以上算法,数学公式图像的识别结果可以最终被组织成遵循计算顺序的树型结构;

[0125]以公式 y = ∫ 0 d sinxdx- ln x 2 a 为例,附图8(a)和8(b)描述了提取其核心操作符的过程。首先,通过版面结构分析将公式划分为多个相互关联的层次,并提取出具有最高优先级(反映公式骨干结构)的骨干层次;然后,对当前层次的操作符进行语法结构分析,利用组合规则将特殊操作符合并,如“∫0 dsin xdx”和“”,最终得到当前层次的核心操作符集{=,-}。最后,通过句法规则驱动,对其他骨干层次依次进行结构分析、句法树填充,最终形成一棵完整反映公式结构的句法结构树(附图8(c))。

[0126]第6、数学公式结构的表示与格式化输出

[0127]第6.1、针对数学公式的版面结构,其表示和格式化输出体现在以下几个方面:

[0128]第6.1.1、自动转化为LATEX、或MathML格式,实现版式重现;

[0129]第6.1.2、兼容各种数学公式编辑器,将识别和分析结果自动输入到公式编辑器中,为下一步的手工修改和编辑奠定基础;

[0130]第6.2、针对数学公式的语义结构,其表示和格式化输出体现在以下几个方面:

[0131]第6.2.1、以运算符和定界符为线索,将数学公式依据优先级和运算关系转化为语义结构树,清晰表达数学公式含义;

[0132]第6.2.2、将数学公式语义结构自动转化为Matlab计算工具的程序代码,实现自动化编程;或自动转化为MathML脚本语言,满足数学公式的网络化传播。

[0133]本发明的优点和积极效果:

[0134]本发明针对脱机数学公式图像的识别与理解难题,设计实现了一整套方法模型,覆盖了数学公式定位、公式符号切分识别、公式结构描述与分析、数学公式底层知识库、公式结构重现与转换等关键步骤,将文档图像分析技术、字符切分与识别技术、句法结构分析技术、表达式结构描述技术等进行融合,形成了全流程、自动化处理数学公式图像的方法体系。

[0135]该方法体系可实现对文档图像中独立行/潜入式数学公式的自动判定和提取,实现对公式符号的自动识别以及结构的自动分析,并可对数学公式的句法结构和语法结构进行自动检查和纠错,从而满足数学公式图像自动录入、数学公式结构理解与格式重现的应用需求。该方法体系可与现有的普通文字OCR系统相互融合,形成功能更为完整的文档图像处理系统。也可支撑其他领域的表达式处理方法研究,如针对化学方程式的自动处理。

【附图说明】:

[0136]图1是数学公式识别方法模型,

[0137]图2是数学公式句法结构模型,

[0138]图3是复杂结构文档图像中数学公式定位方法模型,

[0139]图4是meanline与baseline的位置示意图,

[0140]图5是数学字符识别方法模型,

[0141]图6是方向箭头符号识别,

[0142]图7是句法结构分析模型,

[0143]图8是数学公式结构分析与理解过程描述,

[0144]图9是以公式v=clog10(1+|u|)为例,应用本发明处理方法的具体实施过程,

[0145]图10是以公式 x = - b ± b 2 - 4 ac 2 a 为例的处理过程及结果,

[0146]图11是本发明涉及的数学字符集列表,其中A是操作数列表,包括的英文大小写字母、数字、希腊字母共102个字符;B是操作符列表,包括数学运算符、三角函数、界定说明符号等共108个;C是数学公式基础版面类型示例;D是部分语法信息编码形式;E是部分句法信息编码形式。

【具体实施方式】:

[0147]实施例1:

[0148]以公式v=clog10(1+|u|)为例,应用以上模型的处理方法,具体实施过程如附图9所示:

[0149]1.公式的自动定位。

[0150]第一步,对输入的文档图像进行区域划分,过滤掉图表;

[0151]第二步,对每个区域进行行切分,得到公式v=clog10(1+|u|)行元素;

[0152]第三步,行元素进行特征向量判定。由于公式v=clog10(1+|u|)具有较大的行高、上下间距及左右缩进,而且具有二维结构和特殊数学符号,符合独立行公式的特征。因此,被定位为独立行数学公式;

[0153]2.数学字符识别。

[0154]第一步,切分数学公式图像中的连通体,得到独立的字符图像;

[0155]第二步,对字符图像的识别分为一下三种情况:

[0156]a)对普通字符,如v/c/o/g/(/),计算每个字符图像的识别特征(统计特征和结构特征),将特征向量带入分类器,得到与之匹配的样本,完成识别;

[0157]b)对特殊字符,如直线|,需要应用竖直线专用的特殊处理方法进行分析,最终识别为定界符;

[0158]c)对于等号=,它由两个连通体组成,需要在每个连通体进行识别之后,进行组合。最后,字符识别的结果为:vclog10(1+|u|)=

[0159]3.公式结构分析。

[0160]第一步,进行版面结构分析,得到公式的第一骨干层次:v=clog();

[0161]第二步,对当前层次的操作符进行语法结构分析,得到核心操作符集{=,log}

[0162]第三步,应用句法规则,进行句法树的扩展和填充。由句法规则中的优先级关系可知,“=”的优先级高于“log”,因此,“=”被标记为句法树的根节点。然后,将log,和当前层次的其他字符按照句法规则依次填入,得到当前骨干层次的句法结构树;

[0163]第四步,依次对公式中其他层次进行相同处理,最终得到带有完整结构信息的公式树结构(附图9中最后部分);

[0164]4.公式结构的格式化输出。通过转换句法树中的结构信息和节点内容,公式最终可以表示为如下通用形式:

[0165]●公式的Latex格式

[0166]v=c\log_{10}\left({1+\left|u\right|}\right)

[0167]●公式的MathML格式

[0168]

[0169]  

[0170]     

[0171]       v=c

[0172]         

[0173]           log

[0174]         

[0175]         

[0176]           10

[0177]         

[0178]       

[0179]            (

[0180]              

[0181]                 1+|u

[0182]  |

[0183]             

[0184]          )

[0185]       

[0186]   

[0187]

[0188]实施例2

[0189]以公式 x = - b ± b 2 - 4 ac 2 a 为例,处理过程及结果如附图10所示,过程与实例1相似:

[0190]1.公式的自动定位。

[0191]第一步,对输入的文档图像进行区域划分,过滤掉图表;

[0192]第二步,对每个区域进行行切分,得到公式 x = - b ± b 2 - 4 ac 2 a 行元素;

[0193]第三步,行元素进行特征向量判定。由于公式 x = - b ± b 2 - 4 ac 2 a 具有较大的行高、上下

[0194]间距及左右缩进,并具有较大的连通体-根号,符合独立行公式的特征。因此,被定位为独立行数学公式;

[0195]2.数学字符识别。

[0196]第一步,切分数学公式图像中的连通体,得到独立的字符图像;

[0197]第二步,对字符图像的识别分为一下三种情况:

[0198]a)对普通字符,如x/-/b/±/4/a/c/2,计算每个字符图像的识别特征(统计特征和结构特征),将特征向量带入分类器,得到与之匹配的样本,完成识别;

[0199]b)对特殊字符,如水平直线-和大连通体需要应用它们专用的特殊处理方法进行分析,最终识别为分号和根号;

[0200]c)对于等号=,它由两个连通体组成,需要在每个连通体进行识别之后,进行组合。最后,字符识别的结果为:-b±√b2-4ac2a-=

[0201]3.公式结构分析。

[0202]第一步,进行版面结构分析,得到公式的第一骨干层次:x=-;

[0203]第二步,对当前层次的操作符进行语法结构分析,得到核心操作符集{=}

[0204]第三步,应用句法规则,进行句法树的扩展和填充。由于核心操作符集中只有一个元素,因此,“=”被标记为句法树的根节点。然后,将当前层次的其他字符按照句法规则依次填入,得到当前骨干层次的句法结构树;

[0205]第四步,依次对公式中其他层次进行相同处理,最终得到带有完整结构信息的公式树结构(附图10中最后部分);

[0206]4.公式结构的格式化输出。通过转换句法树中的结构信息和节点内容,公式最终可以表示为如下通用形式:

[0207]●公式的Latex形式

[0208]x=\frac{{-b\pm\sqrt{b^2-4ac}}}

[0209]{{2a}}

[0210]●公式的MathML形式

[0211]     

[0212]       

[0213]          

[0214]            x=

[0215]              

[0216]                -b±;

[0217]                  

[0218]                    

[0219]                      b

[0220]                      2

[0221]                    

[0222]                    -4ac

[0223]                  

[0224]               

[0225]            

[0226]            

[0227]              2a

[0228]            

[0229]         

[0230]      

[0231]   

[0232]