CN110516574A - 结合阈值和投影法的图、表、文混排版面分析系统及方法 - Google Patents
结合阈值和投影法的图、表、文混排版面分析系统及方法 Download PDFInfo
- Publication number
- CN110516574A CN110516574A CN201910764503.9A CN201910764503A CN110516574A CN 110516574 A CN110516574 A CN 110516574A CN 201910764503 A CN201910764503 A CN 201910764503A CN 110516574 A CN110516574 A CN 110516574A
- Authority
- CN
- China
- Prior art keywords
- text
- row
- column
- image
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/43—Editing text-bitmaps, e.g. alignment, spacing; Semantic analysis of bitmaps of text without OCR
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Character Input (AREA)
Abstract
本发明公开了一种结合阈值和投影法的图、表、文混排版面分析方法,包括如下步骤:S1、将按阈值Tg将校正后的灰度图像R’转变为二值(黑白)图像;S2、将二值图像中每个前景区域,分为文字区域和非文字区域;S3、将表分图解析成表格;S4、将每个表格分割成行/列:S5、检测整幅图像的页面布局是否正确;S6、对列/行排序决定下一步处理的先后次序,先列后行;S7、对表格的每个列/行,先列后行,只处理单纯的列/行,依次分割成字;S8、按字处理复合的列/行,依次分割成字。本发明能够解析版面布局,确定页面是正面、背面,上下、左右是否颠倒,也能够处理粘连在表上的字,还能够大幅提高文字的识别率。
Description
技术领域
本发明涉及文字识别技术领域,具体涉及一种结合阈值和投影法的图、表、文混排版面分析系统及方法。
背景技术
目前,文字识别中,计算机很难识别页面是正立、倒立、镜向的,整体文字的识别率也不高。
发明内容
为解决上述问题,本发明提供了一种结合阈值和投影法的图、表、文混排版面分析系统及方法,能够解析版面布局,确定页面是正面、背面,上下、左右是否颠倒,也能够处理粘连在表上的字,还能够大幅提高文字的识别率。
为实现上述目的,本发明采取的技术方案为:
结合阈值和投影法的图、表、文混排版面分析方法,包括如下步骤:
S1、将按阈值Tg将校正后的灰度图像R’转变为二值(黑白)图像;
S2、将二值图像中每个前景区域,按区域大小、长宽比、占空比分为文字区域和表区域;
S3、将表区域分图解析成表格;
S3.1、定位横线;
S3.2、定位纵线;
S3.3、解析成表格;
S3.4、去除表上粘连的文字;
S4、将每个表格中的文字区域分割成行/列:
S5、检测整幅图像的页面布局是否正确;
S6、对列/行排序决定下一步处理的先后次序,先列后行;
S7、对表格的每个列/行,先列后行,只处理单纯的列/行,依次分割成字;
S8、按字处理复合的列/行,依次分割成字。
进一步地,所述步骤S1包括如下步骤:
S1.1、统计任务中前景像素对整幅图像像素的占比范围(Rt1-Rt2);
S1.2、生成整幅图像的灰度直方统计图,图中,横轴为灰度值,纵轴为相应灰度值下的像素数;
S1.3、计算前景占比为Rt1、Rt2时灰度直方统计图中的对应灰度值Hr1、Hr2;
S1.4、与OSTU算法类似,在对应灰度值范围Hr1-Hr2内选择将图像二分成前景、背景后类间方差最大、类内方差最小的阈值Tg,将图像二分成前景、背景。
进一步地,所述步骤S2包括如下步骤:
S2.1、扫描图像,定位到二维码、扫描码与容易与文字区分开的图形,构成图形分图graphicImage;
S2.2、统计任务中文字、表的大小范围(Ht1-Ht2)、长宽比范围(Zt1-Zt2)和占空比范围(Bt1-Bt2);
S2.3、将在表大小范围、长宽比范围和占空比范围的前景区域放入图表数组textsbwArrary,并将全部的图表构成一张表分图tableImage;
S2.4、将长宽比不在文字经验范围(Zt1-Zt2)的前景区域放入非文字数组bitsbwArray;
S2.5、将大小和长宽比都在文字经验范围内的前景区域放入文字数组textsbwArrary,统计文字的最大、最小和平均高度、宽度、高宽比;
S2.6、将文字区域和非文字区域构成一张文分图;
二值图像bwImage=文分图textImage+表分图tableImage+图形图像graphicImage。
进一步地,所述步骤S3具体包括如下步骤:
S3.1、定位横线
S3.1.1、将表分图tableImage横向投影得到纵向投影图Vc;
S3.1.2、采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域;
S3.1.3、将峰值高度超过λ1、峰值宽度小于λ2、左右低洼区域宽度都超过λ4的线条,作为候选线条Li,其峰值根部左右坐标为Li1和Li2;其中,λ1、λ2、λ3为统计后得到的经验值;;
S3.1.4、对找到的线条Li,从表分图In切出左右到页边距的横向线条图像Ih,横向线条图像在表分图In中的上边界线为Li1、下边界线为Li2,将此横向线条图像Ih向纵向投影,得到投影Lh;
S3.1.5、对纵向投影Lh按OSTU算法生成的阈值二值化,对每个值为1、宽度超过λ4个字符的区域(起始位置Hj1、结束位置Hj2),生成一条线条,该线条的左上角坐标为(Hj1,Li1),右下角坐标为(Hj2,Li2);
S3.1.6、同样,对纵向投影图Vc找到的每条线条Li,找到其在图像上的位置,加上左右页边距值;
S3.2、定位纵线
S3.1.1、将表分图tableImage纵向投影得到水平投影图Hr;
S3.2.1、采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域;
S3.2.2、对峰值高度超过λ5、峰值宽度小于λ6、左右低洼区域都超过λ7(λ5、λ6、λ7为统计后得到的经验值),作为候选线条Li,其峰值根部左右坐标为Li1和Li2;
S3.2.3、对找到的线条Li,从表分图In切出上下页边距的纵向线条图像Ih,纵向线条图像在表分图In中的左边界线为Li1、右边界线为Li2,将此纵向线条图像Ih向横向投影,得到投影Lv;
S3.2.4、对横向投影Lv按OSTU算法生成的阈值二值化,对每个值为1、宽度超过λ8个字符的区域(起始位置Hj1、结束位置Hj2),生成一条线条(左上角坐标为(Li1,Hj1),右下角坐标为(Li2,Hj2));
S3.2.5、同样,对垂直投影图Vc找到的每条线条Li,找到其在图像上的位置,加上上下页边距;
S3.3、解析成表格
S3.3.1、在全黑的图像中,用白色画出步骤S3.1中找到全部横线和步骤S3.2中找到全部纵线;
S3.3.2、用分水岭算法找到图像中所有被白色包围的黑色区域;
S3.3.3、为每个区域编号,并输出每个区域的位置;
S3.4、去除表上粘连的文字
S3.4.1、从表分图tableImage中抹去所有纵向和横向的线条,替代原来的表分图tableImage;
S3.4.2、把表分图tableImage中抹去纵向和横向的线条后余下的部分,加入文分图textImage;
S3.4.3、将整幅图像作为一个表格,相应位置也置入表格数组。
进一步地,所述步骤S4包括如下步骤:
S4.1、每个表格向水平和垂直方向累加,构成水平投影图Ht和垂直投影图Vt;
S4.2、采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界和低洼区域间的峰值区域;
S4.3、如果低洼区域最小值为0,或者低洼区域最小值为Vp(Vp≠0)、低洼区域平坦(投影图差分后的平均值Mm和最大值Md)、低洼区域宽度W1、峰值区域平均高度Vr、峰值区域宽度W2满足以下关系
Vp+λ9×Mm+λ10×Md+λ11×W1>λ12
|Vr-Vp|/(Vr+Vp)>λ13
|W2-W1|/(W2+W1)>λ14
式中,λ9……λ14都是经验参数;
则认为此峰值区域为文字行/列、低洼区域为行/列间空隙,将文字行/列、间隙分别装入行表和列表,同时将低洼区域最小值为0的间隙标记为单纯间隙、低洼区域最小值大于0的间隙标记为复合间隙(单纯间隙无跨行/列的文字,复合间隙可能有跨行/列的文字);上述公式由样本统计,按SVM方法生成的模式分类界限;
S4.4、对水平投影图Ht生成的文字行数组,对垂直投影图Vt生成的文字列数组。
进一步地,所述步骤S5包括如下步骤:
S5.1、按文字行/列高度的方差δt、空隙行/列高度的方差δn之和δ(=δt+δn)比较行、列的合理性。如果行方向的高度方差δr<列方向的高度方差δc,则此表格文字横向排列,否则纵向排列。如果图像纵向排列,整幅图像逆时针旋转90°,得到正确摆放的图像;同时反转表格中的所有行/列坐标、文字横/纵排列;
S5.2、按经验,一般页面中上面的字大、间距大,尤其是抬头部分,因此如果页面中上面半页的文字行和空白行比下面半页的文字行和空白行都高,此页面正确摆放;否则要旋转180°,颠倒上下部分;
S5.3、按经验,一般多行的段落,第一行左边比其余行空两个字,因此如果表格中第一行文字行比其余文字行在左边多两个字的空白,那么页面左右正确摆放的变量Vp加1;对每个表格分析判断,如果页面左右正确摆放的变量Vp大于页面左右不正确摆放的变量Vf,则页面左右正确摆放,否则左右交换。
进一步地,所述步骤S6包括如下步骤:
S6.1、对列/行数组rowsArray/columsArray中每单元,按位置从文字数组textsbwArrary找到列/行所在区域内所有文字,放入文组数组groupTextsArray,从中统计此单元文字最大、最小和平均的宽度,并按1空白行中平均像素高度大平均方差值小2文字列/行中的文字是否处于同一列/行判断是复合的列/行,还是单纯的列/行;
S6.2、对列/行数组rowsArray/columsArray中每个文字列/行,按前后左右空白平均厚度Np(i-1)和Np(i+1)、与最大可能文本高度的区别abs(Npi-Nt)/(Npi+Nt)、左右空白平均宽度Wb(i-1)和Wb(i+1)决定处理次序,如下式:λ15*Np(i-1)+λ16*Np(i+1)+λ17*abs(Npi-Nt)/(Npi+Nt)+λ18*Wb(i-1)+λ19*Wb(i+1);式中,λ15……λ19都是经验参数;
S6.3、增加列columsArray中每个文字列的优先级;
S6.4、排序优先级并放入rowsArray/columsArray的第13维。
进一步地,所述步骤S7包括如下步骤:
S7.1、选择单纯的列/行进行处理;
S7.2、对列向水平方向累加、对行向垂直累加,分别得到水平/垂直投影图;
S7.3、在投影图中将已经检测到的文字前后各缩小一个像素后设置为最大值(防止多个字合并成一个字);
S7.4、对水平/垂直投影图,连续为0的区域设置为低洼区域,找到低洼区域的左右边界,低洼区域间的为峰值区域,判断低洼区域为字间间隙、低洼区域间的峰值区域为文字的可能性,峰值区域的平均高度应该比低洼区域的平均高度至少高于最小字符高度Htmin,将可能性超过经验阈值的峰值区域存入峰值数组、低洼区域存入间隙数组;
S7.5、对峰值数组中每个峰值位置,按动态规划合并峰值和间隙成文字,保证得到的文字及文字间间隙大小均匀;
S7.6、返回文字位置数组,从文分图textImage中抹去此行。
进一步地,所述步骤S8包括如下步骤:
S8.1、从字定位到所在的复合列/行,然后沿字的位置找到单纯列/行所在边界;
S8.2、从图像中找到单纯列/行所在区域内所有文字,构成临时文字组textsInRegion,从中统计文字最大、最小和平均的宽度;
S8.3、对列向水平方向累加、对行向垂直累加,分别得到水平/垂直投影图;
S8.4、在投影图中将已经检测到的文字前后各缩小一个像素后设置为最大值(防止多个字合并成一个字);
S8.5、对水平/垂直投影图,连续为0的区域设置为低洼区域,找到低洼区域的左右边界,低洼区域间的为峰值区域,判断低洼区域为字间间隙、低洼区域间的峰值区域为文字的可能性,峰值区域的平均高度应该比低洼区域的平均高度至少高于最小字符高度Htmin,将可能性超过经验阈值的峰值区域存入峰值数组、低洼区域存入间隙数组;
S8.6、对峰值数组中每个峰值位置,按动态规划合并峰值和间隙成文字,保证得到的文字及文字间间隙大小均匀;
S8.7、从复合列/行中抹去此单纯列/行;
S8.8、复合行中的所有内容都已经抹去,从文分图textImage中抹去此复合行,返回文字位置数组。
本发明还提供了结合阈值和投影法的图、表、文混排版面分析系统,其特征在于,该系统采用上述的方法实现图、表、文混排版面分析。
本发明具有以下有益效果:
能够解析版面布局,确定页面是正面、背面,上下、左右是否颠倒,也能够处理粘连在表上的字,还能够大幅提高文字的识别率。
附图说明
图1为本发明实施例的流程图;
图2为页面校正示意图;
图中:(a)校正前;(b)校正后。
图3为全局阈值Tg生成图。
图4为定位线示意图。
图5为检测到的表格。
图6为表矩阵Mt及其交叉点X。
图7成字成本矩阵。
图8在成字成本矩阵中的动态规划过程。
图9为数据流。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
如图1所示,本发明实施例提供了结合阈值和投影法的图、表、文混排版面分析方法,包括如下步骤:
一.校正图像
输入:扫描图像rgbImage,每边的采样点数numSamplesEachEdge;
输出:校正图像rectifiedImage;
(1)找到图像中占据中心、边缘光滑、面积超过整个图像2/3、面积最大的封闭区域R,找到区域R的4个接近90°的角点(C1-C4)和4条边缘(E1-E4),同时也找到离每条边缘的弦最远的4个弧点(B1-B4);
(2)找到区域R的最大外接矩形R’,然后保持R’的宽度不变,移动R’的其余两个顶点,调整R’长宽比为预知的页面长宽比;
(3)将区域R的4个角点(C1-C4)和映射到R’的最近角点,同时4个弧点(B1-B4)映射到R’边缘上的边缘点,建立从R到R’的变换矩阵P;
(4)将原彩色图像灰度化;
(5)根据变换矩阵P计算R’中所有像素点(x’,y’)在R中的位置(x,y),取(x,y)最近的3×3像素,线性插值生成位置(x,y)处的灰度值G,将此灰度G作为R’中像素点(x’,y’)的灰度;
(5)输出新生成的R’,作为校正后的图像。
二.将图像分割成表格
输入:校正图像rectifiedImage;
输出:表格数组tableCellsArray;
经验参数(要统计的量):1ratioForeBack前景像素对整幅图像像素的占比范围2应用中出现的所有文字大小Ht及长宽比Zt;
(1)按阈值Tg将校正后的灰度图像R’转变为二值(黑白)图像
输入:校正图像rectifiedImage;
输出:二值图像bwImage;
经验参数(要统计的量):1ratioForeBack前景像素对整幅图像像素的占比范围;
(1.1)统计任务中前景像素对整幅图像像素的占比范围(Rt1-Rt2);
(1.2)生成整幅图像的灰度直方统计图,此图中横轴为灰度值,纵轴为相应灰度值下的像素数;
(1.3)计算前景占比为Rt1、Rt2时灰度直方统计图中的对应灰度值Hr1、Hr2;
(1.4)与OSTU算法类似,在对应灰度值范围Hr1-Hr2内选择将图像二分成前景、背景后类间方差最大、类内方差最小的阈值Tg,将图像二分成前景、背景;
(2)将二值图像中每个前景区域,分为文字区域和非文字区域
输入:二值图像bwImage;
输出:表分图tableImage、文分图textImage、图形分图graphicImage、文字数组textsbwArrary、非文字数组bitsbwArray;
经验参数(要统计的量):1textSize文字大小2ratioHeightWidth长宽比;
(2.1)扫描图像,定位到二维码、扫描码等与容易与文字区分开的图形,构成图形图像graphicImage;
(2.2)统计任务中文字大小范围(Ht1-Ht2)和长宽比范围(Zt1-Zt2);
(2.3)大小超过文字最大值的前景区域放入图表数组textsbwArrary,将全部的图表区域构成一张表分图tableImage;
(2.4)长宽比不在文字经验范围(Zt1-Zt2)的前景区域放入非文字数组bitsbwArray;
(2.5)大小和长宽比都在文字经验范围内的前景区域放入文字数组textsbwArrary,统计文字的最大、最小和平均高度、宽度、高宽比;
(2.5)将文字区域和非文字区域构成一张文分图;
二值图像bwImage=文分图textImage+表分图tableImage+图形图像graphicImage
(3)将表分图解析成表格
输入:表分图tableImage;
输出:横向线组linesHonArray、纵向线组linesVerArray、表格数组tableCellsArray;
经验参数(要统计的量):λ1线的长度λ2线的宽度λ3线间距;
(3.1)定位横线
输入:表分图tableImage;
输出:横向线组linesHonArray;
(3.1.1)采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域;
(3.1.2)对峰值高度超过λ1、峰值宽度小于λ2、左右低洼区域都超过λ3(λ1、λ2、λ3为统计后得到的经验值),作为候选线条Li,其峰值根部左右坐标为Li1和Li2;
(3.1.3)对水平投影图Hr找到的每条线条Li,找到其在图像上位置(左上角坐标(Vj1,Li1),右下角坐标为(Vj2,Li2));
(3.1.3.1)对水平投影图Hr找到的线条Li,从表分图In切出左右到页边距的横向线条图像Ih,横向线条图像在表分图In中的上边界线为Li1、下边界线为Li2,将此横向线条图像Ih向纵向投影,得到投影Lh;
(3.1.3.2)对纵向投影Lh按OSTU算法生成的阈值二值化,对到每个值为1、宽度超过λ1个字符的区域(起始位置Hj1、结束位置Hj2),生成一个线条(左上角坐标为(Hj1,Li1),右下角坐标为(Hj2,Li2));
(3.1.4)同样,对垂直投影图Vc找到的每条线条Li,找到其在图像上位置(左上角坐标(Li1,Vj1),右下角坐标为(Li2,Vj2));
(3.1.4.1)对垂直投影图Vc找到的线条Li,从表分图In切出上下到页边距的纵向线条图像Iv,纵向线条图像在表分图In中的左边界线为Li1、右边界线为Li2,将此纵向线条图像Iv向横向投影,得到投影Lv;
(3.1.4.2)对纵向投影Lv按OSTU算法生成的阈值二值化,对到每个值为1、宽度超过λ1个字符的区域(起始位置Vj1、结束位置Vj2),生成一个线条(左上角坐标为(Li1,Vj1),右下角坐标为(Li2,Vj2));
(3.2)定位纵线
输入:表分图tableImage;
输出:纵向线组linesVerArray;
(3.2.1)采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域;
(3.2.2)对峰值高度超过λ1、峰值宽度小于λ2、左右低洼区域都超过λ3(λ1、λ2、λ3为统计后得到的经验值),作为候选线条Li,其峰值根部左右坐标为Li1和Li2;
(3.2.3)对水平投影图Hr找到的每条线条Li,找到其在图像上位置(左上角坐标(Vj1,Li1),右下角坐标为(Vj2,Li2));
(3.2.3.1)对水平投影图Hr找到的线条Li,从表分图In切出左右到页边距的横向线条图像Ih,横向线条图像在表分图In中的上边界线为Li1、下边界线为Li2,将此横向线条图像Ih向纵向投影,得到投影Lh;
(3.2.3.2)对纵向投影Lh按OSTU算法生成的阈值二值化,对到每个值为1、宽度超过λ1个字符的区域(起始位置Hj1、结束位置Hj2),生成一个线条(左上角坐标为(Hj1,Li1),右下角坐标为(Hj2,Li2));
(3.2.4)同样,对垂直投影图Vc找到的每条线条Li,找到其在图像上位置(左上角坐标(Li1,Vj1),右下角坐标为(Li2,Vj2));
(3.2.4.1)对垂直投影图Vc找到的线条Li,从表分图In切出上下到页边距的纵向线条图像Iv,纵向线条图像在表分图In中的左边界线为Li1、右边界线为Li2,将此纵向线条图像Iv向横向投影,得到投影Lv;
(3.2.4.2)对纵向投影Lv按OSTU算法生成的阈值二值化,对到每个值为1、宽度超过λ1个字符的区域(起始位置Vj1、结束位置Vj2),生成一个线条(左上角坐标为(Li1,Vj1),右下角坐标为(Li2,Vj2));
(3.3)解析成表格
输入:横线数组linesHonArray,纵线数组linesVerArray;
输出:表格tableCellsArray;
(1)以横向线条H升序排列为行、纵向线条升序排列为列,构成表矩阵Mt;同行的多段线条放在同一行/列;
(2)检测每条线条H中元素横、纵向线条是否有交叉,有交叉的元素置X;如果线条与另一方向的线条相交后,还有余线,但没有与另一方向的下一线条相交,处理成与另一方向的下一线条相交,在相应位置补上X;如果线条与另一方向的所有线条都不相交,处理成延长此线条与另一方向最近的两线条相交,在相应位置补上X;
(3)表矩阵Mt的交叉元素X,行/列上相邻的多个连续交叉元素X构成一个线条,因此:
一条线段,至少有两个交叉点X;如果只有一个交叉点X,则在同行/列上相邻位置上补充交叉点X,如图6中加粗的X;
(4)从第二行、第二列开始,沿上到下、从左到右的方法,遍历表矩阵Mt中每个行列交叉点○,找到左上、右上、左下、右下四个角点处交叉点X,构成一个表格,如蓝色○所示;如果○只有左上角点处有交叉点X,右上、左下、右下三个角点处没有交叉点X,那么水平向右找到中断空白位置的竖直连续交叉点X,此竖直连续交叉点X上面的点为右上角点,再竖直向下找到中断空白位置的竖直连续交叉点X,此水平连续交叉点X左面的点为左下角点,竖直连续交叉点X与竖直连续交叉点X的共同交叉点X为右下角点,如绿色○所示;将表格放入表格数组;
(5)检测到的表格如图5所示,输出表格数组tableCellsArray;
(3.4)去除表上粘连的文字
输入:表分图tableImage,文分图textImage;
输出:表分图tableImage,文分图textImage,表格tableCellsArray;
(3.4.1)从表分图tableImage中抹去所有纵向和横向的线条,替代原来的表分图tableImage;
(3.4.2)把表分图tableImage中抹去纵向和横向的线条后余下的部分,加入文分图textImage;
(3.4.3)将整幅图像作为一个表格,相应位置也置入表格数组;
三.将每个表格分割成文字
输入:表格数组tableCellsArray;
输出:每个表格数组tableCellsArray的文字组groupTextsArray;
经验参数(要统计的量):λ1线的长度λ2线的宽度λ3线间距;
(1)将每个表格分割成行/列:
输入:表格数组tableCellsArray;
输出:每个表格数组tableCellsArray的行/列数组
rowsArray/columsArray;
经验参数(要统计的量):低洼区域最小值不为0时估计成行间隙的阈值λ7/λ8/λ9;
(1.1)每个表格向水平和垂直方向累加,构成水平投影图Ht和垂直投影图Vt;
(1.2)采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界和低洼区域间的峰值区域;
(1.3)如果低洼区域最小值为0,或者低洼区域最小值为Vp(Vp≠0)、低洼区域平坦(投影图差分后的平均值Mm和最大值Md)、低洼区域宽度W1、峰值区域平均高度Vr、峰值区域宽度W2满足以下关系
Vp+λ4×Mm+λ5×Md+λ6×W1>λ7
|Vr-Vp|/(Vr+Vp)>λ8
|W2-W1|/(W2+W1)>λ9
则认为此峰值区域为文字行/列、低洼区域为行/列间空隙,将文字行/列、间隙分别装入行表和列表,同时将低洼区域最小值为0的间隙标记为单纯间隙、低洼区域最小值大于0的间隙标记为复合间隙(单纯间隙无跨行/列的文字,复合间隙可能有跨行/列的文字);上面的公式由样本统计,按SVM方法生成的模式分类界限;
(1.4)对水平投影图Ht生成的文字行数组,对垂直投影图Vt生成的文字列数组;
(2)检测整幅图像的页面布局是否正确
输入:表格数组tableCellsArray;
输出:调整后的整幅图像rectifiedImage及表格数组tableCellsArray;
经验参数(要统计的量):
(2.1)按文字行/列高度的方差δt、空隙行/列高度的方差δn之和δ(=δt+δn)比较行、列的合理性。如果行方向的高度方差δr<列方向的高度方差δc,则此表格文字横向排列,否则纵向排列。如果图像纵向排列,整幅图像逆时针旋转90°,得到正确摆放的图像;同时反转表格中的所有行/列坐标、文字横/纵排列;
(2.2)按经验,一般页面中上面的字大、间距大,尤其是抬头部分,因此如果页面中上面半页的文字行和空白行比下面半页的文字行和空白行都高,此页面正确摆放;否则要旋转180°,颠倒上下部分;
(2.3)按经验,一般多行的段落,第一行左边比其余行空两个字,因此如果表格中第一行文字行比其余文字行在左边多两个字的空白,那么页面左右正确摆放的变量Vp加1;对每个表格分析判断,如果页面左右正确摆放的变量Vp大于页面左右不正确摆放的变量Vf,则页面左右正确摆放,否则左右交换;
(3)对列/行排序决定下一步处理的先后次序,先列后行
输入:列/行数组rowsArray/columsArray;
输出:文组数组groupTextsArray;
经验参数(要统计的量):1pixelsNumInBlank空白行中平均像素高度2fluctuatingInBlank空白行中平均方差值3λ10、λ11、λ12、λ13、λ14加权系数;
(3.1)对列/行数组rowsArray/columsArray中每单元,按位置从文字数组textsbwArrary找到列/行所在区域内所有文字,放入文组数组groupTextsArray,从中统计此单元文字最大、最小和平均的宽度,并按1空白行中平均像素高度大平均方差值小2文字列/行中的文字是否处于同一列/行判断是复合的列/行,还是单纯的列/行;
(3.2)对列/行数组rowsArray/columsArray中每个文字列/行,按前后左右空白平均厚度Np(i-1)和Np(i+1)、与最大可能文本高度的区别abs(Npi-Nt)/(Npi+Nt)、左右空白平均宽度Wb(i-1)和Wb(i+1)决定处理次序,如下式
λ10*Np(i-1)+λ11*Np(i+1)+λ12*abs(Npi-Nt)/(Npi+Nt)+λ13*Wb(i-1)+λ14*Wb(i+1)
(3.3)增加列columsArray中每个文字列的优先级;
(3.4)排序优先级并放入rowsArray/columsArray的第13维;
(4)对表格的每个列/行,先列后行,只处理单纯的列/行,依次分割成字
输入:表格数组tableCellsArray中的行/列rowsArray/columsArray;
输出:文组数组groupTextsArray,文字数组textsbwArrary;
经验参数(要统计的量):最小字符高度Htmin;文字合并的阈值;
(4.1)选择单纯的列/行进行处理;
(4.2)对列向水平方向累加、对行向垂直累加,分别得到水平/垂直投影图;
(4.3)在投影图中将已经检测到的文字前后各缩小一个像素后设置为最大值(防止多个字合并成一个字);
(4.4)统计已经检测到文字的平均宽度Wc;
(4.5)排除了一维数据左右两端为0的数据后,找到数据中间有字符部分的投影的最小值;
(4.6)找到一维数据排除两端0后、有字符部分的投影的所有最小值;
(4.7)将每个最小值所在的区域设置为低洼区域,找到低洼区域的左右边界,低洼区域间的区域为峰值区域,判断低洼区域为字间间隙、峰值区域为文字单元的可能性(峰值区域的平均高度应该比低洼区域的平均高度高Htmin),将可能性超过经验阈值的峰值区域存入文字单元数组、低洼区域存入字间间隙数组;
(4.8)将每个文字单元的宽度除以步骤2统计出的文字平均宽度,将大于文字平均宽度预设倍数的文字单元以及字间间隙大于最大文字宽度的单元直接作为检测出的文字,将其它单元作为存疑单元,并对连续多个、中间无存疑单元的检出文字作为文字区域,计算每个文字区域的平均字宽度Wc和平均字间隙Wb;
(4.9)将连续存疑单元作为存疑区域。将L个存疑单元Ui,包括存疑区域前一个检出文字和存疑区域后一个检出文字,共L+2个单元,构成存疑单元集U。用此L+2个单元构造一个(L+2)×(L+2)的矩阵,矩阵中的点(Uh,Ue)(Uh<=Ue,e-h<=4)表示从单元Uh左边开始、在单元Ue右边结束的范围内构成一个字符,点(Uh,Ue)的值Phe表示此范围构成一个字符的成字成本。
Phe=λ1(Whe-Wc)/(Whe+Wc)+λ2(Whb-Wb)/(Whb+Wb)+λ3(Web-Wb)/(Whe+Wb)
式中,λ1-λ3是加权系数,Whe是单元Uh、单元Ue间的宽度,即从单元Uh左边沿到单元Ue的右边沿的距离,Whb是单元Uh左边间隙的宽度,Web是单元Ue右边间隙的宽度。此式表示了构成的字符与左右字符的相似程度。将矩阵中的成字成本归一化处理(除以最大值)。在图中加Δ的点表示了U4、U5合并成一个字符的可能性。如果Uh=Ue表示Uh,单元不与右边单元合并,单独成为一个字符的可能性。
由于行是字符起始单元,列是字符结束单元,因此此矩阵只有右上三角部分;而且由于一个字符水平方向上最多分割成四个单元,因此e-h<=4,此右上三角矩阵也对角上只有一条宽度为4的带状区域。
动态规划就是在此宽度为4的带状区域寻找最优方案。最优方案平均成字成本最小,而且字符宽度的方差、字间隙宽度的方差也最小,如下式
cost=λ4mean(Phe)+λ5δWt+λ6δWb
式中,λ4-λ6是加权系数,mean(Phe)是方案中所有点的平均成字成本,δWt方案中所有字符宽度的方差,δWb是方案中所有字间隙宽度的方差。
动态规划的步骤如下:
(4.9.1)生成种子:以第一行的4个点为4个种子,作为4种方案;
(4.9.2)方案生长:每种方案向下生长,例如从点(Uh,Ue)向下生长时,选择Ue+1行的4个点加入方案;
n种方案,每种方案向下生长时有4种可能选择,因此生长一次n种方案变成4n种方案;
(4.9.3)方案裁剪:计算4n种方案的成本,选择成本最小的m种方案作为种子方案;
方案中点的数目超过3时才开始第一次裁剪,能提高算法的准确性;
(4.9.4)重复步骤(7.2)、(7.3),直到每个方案都到达存疑单元集U中的最后一个单元;
(4.9.5)选择成本最小的方案为最优方案。
(4.9.6)最优方案基于已知的左右字符宽度、字间间隙判断存疑单元是否应该合并,例如最优方案中有U2U4点,就合并2、3、4单元。按最优方案给出的策略合并字符,嵌入步骤4.8检出的文字,作为最终结果。
(4.10)返回文字位置数组,从文分图textImage中抹去此行;
(5)按字处理复合的列/行,依次分割成字
输入:用阈值法分割出、但是在表格数组tableCellsArray中的行/列字分割时没有处理到的字TextArrary,表格tableCellsArray数组,行/列数组rowsArray/columsArray;
输出:文组数组groupTextsArray,文字数组textsbwArrary;
经验参数(要统计的量):最小字符高度Htmin;文字合并的阈值;
(5.1)对TextArrary还没有处理的字,按字高排序,先处理大字,后处理小字;
(5.2)对当前文字Ti,以其最上位置Up、最下位置Down为当前临时行的行首、行尾,在同类文字Kj中找到质心相近、最上位置和最下位置都在Up-Down内的所有文字N,即
式中,Np是文字集N中的任一文字,Kj是第j类文字,UNp、DNp是文字Np的最上位置和最下位置,MNp和MTi是文字Np的质心,Th0、Th1分别是上下位置和质心的容差极限。统计文字集N中的文字最小宽度Wmin;
(5.2)在不同类文字中找到处于UNp、DNp内的所有文字M,即
式中,Mq是文字集M中的任一文字,UMq、DMq是文字Mq的最上位置和最下位置;
(5.3)将图像的Up-Down内的所有像素向竖直方向累加投影成水平投影图;
(5.4)排除水平投影图左右两端为0的数据后,找到数据中间有字符部分的投影的最大值Smax、最小值Smin;
(5.5)将文字集N中的所有文字的位置(Left、Right)左右各缩小一个像素(Left+1、Right-1),在水平投影图中将位置(Left+1、Right-1)内的值都置成Smax,同时文字集M中的所有文字所在位置都置成Smin;
(5.6)在水平投影图中找到排除两端0后、有字符部分的位置上的所有最小值;
(5.7)将每个最小值所在的区域设置为低洼区域,找到低洼区域的左右边界,低洼区域间的区域为峰值区域,判断低洼区域为字间间隙、峰值区域为文字单元的可能性(峰值区域宽度应该大于Wmin,平均高度应该比低洼区域的平均高度高Htmin),将可能性超过经验阈值的峰值区域存入文字单元数组、低洼区域存入字间间隙数组,可能性低过经验阈值的峰值区域合并到左右低洼区域;
(5.8)将每个文字单元的宽度除以步骤4.1统计出的文字平均宽度,将大于文字平均宽度预设倍数的文字单元以及字间间隙大于最大文字宽度的单元直接作为检测出的文字,将其它单元作为存疑单元,并对连续多个、中间无存疑单元的检出文字作为文字区域,计算每个文字区域的平均字宽度Wc和平均字间隙Wb;
(5.9)将连续存疑单元作为存疑区域。对每个连续存疑单元,采用4.9一样的动态规划方法,搜寻单元间组合的最优方案;
(5.10)检测图像中是否还有其它剩余文字,如还有文字L,按以下步骤处理:
(5.10.1)取文字集L的文字Tl,按文字高度判断Tl是否属于已有文字类,如果属于已有文字类,将Tl置入相应文字类,如果不属于任一已有文字类,则文字类数量加1,将Tl置入新的文字类;
(5.10.2)按步骤(5.1)迭代处理文字集L里的所有文字,直到完成。
四.检测和统计
(1)检测:在扫描图像rgbImage中给检测到图、表、文加重显示,查看检测是解析是否正确、检测是否完整;
(1.1)检测图扫描是否正确;
(1.1)检查表格是否正确;
(1.1)检查文字分割是否正确;
(2)统计以下经验常数:pageMagin页的4个边距;应用中出现的所有文字大小Ht、长宽比Zt、字间距;λ1线的长度λ2线的宽度λ3线间距;图的大小;页面布局;
五.容错设计
(1)校正不直:定位线和列行分割时重新分校正;
(1)行列切错:多/少
(1)线长度不对:分析表格时补足;
(1)字切错:局部动态规划
六.数据结构
(1)图像
(1.1)扫描图像rgbImage
(1.2)校正图像rectifiedImage(灰色,后面不需要彩色图像);
(1.3)二值图像bwImage
(1.4)表分图tableImage
(1.5)文分图textImage
(2)数组
(2.1)横线数组linesHonArray(1左2上3右4下5方向(1纵线2横线)6是否处理过的标志)
(2.2)纵线数组linesVerArray(1左2上3右4下5方向(1纵线2横线)6是否处理过的标志)
(2.3)表格数组tableCellsArray(1左2上3右4下5是否处理过的标志)
(2.4)文字数组textsbwArrary(1左2上3右4下5占空比6质心列7质心行8区域编号9识别方法(0未处理/1直接认出/2被组合/3被召回/4找回的零件/5单独成行列/6其他情况)10所属组号)
(2.5)非文字数组bitsbwArray(1左2上3右4下5占空比6质心列7质心行8区域编号9识别方法(0未处理/1直接认出/2被组合/3被召回/4找回的零件/5单独成行列/6其他情况)10所属组号)
(2.6)文组数组groupTextsArray(1左2上3右4下5所属表格编号6所属行编号7所属列编号8区域编号)
(2.7)行数组rowsArray(1空2上3空4下5类型(空白0有内容1)6平均像素高度7平均方差值8行高度9对文本而言是左右空白厚度平均10与最大可能文本高度的区别11对文本而言是左右空白宽度平均12是789的加权平均13处理时的先后次序)
(2.8)列数组columsArray(1左2空3右4空5类型(空白0有内容1)6平均像素宽度7平均方差值8列宽度9对文本而言是左右空白厚度平均10与最大可能文本高度的区别11对文本而言是左右空白宽度平均12是789的加权平均13处理时的先后次序)
(2.9)表格行列元组数组tableRegionsCellArray(rows:rowsArray中的行序号;cols:columsArray中的行序号;direction:方向)
七.主要函数原型
(1)rectifiedImage=rectifyImage(rgbImage,numSamplesEachEdge)
第一次校正,将输入的彩色图像灰度化后,按采样点进行校正;
(2)[bwImage,Tg]=rectifyImage(rectifiedImage,numSamplesEachEdge,ratioForeBack)
按ratioForeBack取阈值Tg,将校正后的灰度图像R’转变为二值(黑白)图像;
(3)[textsbwArrary,bitsbwArray,imageArray]=rectifyImage(bwImage,textSize,ratioHeightWidth)
将二值图像中每个前景区域,分为文字区域和非文字区域;
bwImage二值(黑白)图像;
textSize文字大小;
ratioHeightWidth长宽比;
textsbwArrary文字数组;
bitsbwArray非文字数组;
imageArray1表分图tableImage2文分图textImage3图形分图graphicImage;
(4)[linesHonArray,linesVerArray,tableCellsArray]=parseTableImage(tableImage,λ1,λ2,λ3)
将表分图解析成表格;
tableImage表分图;
λ1线的最小长度
λ2线的最小宽度
λ3线的最小间距
linesHonArray横向线组
linesVerArray纵向线组
tableCellsArray表格数组;
(5)linesHonArray=locateHonrizontalLines(tableImage,,λ1,λ2,λ3)
表图像中找横线;
tableImage表分图;
λ1线的最小长度
λ2线的最小宽度
λ3线的最小间距
linesHonArray横向线组
(6)linesVerArray=locateVerticallLines(tableImage,λ1,λ2,λ3)
表图像中找纵线;
tableImage表分图;
λ5线的最小长度
λ6线的最小宽度
λ7线的最小间距
linesVerArray纵向线组
(7)tableCellsArray=locateCells(linesHonArray,linesVerArray)
按横、纵线把表解析成表格;
linesHonArray横线数组;
linesVerArray纵线数组;
tableCellsArray表格
(8)[tableCellsArray,textImage]=locateCells(tableImage,textImage,tableCellsArray)
去除表上粘连的文字,新生成tableCellsArray、textImage
tableImage表分图tableImage;
textImage文分图;
tableCellsArray表格;
(9)rowsArray=segRowsFromCell(textImage,tableCellsArray,λ7,λ8,λ9)
表格图像中找行;
(10)columsArray=segColsFromCell(textImage,tableCellsArray,λ7,λ8,λ9)
表格图像中找列;
(11)[imageArray,linesHonArray,linesVerArray,tableCellsArray,textsbwArrary,bitsbwArray,rowsArray,columsArray]=layoutPage(imageArray,linesHonArray,linesVerArray,tableCellsArray,textsbwArrary,bitsbwArray,rowsArray,columsArray)
检测整幅图像的页面布局是否正确,不正确的要调整;
(12)[indexOrder,rowsArray,columsArray]=sortRowsCols(rowsArray,columsArray)
对列/行排序决定下一步处理的先后次序,先列后行
(13)[groupTextsArray,textsbwArrary]=segTextsFromRowOrCol(tableImage,tableCellsArray,Htmin)
行/列投影后切割出疑似文字的单元;
(14)[groupTextsArray,textsbwArrary]=mergeUnitsDynamicPrograming(textsGroup)
从疑似文字的单元用动态规划合并出文字;
(15)PeaksPits=segPeaksPitsFromHist(hist,pageMagin1,pageMagin2,histHeight,meanWidth)
类似于分水岭算法,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域。五个地方用到此函数:
1整幅图像中找横线;
2整幅图像中找纵线;
3表格中切出横行;
4表格中切出纵列;
5行/列投影后切割出文字;
hist要分割的直方图;
pageMagin1左页边距;如果是表格内行/列的直方图,就没这个页边距值;其内高度当0;
pageMagin2右页边距;如果是表格内行/列的直方图,就没这个页边距值;其内高度当0;
histHeight计算直方图时的高度,也是直方图中可能的最大值;
meanWidth直方图中单元的最可能宽度;
PeaksPits直方图中的单元数组,可能是空白、行/列(字)相间。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:包括如下步骤:
S1、将按阈值Tg将校正后的灰度图像R’转变为二值图像;
S2、将二值图像中每个前景区域,分为文字区域、图区域和表区域;
S3、将表分图解析成表格;
S3.1、定位横线;
S3.2、定位纵线;
S3.3、解析成表格;
S3.4、去除表上粘连的文字;
S4、将每个表格分割成行/列:
S5、检测整幅图像的页面布局是否正确;
S6、对列/行排序决定下一步处理的先后次序,先列后行;
S7、对表格的每个列/行,先列后行,只处理单纯的列/行,依次分割成字;
S8、按字处理复合的列/行,依次分割成字。
2.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S1包括如下步骤:
S1.1、统计任务中前景像素对整幅图像像素的占比范围(Rt1-Rt2);
S1.2、生成整幅图像的灰度直方统计图,图中,横轴为灰度值,纵轴为相应灰度值下的像素数;
S1.3、计算前景占比为Rt1、Rt2时灰度直方统计图中的对应灰度值Hr1、Hr2;
S1.4、在对应灰度值范围Hr1-Hr2内选择将图像二分成前景、背景后类间方差最大、类内方差最小的阈值Tg,将图像二分成前景、背景。
3.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S2包括如下步骤:
S2.1、扫描图像,定位到容易与文字区分开的图形,构成图形图像graphicImage;
S2.2、统计任务中文字大小范围(Ht1-Ht2)和长宽比范围(Zt1-Zt2);
S2.3、将大小超过文字最大值的前景区域放入图表数组textsbwArrary,并将全部的图表格构成一张表分图tableImage;
S2.4、将长宽比不在文字经验范围(Zt1-Zt2)的前景区域放入非文字数组bitsbwArray;
S2.5、将大小和长宽比都在文字经验范围内的前景区域放入文字数组textsbwArrary,统计文字的最大、最小和平均高度、宽度、高宽比;
S2.6、将文字区域和非文字区域构成一张文分图;
二值图像bwImage=文分图textImage+表分图tableImage+图形图像graphicImage。
4.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S3具体包括如下步骤:
S3.1、定位横线
S3.1.1、将表分图tableImage横向投影得到纵向投影图Vc;
S3.1.2、采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域;
S3.1.3、将峰值高度超过λ1、峰值宽度小于λ2、左右低洼区域宽度都超过λ4的线条,作为候选线条Li,其峰值根部左右坐标为Li1和Li2;其中,λ1、λ2、λ3为统计后得到的经验值;;
S3.1.4、对找到的线条Li,从表分图In切出左右到页边距的横向线条图像Ih,横向线条图像在表分图In中的上边界线为Li1、下边界线为Li2,将此横向线条图像Ih向纵向投影,得到投影Lh;
S3.1.5、对纵向投影Lh按OSTU算法生成的阈值二值化,对每个值为1、宽度超过λ4个字符的区域(起始位置Hj1、结束位置Hj2),生成一条线条,该线条的左上角坐标为(Hj1,Li1),右下角坐标为(Hj2,Li2);
S3.1.6、同样,对纵向投影图Vc找到的每条线条Li,找到其在图像上的位置,加上左右页边距值;
S3.2、定位纵线
S3.1.1、将表分图tableImage纵向投影得到水平投影图Hr;
S3.2.1、采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界,以及低洼区域间的峰值区域;
S3.2.2、对峰值高度超过λ5、峰值宽度小于λ6、左右低洼区域都超过λ7的线条,作为候选线条Li,其峰值根部左右坐标为Li1和Li2;其中,λ5、λ6、λ7为统计后得到的经验值;
S3.2.3、对找到的线条Li,从表分图In切出上下页边距的纵向线条图像Ih,纵向线条图像在表分图In中的左边界线为Li1、右边界线为Li2,将此纵向线条图像Ih向横向投影,得到投影Lv;
S3.2.4、对横向投影Lv按OSTU算法生成的阈值二值化,对每个值为1、宽度超过λ8个字符的区域,起始位置Hj1、结束位置Hj2,生成一条线条,该线条的左上角坐标为(Li1,Hj1),右下角坐标为(Li2,Hj2);
S3.2.5、同样,对垂直投影图Vc找到的每条线条Li,找到其在图像上的位置,加上上下页边距;
S3.3、解析成表格
S3.3.1、在全黑的图像中,用白色画出步骤S3.1中找到全部横线和步骤S3.2中找到全部纵线;
S3.3.2、用分水岭算法找到图像中所有被白色包围的黑色区域;
S3.3.3、为每个区域编号,并输出每个区域的位置;
S3.4、去除表上粘连的文字
S3.4.1、从表分图tableImage中抹去所有纵向和横向的线条,替代原来的表分图tableImage;
S3.4.2、把表分图tableImage中抹去纵向和横向的线条后余下的部分,加入文分图textImage;
S3.4.3、将整幅图像作为一个表格,相应位置也置入表格数组。
5.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S4包括如下步骤:
S4.1、每个表格向水平和垂直方向累加,构成水平投影图Ht和垂直投影图Vt;
S4.2、采用类似分水岭的算法找到投影中的低洼区域和峰值区域,从最大值开始向最小值下降,找到低洼区域、低洼区域的左右边界和低洼区域间的峰值区域;
S4.3、如果低洼区域最小值为0,或者低洼区域最小值为Vp(Vp≠0)、低洼区域平坦、低洼区域宽度W1、峰值区域平均高度Vr、峰值区域宽度W2满足以下关系:
Vp+λ9×Mm+λ10×Md+λ11×W1>λ12
|Vr-Vp|/(Vr+Vp)>λ13
|W2-W1|/(W2+W1)>λ14
式中,λ9……λ14都是经验参数;
则认为此峰值区域为文字行/列、低洼区域为行/列间空隙,将文字行/列、间隙分别装入行表和列表,同时将低洼区域最小值为0的间隙标记为单纯间隙、低洼区域最小值大于0的间隙标记为复合间隙,单纯间隙无跨行/列的文字,复合间隙可能有跨行/列的文字;上述公式由样本统计,按SVM方法生成的模式分类界限;
S4.4、对水平投影图Ht生成的文字行数组,对垂直投影图Vt生成的文字列数组。
6.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S5包括如下步骤:
S5.1、按文字行/列高度的方差δt、空隙行/列高度的方差δn之和δ(=δt+δn)比较行、列的合理性;如果行方向的高度方差δr<列方向的高度方差δc,则此表格文字横向排列,否则纵向排列;如果图像纵向排列,整幅图像逆时针旋转90o,得到正确摆放的图像;同时反转表格中的所有行/列坐标、文字横/纵排列;
S5.2、如果页面中上面半页的文字行和空白行比下面半页的文字行和空白行都高,此页面正确摆放;否则要旋转180o,颠倒上下部分;
S5.3、如果表格中第一行文字行比其余文字行在左边多两个字的空白,那么页面左右正确摆放的变量Vp加1;对每个表格分析判断,如果页面左右正确摆放的变量Vp大于页面左右不正确摆放的变量Vf,则页面左右正确摆放,否则左右交换。
7.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S6包括如下步骤:
S6.1、对列/行数组rowsArray/columsArray中每单元,按位置从文字数组textsbwArrary找到列/行所在区域内所有文字,放入文组数组groupTextsArray,从中统计此单元文字最大、最小和平均的宽度,并按1空白行中平均像素高度大平均方差值小2文字列/行中的文字是否处于同一列/行判断是复合的列/行,还是单纯的列/行;
S6.2、对列/行数组rowsArray/columsArray中每个文字列/行,按前后左右空白平均厚度Np(i-1)和Np(i+1)、与最大可能文本高度的区别abs(Npi-Nt)/(Npi+Nt)、左右空白平均宽度Wb(i-1)和Wb(i+1)决定处理次序,如下式:
λ10*Np(i-1)+λ11*Np(i+1)+λ12*abs(Npi-Nt)/(Npi+Nt)+λ
13*Wb(i-1)+λ14*Wb(i+1),式中,λ15……λ19都是经验参数;
S6.3、增加列columsArray中每个文字列的优先级;
S6.4、排序优先级并放入rowsArray/columsArray的第13维。
8.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S7包括如下步骤:
S7.1、选择单纯的列/行进行处理;
S7.2、对列向水平方向累加、对行向垂直累加,分别得到水平/垂直投影图;
S7.3、在投影图中将已经检测到的文字前后各缩小一个像素后设置为最大值;
S7.4、对水平/垂直投影图,连续为0的区域设置为低洼区域,找到低洼区域的左右边界,低洼区域间的为峰值区域,判断低洼区域为字间间隙、低洼区域间的峰值区域为文字的可能性,峰值区域的平均高度应该比低洼区域的平均高度至少高于最小字符高度Htmin,将可能性超过经验阈值的峰值区域存入峰值数组、低洼区域存入间隙数组;
S7.5、对峰值数组中每个峰值位置,按动态规划合并峰值和间隙成文字,保证得到的文字及文字间间隙大小均匀;
S7.6、返回文字位置数组,从文分图textImage中抹去此行。
9.如权利要求1所述的结合阈值和投影法的图、表、文混排版面分析方法,其特征在于:所述步骤S8包括如下步骤:
S8.1、从字定位到所在单纯列/行,首先定位到复合列/行,然后沿字的位置找到单纯列/行所在边界;
S8.2、从图像中找到单纯列/行所在区域内所有文字,构成临时文字组textsInRegion,从中统计文字最大、最小和平均的宽度;
S8.3、对列向水平方向累加、对行向垂直累加,分别得到水平/垂直投影图;
S8.4、在投影图中将已经检测到的文字前后各缩小一个像素后设置为最大值;
S8.5、对水平/垂直投影图,连续为0的区域设置为低洼区域,找到低洼区域的左右边界,低洼区域间的为峰值区域,判断低洼区域为字间间隙、低洼区域间的峰值区域为文字的可能性,峰值区域的平均高度应该比低洼区域的平均高度至少高于最小字符高度Htmin,将可能性超过经验阈值的峰值区域存入峰值数组、低洼区域存入间隙数组;
S8.6、对峰值数组中每个峰值位置,按动态规划合并峰值和间隙成文字,保证得到的文字及文字间间隙大小均匀;
S8.7、返回文字位置数组,从文分图textImage中抹去此行。
10.结合阈值和投影法的图、表、文混排版面分析系统,其特征在于,采用如权利要求1-9任一项所述的方法实现图、表、文混排版面分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910764503.9A CN110516574A (zh) | 2019-08-19 | 2019-08-19 | 结合阈值和投影法的图、表、文混排版面分析系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910764503.9A CN110516574A (zh) | 2019-08-19 | 2019-08-19 | 结合阈值和投影法的图、表、文混排版面分析系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110516574A true CN110516574A (zh) | 2019-11-29 |
Family
ID=68626606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910764503.9A Pending CN110516574A (zh) | 2019-08-19 | 2019-08-19 | 结合阈值和投影法的图、表、文混排版面分析系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110516574A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111539412A (zh) * | 2020-04-21 | 2020-08-14 | 上海云从企业发展有限公司 | 一种基于ocr的图像分析方法、系统、设备及介质 |
-
2019
- 2019-08-19 CN CN201910764503.9A patent/CN110516574A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111539412A (zh) * | 2020-04-21 | 2020-08-14 | 上海云从企业发展有限公司 | 一种基于ocr的图像分析方法、系统、设备及介质 |
CN111539412B (zh) * | 2020-04-21 | 2021-02-26 | 上海云从企业发展有限公司 | 一种基于ocr的图像分析方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI380234B (en) | A method for organizing regions identified in image data, and an apparatus for processing regions of image data | |
US20190294663A1 (en) | Method and device for positioning table in pdf document | |
CN108537146A (zh) | 一种印刷体与手写体混合文本行提取系统 | |
CN102509383B (zh) | 一种基于特征检测及模板匹配的混合号码识别方法 | |
CN106875546B (zh) | 一种增值税发票的识别方法 | |
CN106407883A (zh) | 一种复杂表格及其内部手写数字识别方法 | |
CN102567300B (zh) | 图片文档的处理方法及装置 | |
KR910007751B1 (ko) | 문자인식방식 | |
DE69910862T2 (de) | Postadressenlesegerät und Postsortiergerät | |
CN102360490B (zh) | 基于颜色转换和编辑传播的图像季节特征增强方法 | |
CN103646247B (zh) | 一种乐谱识别方法 | |
CN1312625C (zh) | 基于游程邻接图的复杂背景彩色图像中字符提取方法 | |
CN108491788A (zh) | 一种用于财务报表单元格的智能提取方法及装置 | |
US8792719B2 (en) | Image processing device determining attributes of regions | |
CN107545210A (zh) | 一种视频文本提取的方法 | |
CN104484680B (zh) | 一种多模型多阈值组合的行人检测方法 | |
CN110516574A (zh) | 结合阈值和投影法的图、表、文混排版面分析系统及方法 | |
CN110929746A (zh) | 一种基于深度神经网络的电子卷宗标题定位提取与分类方法 | |
CN106485252A (zh) | 图像配准试验点阵靶标图像特征点识别方法 | |
CN108256015A (zh) | 一种基于夜间灯光数据的中国人口空间格网化方法 | |
CN109816629A (zh) | 一种基于k-means聚类的苔质分离方法和装置 | |
CN106033534A (zh) | 基于直线检测的电子阅卷方法 | |
CN112329641B (zh) | 一种表格识别方法、装置、设备及可读存储介质 | |
CN110211168A (zh) | 一种基于改进匹配代价的分段树视差图获取方法 | |
CN107256556A (zh) | 一种基于灰度跳变思想的太阳能电池组件单元分割方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |