一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

表格文本的处理方法、装置、电子设备和可读介质与流程

2022-05-08 06:12:14 来源:中国专利 TAG:


1.本公开涉及表格识别技术领域,具体而言,涉及一种表格文本的处理方法、装置、电子设备和可读介质。


背景技术:

2.目前,通过提取采集图像中的表格,并通过图像处理算法和识别算法将图像表格转换为电子表格,以提升办公效率。
3.在相关技术中,对于表格的识别算法通常是通过表格识别模型实现的,表格识别模型是基于图卷积网络训练得到的,针对表格的节点关系进行后处理以还原待识别表格的表格结构。
4.但是,表格识别过程依赖于大量的训练工作,即根据标注的表格样本进行训练过程,不仅需要进行大量的训练和测试工作,而且在图像噪声大、样式多变的情况下,提取表格的准确性和可靠性均较差。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种表格文本的处理方法、装置、电子设备和可读介质,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的表格识别准确性差的问题。
7.根据本公开实施例的第一方面,提供一种表格文本的处理方法,包括:提取图像中的子线段;确定子线段的属性信息;根据属性信息将子线段划分至对应的线段集合;对线段集合中的子线段进行聚类处理,以得到表格的第一方向线条、第二方向线条和线条间连接点;根据第一方向线条、第二方向线条和线条间连接点确定表格的单元格内的文本信息。
8.在本公开的一种示例性实施例中,在通过lsd(line segment detector,直线段检测)线段提取算法确定图像中的子线段前,还包括:检测待处理图像的着色形式是否为灰度;若待处理图像的着色形式不是灰度,则将待处理图像重新着色为灰度图像;将灰度图像确定为待lsd线段提取算法的图像。
9.在本公开的一种示例性实施例中,根据属性信息将子线段划分至对应的线段集合包括:解析属性信息以确定子线段的第一宽度、第一高度和角度;确定图像的第二宽度和第二高度;计算第一宽度与第二宽度之间的宽度比值;计算第一高度与第二高度之间的高度比值;将宽度比值大于预设宽度比值,且角度属于预设第一角度阈值区间的子线段划分至第一方向线段集合;将高度比值大于预设高度比值,且角度属于预设第二角度阈值区间的子线段划分至第二方向线段集合。
10.在本公开的一种示例性实施例中,对线段集合中的子线段进行聚类处理,以得到表格的第一方向线条、第二方向线条和线条间连接点包括:确定线段集合中的子线段之间的第一间距;根据第一间距将子线段聚类至子集合;确定子集合之间的第二间距;根据第二
间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点。
11.在本公开的一种示例性实施例中,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点包括:根据第二间距对第一方向线段集合的子线段进行聚类;对聚类后的第一方向线段集合的子线段进行行方向上的首尾拼接,以得到表格的第一方向长线段;根据第一方向长线段的间距对第一方向长线段进行列方向上的合并,以得到表格的第一方向线条。
12.在本公开的一种示例性实施例中,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点还包括:根据第二间距对第二方向线段集合的子线段进行聚类;对聚类后的第二方向线段集合的子线段进行列方向上的首尾拼接,以得到表格的第二方向长线段;根据第二方向长线段的间距对第二方向长线段进行行方向上的合并,以得到表格的第二方向线条。
13.在本公开的一种示例性实施例中,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点还包括:根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条和第二方向线条;将第一方向线条和第二方向线条之间的交点确定为线条间连接点;根据线条间连接点对第一方向线条和第二方向线条进行筛选;根据筛选后的第一方向线条、筛选后的第二方向线条和线条间连接点确定待填充表格。
14.在本公开的一种示例性实施例中,表格文本的处理方法还包括:根据第一方向线条、第二方向线条和线条间连接点将表格从图像中提取,并确定表格的单元格;对单元格内的文本进行文本检测和文本行识别;根据文本检测的结果和文本行识别的结果确定单元格内的文本内容;根据线条间连接点的位置坐标将文本内容写入对应的待填充表格。
15.根据本公开实施例的第二方面,提供一种表格文本的处理装置,包括:确定模块,用于提取图像中的子线段;确定模块还用于,确定子线段的属性信息;划分模块,用于根据属性信息将子线段划分至对应的线段集合;聚类模块,用于对线段集合中的子线段进行聚类处理,以得到表格的第一方向线条、第二方向线条和线条间连接点;确定模块还用于,根据第一方向线条、第二方向线条和线条间连接点确定表格的单元格内的文本信息。
16.根据本公开的第三方面,提供一种电子设备,包括:存储器;以及耦合到存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如上述任意一项的方法。
17.根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项的表格文本的处理方法。
18.本公开实施例,通过提取图像中的子线段,并确定子线段的属性信息,进而根据属性信息确定第一方向线段、第二方向线段和线条间连接点,以确定表格的单元格和相应的填充的文本内容,不需要对表格进行标识、训练和测试,而且不受表格形式和图像质量的影响,提高了表格的识别效率、准确性和可靠性。
19.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本公开的一个示例性实施例中表格文本的处理方法的流程图;
22.图2是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
23.图3是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
24.图4是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
25.图5是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
26.图6是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
27.图7是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
28.图8是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
29.图9是本公开的另一个示例性实施例中表格文本的处理方法的流程图;
30.图10是本公开的一个示例性实施例中表格文本的处理方案中的表格的示意图;
31.图11是本公开的另一个例性实施例中表格文本的处理方案中的表格的示意图;
32.图12是本公开的另一个示例性实施例中表格文本的处理方案中的表格的示意图;
33.图13是本公开的另一个示例性实施例中表格文本的处理方案中的表格的示意图;
34.图14是本公开的另一个示例性实施例中表格文本的处理方案中的表格的示意图;
35.图15是本公开示例性实施例中一种表格文本的处理装置的方框图;
36.图16是本公开示例性实施例中一种电子设备的方框图。
具体实施方式
37.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
38.此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
39.下面结合附图对本公开示例实施方式进行详细说明。
40.图1是本公开示例性实施例中表格文本的处理方法的流程图。
41.参考图1,表格文本的处理方法可以包括:
42.步骤s102,提取图像中的子线段。
43.步骤s104,确定子线段的属性信息。
44.步骤s106,根据属性信息将子线段划分至对应的线段集合。
45.步骤s108,对线段集合中的子线段进行聚类处理,以得到表格的第一方向线条、第二方向线条和线条间连接点。
46.步骤s110,根据第一方向线条、第二方向线条和线条间连接点确定表格的单元格内的文本信息。
47.在本公开的一种示例性实施例中,通过提取图像中的子线段,并确定子线段的属性信息,进而根据属性信息确定第一方向线段、第二方向线段和线条间连接点,以确定表格的单元格和相应的填充的文本内容,不需要对表格进行标识、训练和测试,而且不受表格形式和图像质量的影响,提高了表格的识别效率、准确性和可靠性。
48.在本公开的一种示例性实施例中,第一方向和第二方向为垂直的两个方向。
49.在本公开的一种示例性实施例中,第一方向为横向。
50.在本公开的一种示例性实施例中,第二方向为纵向。
51.下面,对表格文本的处理方法的各步骤进行详细说明。
52.如图2所示,在提取图像中的子线段前,还包括:
53.步骤s202,检测待处理图像的着色形式是否为灰度。
54.步骤s204,若待处理图像的着色形式不是灰度,则将待处理图像重新着色为灰度图像。
55.步骤s206,将灰度图像确定为待lsd线段提取算法的图像。
56.在本公开的一种示例性实施例中,通过对输入的文档图片转换成灰度图,实现了局部直线边缘是灰度值从黑到白或从白到黑变化明显的图像区域,转为灰度图后图像的直线边缘更容易被lsd检测和提取到。
57.如图3所示,根据属性信息将子线段划分至对应的线段集合包括:
58.步骤s302,解析属性信息以确定子线段的第一宽度、第一高度和角度。
59.步骤s304,确定图像的第二宽度和第二高度。
60.步骤s306,计算第一宽度与第二宽度之间的宽度比值。
61.步骤s308,计算第一高度与第二高度之间的高度比值。
62.步骤s310,将宽度比值大于预设宽度比值,且角度属于预设第一角度阈值区间的子线段划分至第一方向线段集合。
63.步骤s312,将高度比值大于预设高度比值,且角度属于预设第二角度阈值区间的子线段划分至第二方向线段集合。
64.在本公开的一种示例性实施例中,通过计算图像内线段宽度与图像宽度的比值是否超过阈值,结合线段角度是否在第一角度阈值区间范围内的横线判定策略,实现对横线线段的分类方法,同时通过设定角度阈值区间的方式,使得本方法对一些具有一定旋转角度的表格横线的检测更加灵活,大幅降低了对表格横线漏检的概率。
65.在本公开的一种示例性实施例中,第一角度阈值区间为横向角度阈值区间。
66.在本公开的一种示例性实施例中,通过计算图像内线段高度与图像高度的比值是否超过阈值,结合线段角度是否在第二角度阈值区间范围内的纵线判定策略,实现对纵线
线段的分类方法,同时通过设定角度阈值区间的方式,使得本方法对一些具有一定旋转角度的表格纵线的检测更加灵活,大幅降低了对表格纵线漏检的概率。
67.在本公开的一种示例性实施例中,第二角度阈值区间为纵向角度阈值区间。
68.如图4所示,对线段集合中的子线段进行聚类处理,以得到表格的第一方向线条、第二方向线条和线条间连接点包括:
69.步骤s402,确定线段集合中的子线段之间的第一间距。
70.步骤s404,根据第一间距将子线段聚类至子集合。
71.步骤s406,确定子集合之间的第二间距。
72.步骤s408,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点。
73.在本公开的一种示例性实施例中,对所有横线线段按y轴坐标排序,完成横线线段按照从上到下的顺序排列后,通过计算每左右两条相邻横线在x轴的第一方向间距是否小于一定阈值的方式,判定多条横线线段是否可在水平方向上聚合成一条长横线线段。弥补了局部检测算法在做直线提取时,在水平方向会被割裂成多条线段的不足,提升了对表格横线提取的准度。
74.在本公开的一种示例性实施例中,对所有纵线线段按x轴坐标排序,完成纵线线段按照从左到右的顺序排列后,通过计算每上下两条相邻纵线在y轴的第二方向间距是否小于一定阈值的方式,判定多条纵线线段是否可在竖直方向上聚合成一条长纵线线段。弥补了局部检测算法在做直线提取时,在竖直方向会被割裂成多条线段的不足,提升了对表格纵线提取的准度。
75.在本公开的一种示例性实施例中,对所有横线线段按照从左到右的顺序排列后,通过计算每上下两条相邻横线在y轴的第二方向间距是否小于一定阈值的方式,判定多条横线线段是否可聚合成一条长横线线段,弥补了局部检测算法在做直线提取时,在竖直方向会对同一条横线线段提取出相邻的两条或多条横线线段的不足,进一步提升和确保了对表格横线线段提取的准确度。
76.在本公开的一种示例性实施例中,对所有纵线线段按照从上到下的顺序排列后,通过计算每左右两条相邻纵线在x轴的第一方向间距是否小于一定阈值的方式,判定多条纵线线段是否可聚合成一条长纵线线段,弥补了局部检测算法在做直线提取时,在水平方向会对同一条纵线线段提取出相邻的两条或多条纵线线段的不足,进一步提升和确保了对表格纵线线段提取的准确度。
77.如图5所示,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点包括:
78.步骤s502,根据第二间距对第一方向线段集合的子线段进行聚类。
79.步骤s504,对聚类后的第一方向线段集合的子线段进行行方向上的首尾拼接,以得到表格的第一方向长线段。
80.步骤s506,根据第一方向长线段的间距对第一方向长线段进行列方向上的合并,以得到表格的第一方向线条。
81.在本公开的一种示例性实施例中,通过先在行方向上将多条短横线线段做首尾连接,拼接成长横线线段,再在列方向上将两条或多条间距非常接近的多行横线线段,合并成
一条横线线段。对表格横线的高精度提取实现双重保证。
82.如图6所示,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点还包括:
83.步骤s602,根据第二间距对第二方向线段集合的子线段进行聚类。
84.步骤s604,对聚类后的第二方向线段集合的子线段进行列方向上的首尾拼接,以得到表格的第二方向长线段。
85.步骤s606,根据第二方向长线段的间距对第二方向长线段进行行方向上的合并,以得到表格的第二方向线条。
86.在本公开的一种示例性实施例中,通过先在列方向上将多条短纵线线段做首尾连接,拼接成长纵线线段,再在行方向上将两条或多条间距非常接近的多列纵线线段,合并成一条纵线线段。对表格纵线的高精度提取实现双重保证。
87.如图7所示,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点还包括:
88.步骤s702,根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条和第二方向线条。
89.步骤s704,将第一方向线条和第二方向线条之间的交点确定为线条间连接点。
90.步骤s706,根据线条间连接点对第一方向线条和第二方向线条进行筛选。
91.步骤s708,根据筛选后的第一方向线条、筛选后的第二方向线条和线条间连接点确定待填充表格。
92.在本公开的一种示例性实施例中,通过对分类后的横线线段和纵线线段分别经过线段聚类、线段合并两次筛选后,通过分析所有线段的交点特征,排除不满足文档图片中有线表格交点特征的横线和纵线,实现对表格线的三次筛选,三轮筛选一方面紧密结合了文档图片中的表格线特征,另一方面合理规避了局部检测算法在检测线段时出现一条线段被割裂成多条线段的现象,使得本专利方法对表格的检测更具鲁棒性。
93.如图8所示,表格文本的处理方法还包括:
94.步骤s802,根据第一方向线条、第二方向线条和线条间连接点将表格从图像中提取,并确定表格的单元格。
95.步骤s804,对单元格内的文本进行文本检测和文本行识别。
96.步骤s806,根据文本检测的结果和文本行识别的结果确定单元格内的文本内容。
97.步骤s808,根据线条间连接点的位置坐标将文本内容写入对应的待填充表格。
98.在本公开的一种示例性实施例中,通过将表格横线集合和表格纵线集合合并成一个新集合,在新集合中将互有交点的横线和纵线做并查集的“并”操作,归为一个父类,做完一轮并操作后,所有属于同一张表格内的横线和纵线都被划分在一个父类的集合中。接着遍历这些子集,做并查集的“查”操作,找出属于同一个父节点(即属于同一张表格)的横线集合和纵线集合,实现对多表格线段信息的精准提取。
99.在本公开的一种示例性实施例中,对各个表格线段信息进行分析后得出表格内的所有交点位置信息,进而提取出各表格最外围的四个角点位置坐标,实现多表格的定位和检测。
100.在本公开的一种示例性实施例中,根据单元格四点位置信息与文字检测的文本行
位置坐标信息建立对应关系,如果一个单元格中有多行文本,则将多行文本拼接成一行文本,对应到单元格中;如果一个单元格中仅有一行文本,则将单行文本直接与单元格对应;如果一个单元格没有识别出文本,则该单元格对应的文本内容为空、实现对表格中单行文本、多行文本以及空文本的精准识别。
101.如图9、图10、图11、图12、图13和图14所示,根据本公开的实施例的表格文本的处理方法还包括:
102.步骤s902,启动表格文本的处理。
103.步骤s904,将文档图像转换为灰度图像1002。
104.在本公开的一个实施例中,在使用lsd线段检测算法前,需要先对输入的文档图片转换成灰度图,进而实现了局部直线边缘是灰度值从黑到白或从白到黑变化明显的图像区域,转为灰度图后图像的直线边缘更容易被lsd检测和提取到,如图10所示,灰度图像1002中还包括无边框的文本框1006,则不对文本框的内容进行提取。
105.步骤s906,使用lsd对图像进行线段检测。
106.步骤s908,判断图像中是否有线段,若是,则执行步骤s910,若否,则执行步骤s926。
107.步骤s910,线段集合构建,筛选出符合表格(1004或1008)特征长度的线段集合l。
108.步骤s912,线段集合分类:计算线段集合l中所有线段的角度和长度,按照预设阈值将线段集合l分类为横线集合hl和纵线集合vl。
109.在本公开的一个实施例中,将lsd提取到的线段计入线段集合l中,如果线段集合l非空,分析线段集合l中的线段特征,得出每条线段的宽度、高度和角度信息,计算每条线段的宽度w_i和高度h_i分别对应于文档图像的宽度w和高度h的比例,并分别记为w_ratio_i和h_ratio_i,根据阈值判断的预设规则,初步筛选出符合表格(1004或1008)线特征的第一横线集合hl和第一纵线集合vl。
110.在本公开的一个实施例中,阈值判断的预设规则包括:若w_ratio_i大于设定阈值,并且该条线段的角度在第一角度的阈值区间范围内,则将此线段划分为横线集合,将线段划分至第一横线集合hl中。
111.在本公开的一个实施例中,阈值判断的预设规则包括:若h_ratio_i大于设定阈值,并且该条线段的角度在第二角度的阈值区间范围内,则将此线段划分为纵线集合,将线段划分至第一纵线集合vl中。
112.步骤s914,判断第一横线集合hl和第一纵线集合vl是否都存在,若是,则执行步骤s916,若否,则执行步骤s926。
113.步骤s916,线段聚类:依据表格(1004或1008)的属性特征,属性信息包括宽度、高度、间距和角度信息等,但不限于此,从集合第一横线集合hl和第一纵线集合vl中筛选出不属于表格(1004或1008)内的横线和纵线,完成表格(1004或1008)线的一次筛选。
114.在本公开的一个实施例中,如果l集合为空,或者第一横线集合hl和第一纵线集合vl中任何一个集合为空,说明该文档图片不可能存在有线表格(1004或1008),因为有线表格(1004或1008)由横线和纵线组成,因此,当l为空,或者第一横线集合hl和第一纵线集合vl中任何一个集合为空的情况下,检测出不存在有线表格(1004或1008),不做表格(1004或1008)识别。
115.步骤s918,线段合并:分别对横线集合ht、纵线集合vt中属于同一行的横线、同一列的纵线做合并,分别记为横线集合hl’和纵线集合vl’,完成表格(1004或1008)线二次筛选。
116.在本公开的一个实施例中,横线的合并步骤包括:
117.(1)对第一横线集合hl中的所有线段按y轴坐标排序,这样做是为了将第一横线集合hl中的横线按照从上到下的顺序排列。计算排序后的第一横线集合hl中每相邻两条横线线段的间距,如果间距小于一定阈值,说明这两条横线线段很有可能原本就是一条长横线线段,在第一横线集合hl中对这些原本就是一条长横线的线段建立小集合,记为hgroup(i)
118.(2)对各小集合hgroup(i)中的所有线段按x轴坐标排序,这样做是为了将每组子集合hgroup(i)中的线段按照从左到右的顺序排列,然后以子集合hgroup(i)为单位,计算各子集合之间的l2距离,根据l2距离设定一定的阈值条件,结合lsd对表格(1004或1008)线检测的特点,可以对属于表格(1004或1008)中的横线做筛选,从而完成对表格(1004或1008)中横线线段的一次筛选,横线的各子集合之间的l2距离hl2_distance的计算如下公式(1)所示:
[0119][0120]
其中i和j为hgroup子集中的线段序号,hgroup(i)
start
为子集合hgroup(i)中第i条横线线段的起始点,hgroup(i)
end
为子集合hgroup(i)中第i条横线线段的终止点,hgroup(j)
start
为子集合hgroup(i)中第j条横线线段的起始点,hgroup(j)
end
为子集合hgroup(i)中第j条横线线段的终止点。
[0121]
在本公开的一个实施例中,纵线的合并步骤包括:
[0122]
对第一纵线集合vl中的所有线段按x轴坐标排序,这样做是为了将第一纵线集合vl中的纵线按照从左到右的顺序排列。计算排序后的第一横线集合hl中每相邻两条纵线线段的间距,如果间距小于一定阈值,说明这两条纵线线段很有可能原本就是一条长纵线线段,在集合vl中对这些原本就是一条长纵线的线段建立小集合,记为vgroup(i)段,在集合vl中对这些原本就是一条长纵线的线段建立小集合,记为vgroup(i)
[0123]
对各小集合vgroup(i)中的所有线段按y轴坐标排序,这样做是为了将每组子集合vgroup(i)中的线段按照从上到下的顺序排列,然后以子集合vgroup(i)为单位,计算各子集合之间的l2距离,根据l2距离设定一定的阈值条件,结合lsd对表格(1004或1008)线检测的特点,可以对属于表格(1004或1008)中的纵线做筛选,从而完成对表格(1004或1008)中纵线线段的一次筛选。
[0124]
纵线的各子集合之间的l2距离vl2_distance的计算如下公式(2)所示:
[0125][0126]
其中i和j为vgroup(i)子集中的线段序号,vgroup(i)
start
为子集合vgroup(i)中第i条纵线线段的起始点,vgroup(i)
end
为子集合vgroup(i)中第i条纵线线段的终止点,vgroup(j)
start
为子集合vgroup(i)中第j条纵线线段的起始点,vgroup(j)
end
为子集合
vgroup(i)中第j条纵线线段的终止点。
[0127]
在本公开的一个实施例中,做完表格(1004或1008)横线聚类,得到筛选后的第一横线集合hl后,对第一横线集合hl中所有子集合hgroup(i)的横线线段做合并,合并策略如下:
[0128]
在本公开的一个实施例中,先进行行方向合并:子集合hgroup(i)中如果存在一条长横线线段对应多条短横线线段,将多条短横线线段做首尾连接,拼接成长横线线段。
[0129]
在本公开的一个实施例中,后进行列方向合并:子集合hgroup(i)中如果存在一条横线线段被检测出了间距非常接近的多行横线线段,将这些多行横线线段合并成如图11所示的一条横线(1102或1104)。
[0130]
在本公开的一个实施例中,做完表格(1004或1008)横线的合并操作后,准确地消除了长横线在提取时被割裂成多条短横线的现象。
[0131]
在本公开的一个实施例中,先进行列方向合并:子集合vgroup(i)中如果存在一条长纵线线段对应多条短纵线线段,将多条短纵线线段做首尾连接,拼接成长纵线线段。
[0132]
在本公开的一个实施例中,后进行行方向合并:子集合vgroup(i)中如果存在一条纵线线段被检测出了间距非常接近的多列纵线线段,将这些多列纵线线段合并成如图12所示的一条纵线(1202或1204)。
[0133]
在本公开的一个实施例中,做完表格(1004或1008)纵线的合并操作后,准确地消除了长纵线在提取时被割裂成多条短纵线的现象。
[0134]
步骤s920,交点计算:计算第二横线集合hl’和第二纵线集合vl’的交点,记录每一条横线、每一条纵线的交点个数。
[0135]
步骤s922,表格(1004或1008)线三次筛选:根据表格(1004或1008)内横线和纵线的交点特征对第二横线集合hl’和第二纵线集合vl’做三次筛选。
[0136]
在本公开的一个实施例中,得到经过二次筛选的第二横线集合hl’和第二纵线集合vl’以后,计算第二横线集合hl’和第二纵线集合vl’集合中所有线段的交点,并标记每个横线和纵线的交点个数,排除掉不满足文档图片中有线表格(1004或1008)交点特征的横线和纵线,完成对表格(1004或1008)线的第三轮筛选。
[0137]
在本公开的一个实施例中,结合线段交点特征对表格(1004或1008)横线和纵线做完第三次筛选后,对表格(1004或1008)纵线的提取效果到了极大的改善,通过表格(1004或1008)交点特征,有效地对非表格(1004或1008)内线段进行了滤除,大大提升了表格(1004或1008)线检测的准度。
[0138]
步骤s924,判断第二横线集合hl’和第二纵线集合vl’是否都为非空集合,若是,则执行步骤s928,若否,则执行步骤s926。
[0139]
步骤s926,检测无表格(1004或1008)。
[0140]
步骤s928,多表格(1004或1008)检测:根据表格(1004或1008)所有的交点1402的位置信息,计算表格(1004或1008)最外围四角点1402的坐标位置定位,一个表格(1004或1008)对应一组四角点1402,根据角点组数定位多表格(1004或1008)位置坐标信息。
[0141]
在本公开的一个实施例中,通过表格交点信息对文档图片中的表格横线和纵线完成第三轮筛选后,得到了最后的准表格横线集合和准表格纵线集合。
[0142]
在本公开的一个实施例中,如图13所示,先将这些准表格横线集合1302和准表格
纵线集合1304合并成一个新集合1306,在新集合1306中将互有交点的横线和纵线做并查集的“并”操作,归为一个父类,那么做完一轮并操作后,所有属于同一张表格内的横线和纵线都被划分在一个父类的集合中,如图13所示的第一父集合1308、第二父集合1310和第三父集合1312。接下来遍历这些子集,做并查集的“查”操作,找出属于同一个父节点(即属于同一张表格)的横线集合和纵线集合,完成多表格线段信息的提取,分别得到对应于父集合的第一子表格1314、第二子表格1316和第三子表格1318。
[0143]
在本公开的一个实施例中,通过获取每个表格中的所有线段信息,就可以根据这些线段信息计算得到各表格内所有的交点位置信息,进而提取出各表格最外围的四个角1402的点坐标,实现对各个表格的定位,完成对文档图片中多表格的检测功能。
[0144]
步骤s930,表格单元格四个角点1402的坐标定位:如图14所示,根据第二横线集合hl’和第二纵线集合vl’的所有交点1404的位置信息,以及表格所有的线段位置信息,得到表格内每个单元格的四个角点1402的坐标位置信息。
[0145]
在本公开的一个实施例中,分别将经过第三轮筛选后的表格横线集合按照从左到右的顺序做排序,将表格纵线集合按照从上到下的顺序做排序,依次计算两个集合中所有线段的所有交点1404的位置信息,并将这些位置信息转化为以表格单元格为单位的四个角点1402的坐标信息。
[0146]
步骤s932,表格单元格文字识别:以单元格为单位,使用文字检测和文字识别模块分别做文本行检测和文本行识别,实现表格单元格文本内容的提取。
[0147]
步骤s934,excel生成:使用xlwt工具,根据表格单元格的四个角点1402的坐标信息及对应的文本内容,逐个写入excel。
[0148]
在本公开的一个实施例中,得到了表格单元格的四点坐标位置信息后,将单元格从文档图片中切出来,使用文字检测和文字识别算法分别对单元格内的文字做文本行检测和文本行识别,根据文本行检测框四点位置信息与表格单元格四点位置信息,找到单元格与文本的对应关系:
[0149]
如果一个单元格中有多行文本,则将多行文本拼接成一行文本,对应到该单元格中;
[0150]
如果一个单元格中仅有一行文本,则将单行文本直接与该单元格对应;
[0151]
如果一个单元格没有识别出文本,则该单元格对应的文本内容为空。
[0152]
在本公开的一个实施例中,使用xlwt工具,根据表格单元格的四点位置坐标及文本内容,逐个写入excel中,最终完成excel表格输出。
[0153]
在本公开的一个实施例中,xlwt是python中操作excel的一个库,可以将数据保存成excel。
[0154]
步骤s936,生成excel表格并输出。
[0155]
步骤s938,无表格输出。
[0156]
对应于上述方法实施例,本公开还提供一种表格文本的处理装置,可以用于执行上述方法实施例。
[0157]
图15是本公开示例性实施例中一种表格文本的处理装置的方框图。
[0158]
参考图15,表格文本的处理装置1500可以包括:
[0159]
确定模块1502,用于提取图像中的子线段。
[0160]
确定模块1502还用于,确定子线段的属性信息。
[0161]
划分模块1504,用于根据属性信息将子线段划分至对应的线段集合。
[0162]
聚类模块1506,用于对线段集合中的子线段进行聚类处理,以得到表格的第一方向线条、第二方向线条和线条间连接点。
[0163]
确定模块1502还用于,根据第一方向线条、第二方向线条和线条间连接点确定表格的单元格内的文本信息。
[0164]
在本公开的一种示例性实施例中,确定模块1502还用于:检测待处理图像的着色形式是否为灰度;若待处理图像的着色形式不是灰度,则将待处理图像重新着色为灰度图像;将灰度图像确定为待lsd线段提取算法的图像。
[0165]
在本公开的一种示例性实施例中,划分模块1504还用于:解析属性信息以确定子线段的第一宽度、第一高度和角度;确定图像的第二宽度和第二高度;计算第一宽度与第二宽度之间的宽度比值;计算第一高度与第二高度之间的高度比值;将宽度比值大于预设宽度比值,且角度属于预设第一角度阈值区间的子线段划分至第一方向线段集合;将高度比值大于预设高度比值,且角度属于预设第二角度阈值区间的子线段划分至第二方向线段集合。
[0166]
在本公开的一种示例性实施例中,聚类模块1506还用于:确定线段集合中的子线段之间的第一间距;根据第一间距将子线段聚类至子集合;确定子集合之间的第二间距;根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条、第二方向线条和线条间连接点。
[0167]
在本公开的一种示例性实施例中,聚类模块1506还用于:根据第二间距对第一方向线段集合的子线段进行聚类;对聚类后的第一方向线段集合的子线段进行行方向上的首尾拼接,以得到表格的第一方向长线段;根据第一方向长线段的间距对第一方向长线段进行列方向上的合并,以得到表格的第一方向线条。
[0168]
在本公开的一种示例性实施例中,聚类模块1506还用于:根据第二间距对第二方向线段集合的子线段进行聚类;对聚类后的第二方向线段集合的子线段进行列方向上的首尾拼接,以得到表格的第二方向长线段;根据第二方向长线段的间距对第二方向长线段进行行方向上的合并,以得到表格的第二方向线条。
[0169]
在本公开的一种示例性实施例中,聚类模块1506还用于:根据第二间距对子线段进行聚类和合并,以得到表格的第一方向线条和第二方向线条;将第一方向线条和第二方向线条之间的交点确定为线条间连接点;根据线条间连接点对第一方向线条和第二方向线条进行筛选;根据筛选后的第一方向线条、筛选后的第二方向线条和线条间连接点确定待填充表格。
[0170]
在本公开的一种示例性实施例中,确定模块1502还用于:根据第一方向线条、第二方向线条和线条间连接点将表格从图像中提取,并确定表格的单元格;对单元格内的文本进行文本检测和文本行识别;根据文本检测的结果和文本行识别的结果确定单元格内的文本内容;根据线条间连接点的位置坐标将文本内容写入对应的待填充表格。
[0171]
由于装置1500的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。
[0172]
综上,本公开的实施例,借助lsd线段提取方法,通过线段集合提取和分类、线段聚
类、线段合并、交点计算、多表格检测、表格单元格位置坐标定位、表格单元格文字识别、excel生成等方式,实现了对有线表格做检测和识别的整套方案。
[0173]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0174]
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0175]
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0176]
下面参照图16来描述根据本发明的这种实施方式的电子设备1600。图16显示的电子设备1600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0177]
如图16所示,电子设备1600以通用计算设备的形式表现。电子设备1600的组件可以包括但不限于:上述至少一个处理单元1610、上述至少一个存储单元1620、连接不同系统组件(包括存储单元1620和处理单元1610)的总线1630。
[0178]
其中,存储单元存储有程序代码,程序代码可以被处理单元1610执行,使得处理单元1610执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1610可以执行如本公开实施例所示的方法。
[0179]
存储单元1620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)16201和/或高速缓存存储单元16202,还可以进一步包括只读存储单元(rom)16203。
[0180]
存储单元1620还可以包括具有一组(至少一个)程序模块16205的程序/实用工具16204,这样的程序模块16205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0181]
总线1630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0182]
电子设备1600也可以与一个或多个外部设备1640(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1600交互的设备通信,和/或与使得该电子设备1600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1650进行。并且,电子设备1600还可以通过网络适配器1660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1660通过总线1630与电子设备1600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0183]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失
性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
[0184]
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
[0185]
根据本发明的实施方式的用于实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0186]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0187]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0188]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0189]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0190]
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0191]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识
或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献