1.本发明属于图形提取领域,具体涉及图片表格线提取模型构建方法及图片表格提取方法。
背景技术:2.当前存在的识别图片表格的方法:
3.(1)传统方法:基于opencv的图像处理方法,对图片使用腐蚀和膨胀操作提取图片中的横线和竖线,再对横线和竖线进行叠加操作形成表格结构,可以得到表格中的每一个交点的坐标,对形成的表格提取其轮廓然后使用多边形拟合获得表格的外边框。提取表格中所有连通区域的轮廓来确定表格中每一个单元格的位置和大小,最后根据表格外边框和单元格来确定表格的结构并进行相应信息的提取。
4.(2)深度学习方法:基于图像语义分割,训练出相应的表格线检测模型,实现对图片中的表格线区域的自动检测,再根据检测出的表格线区域提取出表格线重构出表格结构。图像语义分割是通过一定的方法将图像分割成具有一定语义含义的区域块,并识别出每个区域块的语义类别,实现从底层到高层的语义推理过程,最终得到一个具有逐像素语义标注的分割图像。
5.传统的基于候选区域的语义分割方法首先从图像中提取自由形式的区域并对它们的特征进行描述,然后再基于区域进行分类,最后将基于区域的预测转换为像素级预测,使用包含像素分类类别得分最高的区域来标记像素,这种方法需要生成大量的候选区域,花费大量的时间和内存空间。而采用这种方法对图片中的线段区域进行标记,就会使线段区域和线段边缘区域的像素重合,标记效果不好且标记过于繁琐和复杂。
6.常用的语义分割模型:
7.u-net模型:u-net模型的主要执行过程和其他语义分割模型类似,它能够适应很小的训练集。u-net模型的结构如图1所示,包括两部分,第一部分为左边的特征提取部分,第二部分为右边的上采样部分,为编码器-解码器的架构。
8.u-net++模型:u-net++模型如图2所示,是对u-net模型的一种改进,通过不同深度的u-net模型网络的有效集成来缓解未知的网络深度问题,在模型训练时还可以通过剪枝操作来减少u-net++模型的参数量。
9.现有技术中对图像中构成表格线的像素点的标记方法过于繁琐和复杂。且对u-net和u-net++模型的测试结果中也可以发现,u-net++对与粗线的识别效果会比u-net模型的效果要好,对于图像中的粗线区域识别的较为完整,但u-net模型对于较细的线处理的效果较好。
技术实现要素:10.本发明的目的是针对现有技术中u-net和u-net++模型的测试结果各有优劣,同时对图像中表格线的标记方法过于繁琐和复杂的问题,提出一种图片表格线提取模型构建方
法及图片表格提取方法,从而降低表格线像素点标记难度,同时结合u-net和u-net++模型的优势,更加准确的进行图形表格线提取。
11.为达到上述发明目的,本发明提供一种图片表格线提取模型构建方法,包括以下步骤:
12.步骤1、选择训练数据;对包含表格的图像进行分析,使用预设宽度的线段标注每一条表格线,并对在线段上的像素点进行标记;未标记的部分则视为背景部分;
13.步骤2、利用训练数据构建数据集;针对任意一个数据集,将其随机拆分为训练集及测试集;
14.步骤3、构建u-net模型、u-net++模型或u-net与u-net++的集成模型,采用训练集对模型进行训练;直至经测试集测试,模型预测性能达到预设值后停止训练,图片表格线提取模型构建完成。
15.具体的,所述步骤1中,当待标注的表格线为横线或竖线时,使用预设宽度的直线段对其进行标注;标记时使用其首尾两端的像素点完成整条线段的像素点标记。
16.进一步的,所述步骤1中,所述预设宽度为单像素宽度。
17.进一步的,对粗表格线使用多条直线段进行标记,所述粗表格线的宽度大于直线段的预设宽度。
18.再进一步的,所述步骤3中,当构建模型为u-net与u-net++的集成模型时,以u-net模型及u-net++模型的输出直接相加或加权相加作为模型最终的输出结果。
19.再进一步的,所述模型采用带权重的二分类交叉熵损失函数,公式为:
[0020][0021]
式中,l
weighted
:区分正负样本权重的loss函数;n:样本总量;β:正样本的权重;α:负样本的权重;yi:表示样本i的标签;pi:表示样本i预测为正类的概率。
[0022]
本发明还提供一种图片表格提取方法,包括以下步骤:
[0023]
步骤1:对图片进行版面分析,提取表格区域;
[0024]
步骤2:构建权利要求1-6任意一项所述方法构建的图片表格提取模型,将其应用于对每一个表格区域进行表格线提取,确定该区域中表格线上的像素点类别,从而确定表格线;
[0025]
步骤3:对表格线进行优化;
[0026]
步骤4:提取文字信息;
[0027]
步骤5:根据优化后的表格线及文字信息生成excel表。
[0028]
具体的,所述步骤3中,对表格线进行优化包括:
[0029]
预设水平线角度偏移阈值;去除超出水平线角度偏移阈值的横线;
[0030]
预设垂直线角度偏移阈值;去除超出垂直线角度偏移阈值的竖线。
[0031]
进一步的,所述步骤3中,对表格线进行优化包括:
[0032]
设定同一水平线上的两条线段之间的最短水平距离阈值;当同一水平线上的两条线段之间的距离小于最短水平距离阈值时,连接两条线段;
[0033]
设定同一垂直线上的两条线段之间的最短垂直距离阈值;当同一垂直线上的两条线段之间的距离小于最短垂直距离阈值时,连接两条线段。
[0034]
再进一步的,所述步骤3中,对表格线进行优化包括:合并同一方向上距离小于15像素的线段。
[0035]
本发明的有益效果在于,本发明使用线段对每一条表格线进行标注分类,当代标注的表格线为横线或者竖线时,则采用直线段的首尾端进行标注,大大降低了像素点的标注难度。在线段较粗的区域使用多条线段进行标记,使得区域内的像素点尽可能多的被标记为线段上的像素点,而不是被标记为背景像素点,减少训练时训练数据的误差,提高模型准确率。基于深度学习理论建立u-net与u-net++的集成模型,以u-net及u-net++的输出概率直接相加或加权相加作为模型叠加的输出结果,可以结合u-net模型及u-net++模型的优势于一体,使得训练模型对粗细线头都具有更好的识别效果。
附图说明
[0036]
图1为本发明背景技术中u-net模型结构图。
[0037]
图2为本发明背景技术中u-net++模型结构图。
[0038]
图3为本发明实施例1中对于表格线密集的图片,u-net++模型识别结果与u-net模型识别结果对比。
[0039]
图4为本发明实施例1中u-net模型的识别结果,u-net++模型识别结果,以及两个模型识别结果的叠加。
[0040]
图5为本发明实施例3中模型概率输出结果图。
[0041]
图6为本发明实施例3中表格线提取结果图。
[0042]
图7为本发明实施例3中去除偏移过多的表格线结果图。
[0043]
图8为本发明实施例3中断续线连接结果图。
[0044]
图9为本发明实施例3中合并贴近的线段结果图。
[0045]
图10为本发明实施例3中表格线交点补齐结果图。
[0046]
图11为本发明实施例3中表格线延长或缩短结果图。
具体实施方式
[0047]
下面结合实施例,详细描述本发明的技术方案。
[0048]
实施例1
[0049]
本例构建图片表格提取模型,包括以下步骤:
[0050]
步骤1:选择训练数据;构建数据集。
[0051]
传统的基于候选区域的语义分割方法首先从图像中提取自由形式的区域并对它们的特征进行描述,然后再基于区域进行分类,最后将基于区域的预测转换为像素级预测,使用包含像素分类类别得分最高的区域来标记像素,这种方法需要生成大量的候选区域,花费大量的时间和内存空间。而采用这种方法对图片中的线段区域进行标记,就会使线段区域和线段边缘区域的像素重合,标记效果不好且标记过于繁琐和复杂。
[0052]
而本例对包含表格的图像进行分析,使用预设宽度的线段对每一条表格线进行标注,并对线段上的像素点进行标记,未标记的部分则视为背景部分。使用线段进行标识的方式,替代了原有的图像分割模型用于区分不同区块的概念,这种标记方式有效的降低了像素点的标记繁琐度与复杂度。
[0053]
优选的,当待标注的表格线为横线或竖线时,使用直线段对其进行标注;标记时使用其首尾两端的像素点完成整条线段的像素点标记。训练时增加对线段上像素点的权重使模型更偏向于线段上的像素点的识别,这样可以进一步提高模型的准确性。
[0054]
从线段代替区块进行标记可以看出,在这种情况下,图片上的线段越细,在标记信息中,被标记正确的像素点越多,模型的训练效果越好。如果模型表格线过粗,形成了一个矩形区块,而使用一条线段作为这个区块的标记会使这个区块内除这条线段上的像素点都被标记为非线段区域,增加训练时的误差,模型容易将线段区域的像素点分类为背景像素点,尽管可以增大被标记为线段的像素点的训练权重,对较粗线段区域的识别效果仍然不是很好。
[0055]
为了解决上述问题,本例对粗表格线使用多条直线段进行标记。粗表格线是指宽度大于直线段的预设宽度的表格线。这样可以保证区域内的像素点尽可能多的被标记为线段上的像素点而不是被标记为背景像素点,减少训练时训练数据的误差,进一步提升了模型的准确性。
[0056]
理论上讲,表格线宽度占用的像素为多少就使用多少条标注线进行标注,这种情况下的标注效果是最好的,因此,直线段宽度可以预设为单像素宽度。
[0057]
步骤2:利用训练数据构建数据集;针对任意一个数据集,将其随机拆分为训练集及测试集。
[0058]
步骤3、构建u-net模型、u-net++模型或u-net与u-net++的集成模型,采用训练集对模型进行训练;直至经测试集测试,模型预测性能达到预设值后停止训练,图片表格线提取模型构建完成。
[0059]
u-net模型和u-net++模型的区别如下:
[0060]
u-net++对粗线的识别效果会比u-net模型的效果要好,对于图像中的粗线区域识别的较为完整,u-net模型的识别结果中粗线区域部分较多的像素点无法被分类为线段上的像素点。
[0061]
u-net模型对于较细的线处理的较好,u-net++模型则会将较细线周围的像素点分类为线段上的像素点,增大了识别结果的误差,但是对线段识别的结果影响不大。
[0062]
对于密集线条,如图3所示,u-net模型识别效果不太好,表格线密集区域被其识别为背景区域导致有很多表格线未被识别出来,相对来说u-net++模型识别的完整率就较高。如果有多种类型的线段,则可以使用多个模型的识别结果进行集成增强识别的效果。具体可以根据具体需求选择构建不同模型,以提高识别准确率。
[0063]
当构建模型为u-net与u-net++的集成模型时,如果将两个模型网络进行集成,构造成一个模型网络,再使用训练数据进行训练,会导致训练速度较慢且无法利用到已经训练过的u-net模型和u-net模型文件。而直接以u-net及u-net++的输出概率直接相加或加权相加作为模型最终的输出结果,则可以有效结合两种模型对粗细线段识别的优势,有效的增强了识别效果,如图4所示。
[0064]
实施例2
[0065]
本例以实施例1中构建的模型为基础,对其损失函数的选择进行描述,具体如下:
[0066]
(1)u-net和u-net++模型均为图像语义分割模型,属于像素级别的分类任务,而用于图像语义分割任务最常用的损失函数是交叉熵损失函数,计算方式为:
[0067]
row loss=-∑y
true
log(y
pred
)
[0068]
从这个交叉熵损失函数中可以看到,当y
true
为0,即输入中没有被标记为横线的像素点的损失是为0的,只有当y
true
为1时,即输入中像素点被标记为横线时才会存在损失值,所以如果采用这个交叉熵损失函数进行计算的话,会使大多数像素点的损失被抛弃,导致模型训练的效果不佳。
[0069]
(2)为了解决上述问题,引入二分类交叉熵损失函数,即bce loss,该损失函数公式为:
[0070]
bce loss=-∑[y
true
logy
pred
+(1-y
true
)log(1-y
pred
)]
[0071]
从这个公式中可以看到,当y
true
为0时,其损失值为-log(1-y
pred
),当y
true
为1时,损失值不变,这种情况下所有像素点的损失都被包含在内,然后对所有像素的损失进行平均,因此实质上是在对图像中的每一个像素点进行平等的学习。
[0072]
但是在当前任务中,被标记为横线或竖线的像素点占图像中总的像素点的比例过低,图像中类别分布不均衡,这可能会导致训练过程由像素点数量多的类所主导,即未被标记为横线或竖线的像素点主导,模型会主要学习数量多的类别样本的特征,并且学习出来的模型会更偏向将像素预测为该类别。
[0073]
(3)针对上述问题,对输出概率分布向量中的每个值进行加权,希望模型能更加关注数量较少的被标记的像素点来缓解图像中类别不均衡的问题,使模型能学习到更多被标记的像素点的特征。所以二分类交叉熵损失函数更改为带权重的二分类交叉熵损失函数,公式为:
[0074][0075]
l
weighted
:区分正负样本权重的loss函数;n:样本总量;β:正样本的权重,默认取1,也可以取略高于或低于1的值;α:负样本的权重,默认取1,也可以取略高于或低于1的值;yi:表示样本i的标签,正类为1,负类为0;pi:表示样本i预测为正类的概率。
[0076]
在这个公式中,加权交叉熵损失函数只是在bce loss的基础上为每一个类别添加了一个权重参数为正样本加权。当β》1时,会更关注被标记的像素点的损失值,使对横线或竖线上的像素点识别效果更好。最后再对每个类别的加权损失平均值求和即为总的损失。
[0077]
实施例3
[0078]
本例提供一种图片表格提取方法,基于深度学习的图片表格信息提取过程包括以下步骤:
[0079]
步骤1:对图片进行版面分析,提取表格区域。
[0080]
对于一张图片来说,可能包含一张或多张表格,也有可能不包含表格,所以需要先找到图片中的表格区域再进行表格线的提取和表格的重构。
[0081]
步骤2:构建实施例1中任意一种的图片表格提取模型,将其应用于对每一个表格区域进行表格提取,确定该区域中每一个像素点的类别,确定表格线。具体模型选择在实施例1中已经具体描述过,此处不再赘述。
[0082]
本例具体使用的是基于u-net和u-net++集成模型,以u-net及u-net++的输出概率直接相加或加权相加作为模型最终的输出结果。无论是u-net模型还是u-net++模型,它们的输出都是每一个像素点被分为横线或竖线的分类概率,将模型的数据结果保存到图中,
一层为分类为横线的概率,一层为分类为竖线的概率,如图5所示,表格提取图如图6所示。
[0083]
步骤3:对表格线进行优化;可以包括以下方法:
[0084]
1、去除杂乱线条:预设水平线角度偏移阈值;去除超出水平线角度偏移阈值的横线;预设垂直线角度偏移阈值;去除超出垂直线角度偏移阈值的竖线。图7是去除了和大多数横线或竖线角度相差超过2
°
的线段的结果。
[0085]
2、断续线连接,确定连通域:设定同一水平线上的两条线段之间的最短水平距离阈值;当同一水平线上的两条线段之间的距离小于最短水平距离阈值时,连接两条线段;设定同一垂直线上的两条线段之间的最短垂直距离阈值;当同一垂直线上的两条线段之间的距离小于最短垂直距离阈值时,连接两条线段。处理后如图8所示。
[0086]
3、为了更好的处理表格线数据,需要将其转回原始尺寸。
[0087]
4、合并重叠或贴近线段,本例认为同一方向上距离小于15像素的线段为重叠或贴近线段。处理后如图9所示。
[0088]
5、对每一条横线和竖线之间的交点处区域进行处理,判断是否存在应该相交但没有相交的情况,并且对线段进行延长使横线和竖线完全相交,表格线交点补齐如图10所示。
[0089]
6、表格线延长或缩短,处理后如图11所示。
[0090]
7、将表格最外围用一个矩形包围,再去除掉重合的线段,即可完成对表格线的调整操作。这样的话就能确保将数据存入到excel文件中时单元格对应不出现问题。
[0091]
步骤4:提取文字信息;为了将表格中每一个单元格中的信息提取出来,需要基于ocr技术识别出单元格中的文字信息。
[0092]
步骤5:根据优化后的表格线及文本信息生成excel表。至此,完成了对图片表格信息的提取和存储功能。