具体实施方式
在确定页面的倾斜角度时,为了提高处理速度,本发明实施例提供一种页面倾斜角度的确定方法,本方法中,通过选取页面中的多个像素点,利用选取的多个像素点进行直线拟和,根据拟和出的直线的斜率确定页面的倾斜角度。
参见图1,本发明实施例提供的页面倾斜角度的确定方法,具体包括:
步骤101:选取页面中的多个像素点;
步骤102:利用选取的多个像素点进行直线拟和;
步骤103:确定拟和出的直线的斜率;
步骤104:根据确定的斜率确定页面的倾斜角度。
参见图2,本发明实施例提供的上述方法应用在可能包含文本区域、图像区域、表格区域的复杂页面中,其具体实现如下:
步骤201:对待校正页面进行区域划分,划分后的页面包括一个或多个版面区域,某个版面区域的类别为文本区域或表格区域或图像区域;
本步骤中,对于文本区域来说,该区域内仅包含属于文字类的像素点;对于表格区域来说,该区域内仅包含属于表格类的像素点;对于图像区域来说,该区域内仅包含属于图像类的像素点。
可以采用基于神经的模糊学习算法对待校正页面进行区域划分,该算法中,首先将页面中的像素点进行分类,分类后,某个像素点属于文字类或图像类或表格类;然后,通过经典的形态学操作将像素点进行分组,在同一组内的像素点构成一个连通的区域,该区域内的所有像素点属于文字类或图像类或表格类,若该区域内的所有像素点属于文字类,则该区域为文本区域,若该区域内的所有像素点属于表格类,则该区域为表格区域,若该区域内的所有像素点属于图像类,则该区域为图像区域;最后,基于形状规则,提炼分类结果,最终得到精确的版面区域划分。如图3A所示,为原始的进行版面分析之前的页面,如图3B所示,为采用基于神经的模糊学习算法进行版面分析之后得到的区域划分示意图,该页面包括4个文本(TEXT)区域、1个表格(TABLE)区域和一个图像(IMAGE)区域。
基于神经的模糊学习算法的具体实现可以参见文献:Laura Caponetti,CiroCastiello,Przemyslaw Górecki.“Document page segmentation using neuro-fuzzyapproach”,Applied Soft Computing,2008,Page(s):118-126。
步骤202:根据分析结果判断待校正页面中是否包含文本区域,若是,则到步骤203;否则到步骤204;
步骤203:确定待校正页面中包含的各个文本区域的倾斜角度;
本步骤中,确定文本区域的倾斜角度,具体包括如下两个步骤:
步骤A:利用直线拟和算法在文本区域中拟和出能够体现文本区域倾斜特征的基准直线;
步骤B:利用拟和出的基准直线确定文本区域的倾斜角度。
若文本区域中的文字采用横排方式排列,步骤A的具体实现如下:
步骤A1:对文本区域内的文字进行字符切分;
步骤A2:确定各个字符的外接矩形,如图4A所示;
步骤A3:将确定的各个外接矩形进行分组,将同一文本行内的字符的外接矩形分为同一分组;
具体的,对于文本区域内最左边的某个外接矩形,将该外接矩形作为起始外接矩形,并将该起始外接矩形加入第一分组,在当前起始外接矩形周围搜索与该起始外接矩形的距离最近、并且距离小于文本行间距的另一个外接矩形,将该另一个外接矩形作为起始外接矩形,并将该起始外接矩形加入第一分组;
再在当前起始外接矩形周围搜索与该起始外接矩形的距离最近、该距离小于文本行间距、并且未包含在第一分组中的另一个外接矩形,将该另一个外接矩形作为起始外接矩形,继续进行搜索。如此循环,直到找不到与当前起始外接矩形的距离小于文本行间距、并且未包含在第一分组中的其他外接矩形时,第一分组确定完毕,第一分组中的外接矩形属于同一文本行内字符的外接矩形。
按照上述方法,对于文本区域内最左边的其他外接矩形,可以分别确定一个分组。
如图4B所示,对于附图4A所示的文本区域,以字符“市”的外接矩形开始进行搜索,得到第一分组,该分组中包含以下字符的外接矩形:“市”、“重”、“点”、“发”、“展”、“的”、“电”、“子”、“信”、“息”、“产”;以字符“业”的外接矩形开始进行搜索,得到第二分组,该分组中包含以下字符的外接矩形:“业”、“务”、“必”、“将”、“不”、“断”、“做”、“大”、“做”、“强”;以字符“有”的外接矩形开始进行搜索,得到第三分组,该分组中包含以下字符的外接矩形:“有”、“利”、“于”、“产”、“业”、“结”、“构”、“优”、“化”、“升”。
步骤A4:选取一个或多个分组;
步骤A5:对于选取的每个分组,确定该分组内的外接矩形的特征点,利用直线拟和算法将确定的各个特征点拟和为一条直线,将拟和出的直线作为能够体现文本区域倾斜特征的基准直线。
外接矩形的特征点可以是外接矩形的中心点、顶点等,根据分组内各个外接矩形的中心点可以拟和得到一条基准直线,如图4C所示,为某个字符的外接矩形的中心点;根据分组内各个外接矩形的左上顶点可以拟和得到一条基准直线,根据分组内各个外接矩形的左下顶点可以拟和得到一条基准直线,根据分组内各个外接矩形的右上顶点可以拟和得到一条基准直线,根据分组内各个外接矩形的右下顶点可以拟和得到一条基准直线,因此,根据特征点选取个数的不同,对于一个分组可以拟和出的一个或多个基准直线。
若文本区域中字符按照竖排方式排列,则步骤A的具体实现与步骤A1到步骤A5相似,不同之处仅在于步骤A3中是将同一文本列内的字符的外接矩形分为同一分组,具体实现时是对于文本区域内最上边的各个外接矩形分别确定分组。
步骤A中若确定了一条基准直线,步骤B中,根据该基准直线确定文本区域的倾斜角度的方法为:计算该基准直线的斜率,将计算得到的斜率对应的角度值确定为文本区域的倾斜角度。例如,计算得到的基准直线的斜率为1,那么文本区域的倾斜角度为45度;计算得到的基准直线的斜率为-1,那么文本区域的倾斜角度为135度;计算得到的基准直线的斜率为0,那么文本区域的倾斜角度为0度。
步骤A中若确定了多条基准直线,步骤B中,根据该多条基准直线确定文本区域的倾斜角度的方法可以有多种,例如:
第一种,从确定的多条基准直线中选择一条基准直线,计算选择的基准直线的斜率,将该斜率对应的角度值确定为文本区域的倾斜角度;
第二种,首先,对于确定的每条基准直线:计算基准直线的斜率,将计算得到的斜率对应的角度值确定为该基准直线的倾斜角度;然后,将确定的每条基准直线的倾斜角度进行加权平均,将相加平均结果确定为文本区域的倾斜角度。
本文中提及的直线拟和算法有:最小二乘法、线性回归算法、Hough变换算法等。
步骤204:根据分析结果判断待校正页面中是否包含表格区域,若是,则到步骤205;否则到步骤206;
步骤205:确定待校正页面中包含的各个表格区域的倾斜角度;
本步骤中,确定表格区域的倾斜角度,具体包括步骤C和步骤D:
步骤C:在表格区域中确定出能够体现表格区域倾斜特征的基准直线;
步骤D:利用拟和出的基准直线确定表格区域的倾斜角度。
步骤C的具体实现可以有多种方式,例如:
第一种,具体包括如下步骤:
步骤C01:识别表格区域中的表格单元线;
步骤C02:从识别出的表格单元线中选取一条表格单元线,利用直线拟和算法将选取的表格单元线上的像素点拟和为一条直线,将拟和出的直线确定为能够体现表格区域倾斜特征的基准直线。
第二种,具体包括如下步骤:
步骤C11:识别表格区域中的表格单元线;
步骤C12:将识别出的表格单元线进行分组;
具体分组方法为:首先,取出识别出的一条表格单元线1,计算该表格单元线1的方向角度,将计算得到的角度值记为主方向角度值α1,并将表格单元线1加入第一分组;接着,取出识别出的其他表格单元线2,计算表格单元线2的方向角度,判断计算得到的方向角度与α1之差的绝对值是否小于预定的角度阈值,若是,则将表格单元线2加入第一分组,否则,将表格单元线2加入第二分组,并记表格单元线2的方向角度为主方向角度值α2;在确定两个主方向角度值后,遍历识别出的其他还未加入分组的各条表格单元线,判断该表格单元线的方向角度与α1之差的绝对值小于预定的角度阈值或是与α2之差的绝对值小于预定的角度阈值,如果与α1之差的绝对值小于预定的角度阈值,则将该表格单元线加入第一分组,如果与α2之差的绝对值小于预定的角度阈值,则将该表格单元线加入第二分组。预定的角度阈值的取值可以根据需要设置,具体可以取45度或小于45度的其他值。
上述计算表格单元线的方向角度的方法为:计算该表格单元线的两个端点所构成的直线的斜率,确定该斜率对应的角度值,将计算得到的角度值作为该表格单元线的方向角度。
步骤C13:选取一个分组,将该分组中各个表格单元线上的像素点拟和为一条直线。将拟和出的直线确定为能够体现表格区域倾斜特征的基准直线。
第三种,具体包括如下步骤:
步骤C21:识别表格区域中的表格单元线;
步骤C22:将识别出的表格单元线进行分组;具体实现方法可以参见对步骤C12的描述。
步骤C23:选取多个分组,对于每个分组,将该分组中的各个表格单元线上的像素点拟和为一条直线。将拟和出的各条直线确定为能够体现表格区域倾斜特征的基准直线。
较佳的,在根据某个分组中的表格单元线上的像素点拟和出直线后,可以进一步判断该分组内各表格单元线上的所有像素点到拟和出的直线的距离的方差,是否小于预定的方差阈值,如果小于,则将该拟和出的直线确定为基准直线,否则,说明直线拟和精度较差,不将该拟和出的直线确定为基准直线。
对应于步骤C的三种实现方式,步骤D也有以下三种实现方式:
对应于步骤C的第一种实现方式,步骤D的实现方式为:计算选取的一个表格单元线的斜率,确定该斜率对应的角度值,将该角度值确定为表格区域的倾斜角度。
对应于步骤C的第二种实现方式,步骤D的实现方式为:计算选取的分组中的各条基准直线的斜率,确定计算得到的各个斜率对应的角度值,将确定出的各个角度值进行加权平均,将加权平均结果确定为表格区域的倾斜角度。
对应于步骤C的第三种实现方式,步骤D的实现方式为:首先,对于选取的每个分组:计算该分组中的各条基准直线的斜率,确定计算得到的各个斜率对应的角度值,将确定出的各个角度值进行加权平均;然后,将各个加权平均结果再进行加权平均,将该加权平均结果确定为表格区域的倾斜角度。
步骤206:根据分析结果判断待校正页面中是否包含图像区域,若是,则到步骤207;否则到步骤208;
步骤207:确定待校正页面中包含的各个图像区域的倾斜角度;
本步骤中,确定图像区域的倾斜角度的方法,具体包括步骤E和步骤F:
步骤E:在图像区域中确定出能够体现图像区域倾斜特征的基准直线;
步骤F:根据确定的基准直线确定图像区域的倾斜角度。
在步骤E中,确定图像区域的基准直线的具体方法包括:
步骤E1:确定图像区域的边缘像素点;
具体的,对于二值图像,确定图像区域的边缘像素点的方法为:首先,确定图像区域的外接矩形;然后,对外接矩形的像素点二维矩阵的每一列或每一行进行扫描,在扫描某一列或某一行时,将该列中的某个或某几个像素点作为边缘像素点,边缘像素点需满足如下条件:该边缘像素点之前的设定数量的像素点为白色像素点,该边缘像素点为黑色像素点,该边缘像素点之后的设定数量的像素点为黑色像素点;或者,该边缘像素点之前的设定数量的像素点为黑色像素点,该边缘像素点为黑色像素点,该边缘像素点之后的设定数量的像素点为白色像素点。设定数量可以根据需要设置,具体可以取4或大于4的整数。
对于灰度图像,可以采用基于方向导数的边缘检测算法进行边缘检测,得到图像区域的边缘像素点,边缘检测算法有:Robert边缘算法、Sobel边缘算法、拉普拉斯算子、Canny算法等。
步骤E2:利用直线拟和算法将边缘像素点拟和为一条直线,将该直线确定为图像区域的基准直线。
较佳的,在拟和出直线后,可以进一步判断所有边缘像素点到拟和出的直线的距离的方差,是否小于预定阈值,如果小于,则将该拟和出的直线确定为基准直线,否则,说明直线拟和精度较差,不将该拟和出的直线确定为基准直线,认为无法确定图像区域的倾斜角度。
在步骤F中,计算确定的基准直线的斜率,将计算得到的斜率对应的角度值确定为图像区域的倾斜角度。
步骤208:根据确定的各个倾斜角度确定待校正页面的倾斜角度。
本步骤中,待校正页面的倾斜角度的具体确定方法有多种,例如:
第一种,从确定的倾斜角度中选取一个作为待校正页面的倾斜角度;
第二种,将确定的所有或部分倾斜角度进行加权平均,将加权平均结果确定为待校正页面的倾斜角度;在进行加权平均时,每个倾斜角度的权重可以根据预先定义的函数确定。
需要说明的是,步骤202和步骤203、步骤204和步骤205、步骤206和步骤207,三者的执行顺序并不限于附图2所示的顺序,还可以是其它任意执行顺序,或者,三者也可以并行执行。
在确定待校正页面的倾斜角度后,可以根据确定出的倾斜角度对页面进行旋转处理,以达到纠正页面位置的目的。例如,若确定出待校正页面的倾斜角度为45度,则将页面逆时针转动45度,若确定出待校正页面的倾斜角度为-45度,则将页面顺时针转动45度。
较佳的,为了使得页面倾斜角度的确定结果更加准确,在步骤201之前,可以将待纠正页面进行预处理,预处理内容包括:采用固定阈值化方法,比如大津法、迭代法和双峰法等,将待纠正页面进行二值化处理;通过移除待纠正页面中的小连通区域的方法进行噪音去除等。
参见图5,本发明实施例还提供一种确定页面倾斜角度的装置,该装置包括:
像素点单元50,用于选取所述页面中的多个像素点;
直线单元51,用于利用所述像素点单元选取的多个像素点进行直线拟和;
斜率单元52,用于确定所述拟和单元拟和出的直线的斜率;
倾斜角度单元53,用于根据所述斜率单元确定的斜率确定所述页面的倾斜角度。
所述像素点单元50包括:
文本单元,用于在所述页面中包含文本区域时,确定所述文本区域内的字符的外接矩形;
特征点单元,用于选取所述文本区域中同一文本行或同一文本列中各个字符的外接矩形的特征点,将选取的各个特征点作为所述多个像素点。
所述外接矩形的特征点为:
所述外接矩形的中心点,或所述外接矩形的顶点,或所述外接矩形的边上的点。
所述像素点单元50包括:
表格线单元,用于在所述页面中包含表格区域时,识别所述表格区域中的表格单元线;
第一选取单元,用于选取所述表格线单元识别出的表格单元线上的像素点作为所述多个像素点。
所述第一选取单元包括:
第一选择单元,用于从所述表格线单元识别出的表格单元线中选择一条表格单元线;
第一结果单元,用于选取所述第一选择单元所选择的表格单元线上的像素点作为所述多个像素点。
所述第一选取单元包括:
第二选择单元,用于从所述表格线单元识别出的表格单元线中选择倾斜角度的差值小于预定的角度阈值的表格单元线;
第二结果单元,用于选取所第二选择单元所选择的表格单元线上的像素点作为所述多个像素点。
所述像素点单元50包括:
检测单元,用于在所述页面中包含图像区域时,检测所述图像区域的边缘像素点;
第二选取单元,用于选取所述检测单元检测得到的边缘像素点作为所述多个像素点。
所述检测单元包括:
图像单元,用于确定所述图像区域的外接矩形;
扫描单元,用于对所述外接矩形对应的像素点二维矩阵进行行扫描或列扫描,将扫描到的满足设定条件的像素点作为所述图像区域的边缘像素点,所述设定条件为:
所述像素点之前的设定数量的像素点为白色像素点,所述像素点为黑色像素点,所述像素点之后的设定数量的像素点为黑色像素点;或者,所述像素点之前的设定数量的像素点为黑色像素点,所述像素点为黑色像素点,所述像素点之后的设定数量的像素点为白色像素点。
所述倾斜角度单元53包括:
计算单元,计算确定出的斜率对应的角度值;
确定单元,用于从所述计算单元计算得到的角度值中选择一个角度值,将选择的角度值确定为所述页面的倾斜角度;或者,将计算得到的角度值进行加权平均,将加权平均结果确定为所述页面的倾斜角度。
该装置进一步包括:
方差单元54,用于计算所述多个像素点到利用该多个像素点拟和出的直线的距离的方差,判断所述方差是否小于预定的方差阈值;所述直线单元51用于:在所述方差单元判断所述方差小于预定的方差阈值时,确定拟和出的直线的斜率。
该装置进一步包括:
预处理单元55,用于在选取所述页面中的多个像素点之前,对所述页面进行二值化处理和/或噪声去除处理。
该装置进一步包括:
纠正单元56,用于在确定所述页面的倾斜角度之后,根据该倾斜角度对所述页面进行位置旋转处理。