抽取电子表格文档中结构化信息的方法及装置与流程

文档序号:12063880阅读:192来源:国知局
抽取电子表格文档中结构化信息的方法及装置与流程
本发明涉及数据处理
技术领域
,具体涉及一种抽取电子表格文档中结构化信息的方法及装置。
背景技术
:电子表格文档,如Excel,虽然叫表格软件,但是仍然是非结构化或者半结构化的数据。而且一个电子表格文档中会有多个页签,每个页签中可能存在多个孤立的业务表格,而每个业务表格的布局可能非常随意。所以表格中的数据没有办法直接使用,需抽取后进行一定处理后转换成结构化数据。现有的数据抽取算法很难处理这么复杂、多变的情况。技术实现要素:针对现有技术中的缺陷,本发明提供的抽取电子表格文档中结构化信息的方法及装置,实现了自动批量获取电子表格文档中所有业务表格的功能,提高了大规模数据抽取的效率。第一方面,本发明提供的一种抽取电子表格文档中结构化信息的方法,包括:通过孤立表格识别算法获取电子表格文档中所有业务表格;对所述业务表格进行布局分析;根据布局分析结果从所述业务表格中抽取内容,并做对应的转换处理得到结构化信息。本发明提供的抽取电子表格文档中结构化信息的方法,通过孤立表格识别算法可以自动批量地获取电子表格文档中所有独立的业务表格,提高了大规模数据抽取的效率;通过对业务表格进行布局分析后再抽取业务数据,提高了抽取数据的可靠性,尤其对大规模半结构化数据识别和抽取时更为有效。优选地,所述通过孤立表格识别算法获取电子表格文档中所有业务表格,包括:建立与所述电子表格文档的尺寸相同的两个二维bit数组,记为A和B;遍历所述电子表格文档中的所有单元格,若单元格中有内容,则A中相应位置标记为1,否则标记为0;遍历所述电子表格文档中的所有单元格,根据单元格的边框线对B进行标记;若B中的值为1,则A中相同位置的值设为1;根据更新后的A获取所述电子表格文档中的业务表格坐标。优选地,所述遍历所述电子表格文档中的所有单元格,根据单元格的边框线对B进行标记,包括:遍历所述电子表格文档中的所有单元格,若单元格的四个边角至少有一个边角存在两条边框线,则B中相应位置标记为1。优选地,所述遍历所述电子表格文档中的所有单元格,若单元格的四个边角至少有一个边角存在两条边框线,则B中相应位置标记为1后,还包括:步骤S132,再次遍历所述电子表格文档中的所有单元格,若单元格存在边框线,且B上对应值为0,且与所述单元格相邻的上下左右四个单元格在B中的值至少有一个被标记为1,则将所述单元格在B中的位置标记为1;步骤S133,再次遍历所述电子表格文档中的所有单元格,若单元格在B上对应值为0,且在包含所述单元格的2×2的区域内,其它三个单元格在B上对应值都是1,则在B上标记所述单元格为1,并且计数器加1;步骤S134,若所述计数器不为0,则所述计数器清零,重新执行步骤S133。优选地,所述根据更新后的A获取所述电子表格文档中的业务表格坐标,包括:对更新后的A进行缩小操作,得到LA;根据LA获取所述电子表格文档中的业务表格坐标业务表格坐标。优选地,所述对更新后的A进行缩小操作,得到LA,包括:从A的最左侧开始遍历A中所有的列,若列中存在1的值,则记录列的列坐标X1,终止遍历;从A的最右侧开始遍历A中所有的列,若列中存在1的值,则记录列的列坐标X2,终止遍历;从A的最上侧开始遍历A中所有的行,若行中存在1的值,则记录行的行坐标Y1,终止遍历;从A的最下侧开始遍历A中所有的行,若行中存在1的值,则记录行的行坐标Y2,终止遍历;提取出A中[X1,X2,Y1,Y2]位置的数据,形成二维bit数组LA,并根据X1、X2、Y1、Y2确定LA和A的坐标映射关系。优选地,所述根据LA获取所述电子表格文档中的业务表格坐标,包括:若LA中所有值都为1,则所述电子表格文档中只有一个表格,业务表格坐标为[X1,X2,Y1,Y2];否则,检测所述电子表格文档中第X1列、第Y1行的单元格是否为空,若单元格不为空,则一直向右检测其余单元格,直到检测到空单元格,记录空单元格的列坐标为X3,从上向下检测第X1列的单元格是否为空,直到检测到空单元格,记录空单元格的行坐标为第X1列的最大行坐标,继续检测下一列,直到检测完第X3列,若所有最大行坐标中最大值为Y3,则业务表格坐标为[X1,X3,Y1,Y3],将LA中与[X1,X3,Y1,Y3]相对应位置的内容设为0,得到新的LA;根据更新后的LA获取所述电子表格文档中的业务表格坐标,直到提取出所述电子表格文档中所有业务表格。优选地,所述对所述业务表格进行布局分析,包括:检测所述业务表格中的标题部分;抽取所述业务表格中除标题部分的多维度信息;根据抽取的所述多维度信息判断表格布局。第二方面,本发明提供的一种抽取电子表格文档中结构化信息的装置,包括:业务表格获取模块,用于通过孤立表格识别算法获取电子表格文档中所有业务表格;表格布局分析模块,用于对所述业务表格进行布局分析;表格信息抽取模块,用于根据布局分析结果从所述业务表格中抽取内容,并做对应的转换处理得到结构化信息。本发明提供的抽取电子表格文档中结构化信息的装置,通过孤立表格识别算法可以自动批量地获取电子表格文档中所有独立的业务表格,提高了大规模数据抽取的效率;通过对业务表格进行布局分析后再抽取业务数据,提高了抽取数据的可靠性,尤其对大规模半结构化数据识别和抽取时更为有效。优选地,所述业务表格获取模块具体用于:建立与所述电子表格文档的尺寸相同的两个二维bit数组,记为A和B;遍历所述电子表格文档中的所有单元格,若单元格中有内容,则A中相应位置标记为1,否则标记为0;遍历所述电子表格文档中的所有单元格,根据单元格的边框线对B进行标记;若B中的值为1,则A中相同位置的值设为1;根据更新后的A获取所述电子表格文档中的业务表格坐标。附图说明图1为本发明实施例所提供的抽取电子表格文档中结构化信息的方法的流程图;图2为一个示例性表格中的标题部分、备注部分以及业务数据部分的布局;图3为纵向多TL布局的示例;图4为横向多TL布局的示例;图5为对多TL布局的表格进行切割合并的一个示例;图6为对多TL布局的表格进行切割合并的一个示例;图7为对单TL(多级)布局的表格进行处理的一个示例;图8为包含多个相互独立的业务表格的电子文档中的一个示例;图9为一个只设置了外边框线的表格;图10为本发明实施例所提供的抽取电子表格文档中结构化信息的装置的结构框图。具体实施方式下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。如图1所示,本实施例提供了一种抽取电子表格文档中结构化信息的方法,包括:步骤S1,通过孤立表格识别算法获取电子表格文档中所有业务表格。其中,常见的电子表格文档包括Excel、openoffice的ods文件等,但不限于上述列举的内容。如图8所示,一个电子文档中可能包含多个相互独立的业务表格,通过孤立表格识别算法分别提取电子表格文档中所有业务表格。业务表格指包含业务数据的表格。步骤S2,对业务表格进行布局分析。步骤S3,根据布局分析结果从业务表格中抽取内容,并做对应的转换处理得到结构化信息。其中,转换处理包括拆分合并数据块、删除空白行、替换特殊字符等。本实施例提供的抽取电子表格文档中结构化信息的方法,通过孤立表格识别算法可以自动批量地获取电子表格文档中所有独立的业务表格,提高了大规模数据抽取的效率;通过对业务表格进行布局分析后再抽取业务数据,提高了抽取数据的可靠性,尤其对大规模半结构化数据识别和抽取时更为有效。为了提高提取业务表格的准确率,步骤S1中的孤立表格识别算法具体包括如下步骤:步骤S11,建立与电子表格文档的尺寸相同的两个二维bit数组,记为A和B。其中,电子表格文档的尺寸指电子表格文档有多少个单元格,二维bit数组的行数等于单元格的行数,二维bit数组的列数等于单元格的列数。相比其它结构的数据类型,二维bit数组最节省空间,且处理起来更方便,有助于提高处理速度。步骤S12,遍历电子表格文档中的所有单元格,若单元格中有内容,则A中相应位置标记为1,否则标记为0。其中,电子表格文档中的单元格与二维bit数组A中的元素一一对应,即若第一行第一列单元格中有内容,则二维bit数组A的第一行第一列标记为1。步骤S12的目的是根据单元格中的内容标记那些属于业务表格的单元格,A中标记为1的位置对应的单元格属于业务表格。步骤S13,遍历电子表格文档中的所有单元格,根据单元格的边框线对B进行标记。其中,步骤S13的目的是根据单元格是否有边框线来标记那些属于业务表格的单元格,B中标记为1的位置对应的单元格属于业务表格。当业务表格中存在空行时,只靠单元格内容判断会降低准确率,因此,加入边框线判断方法可以提高判断的准确率。步骤S15,若B中的值为1,则A中相同位置的值设为1。该步骤的目的是对A中漏标记的单元格进行补充。步骤S16,根据更新后的A获取电子表格文档中的业务表格坐标。进一步地,步骤S13的优选实施方式具体包括如下步骤:步骤S131,遍历电子表格文档中的所有单元格,若单元格的四个边角至少有一个边角存在两条边框线,若单元格的四个边角都存在两条边框线,即该角的两个边都存在边框线,即形如┌、┐、└、┘的情况,则B中相应位置标记为1。其中,边框线指为单元格设置的真实显示的边框线,而非如excel表中为了方便用户区分每个单元格的辅助线。有些表格只设置了外边框线,内部没有设置边框线,如图9所示,对于这种情况,步骤S131只能识别表格四个角上的单元格,即图9中标“1”的四个单元格。步骤S132,再次遍历电子表格文档中的所有单元格,若单元格存在边框线,且B上对应值为0,且与该单元格相邻的上下左右四个单元格在B中的值至少有一个被标记为1,则将单元格在B中的位置标记为1。通过步骤S132可以识别靠外边框线一圈的单元格,即图9中标“2”的单元格。步骤S133,再次遍历电子表格文档中的所有单元格,若单元格在B上对应值为0,且在包含该单元格的2×2的区域内,其它三个单元格在B上对应值都是1,则在B上标记单元格为1,并且计数器加1。其中,计数器的数值用于记录本次遍历过程中标记了几个单元格。通过不断重复步骤S133,就可以完成表格内部的标记,如图9中标“3”的单元格。步骤S134,执行完步骤S133后,若计数器不为0,则计数器清零,重新执行步骤S133。其中,若计数器不为0,表示还可能有遗漏的单元格未标记,则需要返回步骤S133,再次进行标记。若计数器为0,表示即已对文档中所有的单元格进行标记,则不再遍历电子表格文档,至此,边框线包含的所有区域都标记为了1。具体地,步骤S16包括:步骤S161,对更新后的A进行缩小操作,得到LA。其中,缩小操作是为了去除A中大量不属于业务表格部分的内容,减少A中的无用数据,降低了数据处理量,有助于提高提取业务表格坐标的效率。步骤S162,根据LA获取电子表格文档中的业务表格坐标业务表格坐标。其中,步骤S161具体包括:步骤S1611,从A的最左侧开始遍历A中所有的列,若列中存在1的值,则记录列的列坐标X1,终止遍历。步骤S1612,从A的最右侧开始遍历A中所有的列,若列中存在1的值,则记录列的列坐标X2,终止遍历。步骤S1613,从A的最上侧开始遍历A中所有的行,若行中存在1的值,则记录行的行坐标Y1,终止遍历。步骤S1614,从A的最下侧开始遍历A中所有的行,若行中存在1的值,则记录行的行坐标Y2,终止遍历。步骤S1615,提取出A中[X1,X2,Y1,Y2]位置的数据,形成二维bit数组LA,并根据X1、X2、Y1、Y2确定LA和A的坐标映射关系,LA(m,n)=A(m+X1-1,n+Y1-1)。其中,步骤S162具体包括:步骤S1621,若LA中所有值都为1,则电子表格文档中只有一个表格,业务表格坐标为[X1,X2,Y1,Y2]。步骤S1622,若LA中存在含0的值,则检测电子表格文档中第X1列、第Y1行的单元格是否为空,若单元格不为空,则一直向右检测其余单元格,直到检测到空单元格,记录空单元格的列坐标为X3。其中,若LA中存在含0的值表示电子表格文档中存在多个独立的业务表格,从步骤S1622开始就是提取多个独立的业务表格的方法。步骤S1623,从上向下检测第X1列的单元格是否为空,直到检测到空单元格,记录空单元格的行坐标为第X1列的最大行坐标,继续检测下一列,直到检测完第X3列。步骤S1624,若所有最大行坐标中最大值为Y3,则业务表格坐标为[X1,X3,Y1,Y3],将LA中与[X1,X3,Y1,Y3]相对应位置的内容设为0,得到新的LA。其中,提取到一个业务表格后,需在LA中将该业务表格对应的数据清零,以便寻找下一个表格,因为不清零的话下一轮提取业务表格时,还是只会找到第一个业务表格。步骤S163,返回步骤步骤S161,根据步骤S1624中更新后的LA获取电子表格文档中的业务表格坐标,直到提取出电子表格文档中所有业务表格。为了方便管理步骤S1中得到的业务表格坐标,预先建立一个List对象(简称PList),PList中存放的是长度为4的一维数组,用来存储业务表格坐标。业务表格坐标中的四个元素依次表示业务表格第一列、最后一列、第一行、最后一行在电子表格文档中的位置,因此,根据业务表格坐标即可从电子表格文档中提取出业务表格。步骤S2的优选实施方式具体包括如下步骤:步骤S21,检测业务表格中的标题部分。如图2所示,表格标题部分通常都是一个大的合并单元格,可能是一行或多行,表格还可以包含备注部分,备注部分的结构与标题部分类似,除去表格的标题部分和备注部分,其余部分就是需要提取的业务数据。当表格中存在备注部分时,步骤S21中还需要检测备注部分,检测方式与标题部分的检测方式相同。步骤S22,抽取业务表格中除标题部分的多维度信息。其中,多维度信息包括:单元格内容、背景色属性等。单元格内容为单元格中的文本内容,如“姓名”、“年龄”、“张三”、“40”。背景色属性规定了单元格的背景颜色。步骤S23,根据抽取的多维度信息判断表格布局。其中,常见的表格布局分为横向单TL、横向多TL、纵向单TL、纵向多TL、多表组合。TL(TitleLine)为列头(或数据标题部分)(可能物理上是多行,但逻辑上是一个区域),表示各项业务数据的标题,如图2中的业务数据部分的第一行及为TL。TL可以是横向的,也可以是纵向的,如图3所示为纵向多TL布局,图4为横向多TL布局。标题部分和备注部分一般都在表格的第一行或第二行,且是一个合并单元格,因此,步骤S21的具体实现方式包括:检测业务表格中每一行是否为一个合并单元格,若是,则被检测的行属于标题部分,并进行下一行的检测;若不是,表示该行开始是业务数据,则停止标题部分的检测。现有技术,在滤除无用数据(如标题部分、备注部分)时,需要预先知道无用数据的位置,然后在程序中指定好位置以便跳过前几行无用数据。而本实施例中步骤S21的方法更具有通用性,无论表格有多少行标题部分和备注部分,都可以准确高效地对其进行检测,以保证能够准确地抽取到业务数据。在抽取数据过程中,除直接获取常规单元格对应信息外,还需要对合并单元格做特别处理,使抽取的数据满足存储格式,方便后续处理,因此,步骤S22的优选方式包括:抽取业务表格中除标题部分(有备注部分的话,还包括备注部分)的多维度信息,对被抽取信息中的合并单元格进行拆分后,再将每个维度的信息分别以二维数组形式存储,并对拆分的单元格做特殊标记。其中,合并单元格又分为横向合并、纵向合并、混合合并。将一个横向合并了5个单元格的合并单元格拆分后得到如下结果:ABC{←}{←}{←}{←}其中,特殊标记“{←}”是提取单元格内容特有的,表示该单元格中的内容与其左边单元格中的内容相同,目的是为了给TL的处理和最终内容输出提供灵活性,而其它数据的抽取不需要做特殊标记。抽取的背景色属性为:#F7FBFE#F7FBFE#F7FBFE#F7FBFE#F7FBFE对于单行存在多个横向合并的情况,还需要注意坐标平移的问题,如下表所示:ABC{←}DEF{←}{←}对于纵向合并、混合合并也采用类似的方法进行数据抽取。只有获知表格布局,才能准确地提取到业务数据,并根据表格布局将表格转化为结构化数据。步骤S23中的判断表格布局包括以下几种操作:(1)根据抽取的单元格内容,排除不是TL的行和列。根据TL单元格中的数据类型、长度、关键词进行排除性判断。其判断依据包括:TL每个单元格中的字段名长度不可能超过阈值(比如说50),TL的字段名个数不可能超过阈值(比如1000个),字段名不可能是纯数字字符串,常见的字段名包括“名称”、“Name”、“地址”、“Address”、“地址”、“类型”、“备注”等关键词,根据常见的表格统计得到关键词库,检测行或列中是否包含关键词库中的关键词。因此,基于单元格内容进行表格布局判断的具体实现步骤为:逐行、逐列检测抽取的单元格内容;若单元格内容的数据类型是数字型字符串,则单元格所在行或列就不是TL;若单元格内容的字段长度超过第一阈值,则单元格所在行或列就不是TL;若一行或一列的多项单元格内容中包含给定的关键词,则行或列是TL。其中,在使用基于关键词的判断方法时,为了保证判断可靠性,至少需要出现两个关键词才可以认定该行或列为TL。(2)根据抽取的背景色属性,判断表格布局。表格显示时,为了给用户提供阅读的便利性,表格TL的背景色和数据的背景色会不同,或者数据的奇偶行会采用交错的背景色,因此,背景色属性可以用来判断哪些行或列可能是TL,进而判断表格布局是横向还是纵向的。(3)根据同一行或同一列中的单元格内容的数据类型是否相同,判断表格布局。表格的业务数据中除去TL部分,TL的各个字段名下的单元格的数据只要不是空值的,它们的类型应该都是相同的(该方法只能区分开‘纯数字型字符串’、‘日期时间型字符串’、‘无明显特征字符串’)。例如图2中的表格为横向布局,其中业务数据部分,除了第一行TL,其余每一列单元格的数据类型都是相同的,如字段名“序号”这一列都是纯数字型字符串,字段名“执行法院”这一列都是‘无明显特征字符串’,字段名“执行案号”这一列都是‘无明显特征字符串’,总之,除TL行外,各列的数据类型都是相同的。根据上述特性,检测同一行的数据类型是否都相同,若该表格所有行的数据类型都相同(即同一行中所有单元格的数据类型要么都为‘纯数字型字符串’,要么都为‘日期时间型字符串’或‘无明显特征字符串’),则该表格为纵向布局;检测同一列的数据类型是否都相同,表格所有列的数据类型都相同(即同一列中所有单元格的数据类型要么都为‘纯数字型字符串’,要么都为‘日期时间型字符串’或‘无明显特征字符串’),则该表格为横向布局。有些单元格会存在空值的情况,为避免这些单元格影响检测结果,在对行和列做检测时,内容为空的单元格不纳入检测范围。表格业务数据部分的数据量一般较多,对所有行和列都进行检测会降低判断效率,因此,可以采用短路判断,即如果新的一行的判断结果能否定某种布局,则可以跳出判断。上述几种判断表格布局的方法可以根据实际需求进行各种组合后,对表格布局进行判断,提高判断准确率;另外,本实施例的方法能够识别表格中的多TL的情况,提高抽取数据的可靠性。对于表格布局为纵向布局的情况,还需要将单元格内容形成的表格转置为横向布局。TL又分为单级TL、多级TL两种,但在未做特别说明的情况下,都统称为TL。如图2所示,只有一个TL且为单级TL。如图7所示,只有一个TL且为多级TL(由多行组成,有上下级的隶属关系),需对这多行中的字段名进行合并,形成单行字段名输出。如图7所示,原表格中TL分为两部分,左边部分为多行(多级),右边部分为单行,多级部分的第一级是合并单元格,字段名为‘基本信息’,多级部分的第二级是‘姓名’、‘年龄’、‘性别’字段,最终输出单级TL,它的结构为“基本信息_姓名”、“基本信息_年龄”、“基本信息_性别”、“其他字段A”、“其他字段B”。对于表格布局为多TL的情况,还需要对单元格内容形成的表格做切割合并操作,将其转换为单TL的布局,以满足结构化数据的格式要求。切割合并操作包括:比较多个TL的单元格内容;内容相同的TL只保留一行TL,如图5所示;将内容不同的TL拼接成一行TL,如图6所示。最后,对于合并单元格,可根据业务需要,修正特殊标记。例如ABC{←}{←}{←}{←}可调整为以下格式:ABCABCABCABCABC上述抽取电子表格文档中结构化信息的方法同样适用于包含多个sheet页签的情况,具体方法为:逐个获取电子表格文档中的sheet页签,分别对每个sheet页签采用步骤S1~步骤S3的方法提取每个sheet页签中的业务表格。基于与上述抽取电子表格文档中结构化信息的方法相同的发明构思,本实施例还提供了一种抽取电子表格文档中结构化信息的装置,如图10所示,包括:业务表格获取模块,用于获取电子表格文档中所有业务表格;表格布局分析模块,用于对业务表格进行布局分析;表格信息抽取模块,用于根据布局分析结果从业务表格中抽取内容,并做对应的转换处理得到结构化信息。本实施例提供的抽取电子表格文档中结构化信息的装置,通过孤立表格识别算法可以自动批量地获取电子表格文档中所有独立的业务表格,提高了大规模数据抽取的效率;通过对业务表格进行布局分析后再抽取业务数据,提高了抽取数据的可靠性,尤其对大规模半结构化数据识别和抽取时更为有效。其中,业务表格获取模块具体用于:建立与电子表格文档的尺寸相同的两个二维bit数组,记为A和B;遍历电子表格文档中的所有单元格,若单元格中有内容,则A中相应位置标记为1,否则标记为0;遍历电子表格文档中的所有单元格,根据单元格的边框线对B进行标记;若B中的值为1,则在A中对应位置的值设为1;根据更新后的A获取电子表格文档中的业务表格坐标。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1