一种识别文档中数据表格的方法及装置转让专利

申请号 : CN201010293736.4

文献号 : CN101976232B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李譞

申请人 : 深圳市万兴软件有限公司

摘要 :

本发明属于文档应用领域,公开了一种识别文档中数据表格的方法和装置,所述方法包括:提取PDF文档中的文本;根据提取的文本的属性对文本进行划分,得到一划分结果;对划分结果进行判断和处理,识别并生成数据表格;将数据表格保存至独立的中间数据结构中;根据目标文档格式将所述中间数据结构中的数据表格还原。本发明准确的对PDF中的表格数据进行转换,极大的提高了转换后的可编辑性,减少了转换后对文档再次手工处理的工作。

权利要求 :

1.一种识别文档中数据表格的方法,其特征在于,所述方法包括以下步骤:提取PDF文档中的文本;

根据提取的文本的属性对文本进行划分,得到一划分结果;

对划分结果进行判断和处理,识别并生成数据表格;

将数据表格保存至独立的中间数据结构中;

根据目标文档格式将所述中间数据结构中的数据表格还原;

其中,所述提取PDF文档中的文本的步骤具体包括:根据PDF页面内容流控制字所指示的绘制指令,提取该绘制指令对应的要绘制的文本块;

将提取的文本块保存至一文本块集合中,其中,提取出的文本块保存有该文本块的位置以及外接矩形区域大小信息;

根据提取的文本的属性对文本进行划分,得到一划分结果的步骤具体包括:对文本块集合中的文本块进行划分;

对文本间隙进行划分,获取间隙属性集合;

所述对划分结果进行判断和处理,识别并生成数据表格的步骤具体包括:根据获取的间隙属性集合计算出表格的网格线,所述网格线包括有行线和列线;

根据生成的网格线生成一表格;

将数据表格保存至独立的中间数据结构中的步骤具体包括:对于文本块集合中的每一个文本块,根据该文本块的位置信息,结合网格线进行计算,确定该文本块所属的表格中的单元格;

将该文本块填至上述确定的单元格中。

2.一种识别文档中数据表格的装置,其特征在于,所述装置包括:文本提取模块,用于提取PDF文档中的文本;

文本划分模块,用于根据提取的文本的属性对文本进行划分,得到一划分结果;

数据表格生成模块,用于对划分结果进行判断和处理,识别并生成数据表格;

数据表格存储模块,用于将数据表格保存至独立的中间数据结构中;

数据表格还原模块,用于根据目标文档格式将所述中间数据结构中的数据表格还原;

所述文本提取模块具体包括:

文本块提取模块,用于根据PDF页面内容流控制字所指示的绘制指令,提取该绘制指令对应的要绘制的文本块;

文本块保存模块,用于将提取的文本块保存至一文本块集合中,其中,提取出的文本块保存有该文本块的位置以及外接矩形区域大小信息;

所述文本划分模块具体包括:

文本块划分模块,用于对文本块集合中的文本块进行划分;

文本间隙划分模块,用于对文本间隙进行划分,获取间隙属性集合;

所述数据表格生成模块具体包括:网格线计算模块,用于根据获取的间隙属性集合计算出表格的网格线,所述网格线包括有行线和列线;

表格生成模块,用于根据生成的网格线生成一表格;

所述数据表格存储模块具体包括:单元格确定模块,用于对于文本块集合中的每一个文本块,根据该文本块的位置信息,结合网格线进行计算,确定该文本块所属的表格中的单元格;

填充模块,用于将文本块填至所述单元格确定模块确定的单元格中。

说明书 :

一种识别文档中数据表格的方法及装置

技术领域

[0001] 本发明属于文档应用领域,具体涉及一种识别文档中数据表格的方法及装置。

背景技术

[0002] 随着电脑的不断普及,无纸化办公得到越来越多的应用,各种各样的文档也大量的出现在用户的面前。
[0003] 在可移植文档格式(Portable Document Format,PDF)文档中,实际看到的表格是线条与文本叠加形成的。因此,在将PDF文件转换为其它较易于编辑的文档格式时,如果仅仅是从PDF文档中提取原始数据内容,就会得到分散的文本内容与线条;如果需要表格,需要手动删除线条,插入表格,并将文本内容重新填入表格中,费时费力。
[0004] 同时,在PDF中,还存在一些文本内容是以类似表格的形式呈现,却没有相应的表格线来形成真正的表格。这些文本内容在提取后,若不经过特殊的处理,较难保持原有的排版。
[0005] 从PDF文档中提取数据后,根据其中的线条识别出表格,再将文本内容填入表格中,由于表格识别受到线条制约,无法识别没有表格线的表格,表格的表格线缺失对其识别过程也有一定影响。同时,在对存在大量线条的文档进行表格识别时,处理也比较缓慢。
[0006] 对于有数据表格或者类似表格的平面二维数据表的PDF,如果根据PDF中的线条进行表格识别,虽然可以还原表格,却可能会因为表格线缺失或无表格线,导致识别受到影响或不能进行。
[0007] 如何准确的对PDF中的表格数据进行转换,提高转换后的可编辑性,减少转换后对文档再次手工处理的工作,是文档应用领域研究的方向之一。

发明内容

[0008] 本发明的目的在于提供一种识别文档中数据表格的方法,目的在于准确的对PDF中的表格数据进行转换,提高转换后的可编辑性,减少转换后对文档再次手工处理的工作。
[0009] 本发明实施例是这样实现的,一种识别文档中数据表格的方法,所述方法包括以下步骤:
[0010] 提取PDF文档中的文本;
[0011] 根据提取的文本的属性对文本进行划分,得到一划分结果;
[0012] 对划分结果进行判断和处理,识别并生成数据表格;
[0013] 将数据表格保存至独立的中间数据结构中;
[0014] 根据目标文档格式将所述中间数据结构中的数据表格还原。
[0015] 本发明实施例的另一目的在于提供一种识别文档中数据表格的装置,所述装置包括:
[0016] 文本提取模块,用于提取PDF文档中的文本;
[0017] 文本划分模块,用于根据提取的文本的属性对文本进行划分,得到一划分结果;
[0018] 数据表格生成模块,用于对划分结果进行判断和处理,识别并生成数据表格;
[0019] 数据表格存储模块,用于将数据表格保存至独立的中间数据结构中;
[0020] 数据表格还原模块,用于根据目标文档格式将所述中间数据结构中的数据表格还原。
[0021] 本发明实施例通过将提取出来的PDF文档元素中的文本,根据文本的大小、位置等属性,进行划分,通过对划分结果的判断与处理,进行数据表格的识别与生成,并将识别的结果保存至独立的中间数据结构中,通过对该结构的读取,在生成其它文档格式时还原数据表格,极大的提高了内容的还原度和阅读性,提高了可编辑性,减少了转换后对文档再次手工处理的工作。

附图说明

[0022] 图1为本发明实施例提供的识别文档中数据表格的方法的流程图;
[0023] 图2为本发明实施例提供的识别文档中数据表格的装置的结构图。

具体实施方式

[0024] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0025] 图1示出了本发明实施例提供的识别文档中数据表格的方法的流程。
[0026] 在步骤S101中,提取PDF文档中的文本;
[0027] 在步骤S102中,根据提取的文本的属性对文本进行划分,得到一划分结果;
[0028] 在步骤S103中,通过对所述划分结果的判断与处理,进行数据表格的识别与生成;
[0029] 在步骤S104中,将识别的结果保存至独立的中间数据结构中;
[0030] 在步骤S105中,根据目标文档格式将所述中间数据结构中的数据表格还原。
[0031] 具体的,步骤S101描述如下:
[0032] PDF页面显示的内容均是由页面内容流中的一系列控制字来表示的。在具体实施过程中,根据PDF页面内容流控制字所指示的绘制指令,提取该绘制指令中指示的要绘制的文本块,并将提取的文本块保存至文本块集合中。其中,提取出的文本块保存有位置、外接矩形区域大小等基本信息。
[0033] 具体的,步骤S102包括:步骤A、对文本块进行划分;步骤B、对文本间隙进行划分。
[0034] PDF中文本块的表示方式较复杂,除了通常理解的连续的几个文字之外,还能够根据参数调整文字间距,因此会出现一个文本块可能包含两块甚至数块文字块的情形。这种文本块在提取时仍将认为是一个文本块,但实际上其中应该包含数个文本块。为了简化识别的判断逻辑,同时排除中间空隙很大的文本块造成的影响,有必要将提取出的这种文本块进行分割。
[0035] 其中,步骤A,对文本块进行划分描述如下:
[0036] A1)、判断是否包含子文本块,若不包含,继续进行下一个文本块的处理;若包含,则进行步骤A2)
[0037] A2)、对文本块中的每一个子文本块,都用下列规则进行处理:
[0038] 判断当前子文本块与其前一个子文本块之间的间隙是否大于判断阀值,其中该判断阀值可以依据统计数据或经验来确定及调整;
[0039] 若大于,则将文本块从当前子文本块位置进行分割,当前子文本块之前的所有子文本块为一个文本块,当前子文本块以及当前文本块之后的子文本块为另一个文本块[0040] 若不大于,则继续判断下一个子文本块。
[0041] A3)、若文本块被分割,则对分割出来的,还含有未处理过的子文本块的文本块继续按照步骤A1进行处理,若没有分割,则继续处理下一个文本块。
[0042] 上述处理完成后,文本块集合中已经没有中间空白间隙很大的文本块,此时进行步骤B。
[0043] 其中,步骤B、对文本块间隙进行划分描述如下:
[0044] 通过对文本块之间的空白间隙进行划分,确定数据的网格分布,作为生成表格的依据。空白间隙划分分为行方向划分和列方向划分2种,2种划分的步骤是相同的。
[0045] B1)、对文本块集合按文本块位置进行另一方向的一次划分,即若是行方向间隙划分,则进行列划分;若是列方向间隙划分,则进行行划分;
[0046] B2)、对步骤B1中划分出的每一行(列),进行以下处理:
[0047] a)、再进行一次划分,即若是行方向间隙划分,则进行行划分;若是列方向间隙划分,则进行列划分;
[0048] b)、扫描步骤a中的划分结果,将划分出的块之间的空白间隙属性(在划分方向上的起始和结束位置)记录至一个空白属性集合中。其中,间隙属性按照间隙起始位置由小到大有序排列;
[0049] c)、将步骤b中记录的空白间隙属性集合合并到原有的空白间隙属性集合中。本发明实施例在此处定义2个游标:
[0050] 当前间隙属性指针和新加间隙属性指针,标识遍历过程中当前操作的2个间隙属性;同时需要定义一个相交标志,标识前一次比较的2个属性是否相交。基于前面的定义,空白间隙合并的规则可以描述为包括:
[0051] i、若原有集合为空,直接并入;
[0052] ii、若原有集合非空,则初始化当前间隙属性指针指向原有集合的第一个元素,新加间隙属性指针也初始化为指向新的空白间隙属性集合的第一个元素;
[0053] iii、按下列规则合并当前间隙属性指针指向的间隙属性(以下简称当前间隙)与新加间隙属性指针指向的间隙属性(以下简称新加间隙):
[0054] (1)、若间隙属性指针已经移动到最后一个元素的后面,即已经访问完了原有间隙集合中的元素,则直接插入新加间隙到集合末尾;
[0055] (2)、若当前间隙与新加间隙相交,则取2个属性的交集,即起始位置取大值,结束位置取小值,将当前间隙属性指针指向的间隙属性修改为此交集的属性;同时置相交标志为真;
[0056] (3)、若新加间隙在当前间隙的前面,则依照下列规则处理:
[0057] ①、若相交标志为假,则将新加间隙插入当前间隙之前
[0058] ②、若相交标志为真,则将相交标志置为假。
[0059] 处理完后将新加间隙属性指针移向下一个新加间隙属性。若此时新加间隙属性指针没有移动到最后一个元素的后面,即已经访问完了新加间隙集合中的元素,则回到步骤iii,否则合并结束。
[0060] (4)、其它情况直接将相交标志置为假。
[0061] iv、移动当前间隙属性指针指向下一个原有集合中的元素,并回到步骤iii。
[0062] 其中,行间隙划分和列间隙划分的过程使用了同一个文本块集合作为输入数据,因此要正常执行这两个过程,必须复制一份相同的文本块集合,使这两个过程的数据不受另外一个过程的影响和破坏。同时,由于这两个过程的数据各自独立,互不影响,可以并行执行。
[0063] 其中,步骤S103具体描述为:
[0064] 根据步骤S102得出的间隙属性集合,计算出表格的行(列)方向的网格线。最终的间隙属性集合,实际已经将文本集合在间隙划分方向上的最小网格划分出来,生成的网格线只需要穿过每一个间隙即可。至于网格线相对于间隙中的位置,可以根据需要进行调整。
[0065] 在本发明实施例中,网格线生成使用的是间隙的正中间。生成行(列)方向的网格线步骤为:对间隙属性集合中的每一个间隙,读取其起始和结束位置,根据需要计算出网格线的位置。这里使用的是间隙正中间,则计算公式为:网格线位置=起始+结束/2,存储得出的网格线并继续进行下一个间隙的计算。
[0066] 根据生成的行方向和列方向的网格线,生成一张空表格。步骤即是取出整个文本块集合的边界,作为表格的外边框,表格线则是直接使用网格线的数据生成。步骤S102中的间隙也可以直接额外添加两个起始和结束位置相等的间隙,用于标识表格的边界,直接参与间隙合并,可以避免重复计算表格边界。
[0067] 具体的,步骤S104描述如下:
[0068] 对于文本块集合中的每一个文本块,根据其位置信息,结合网格线进行计算,确定其落在表格的哪一个单元格内,并将其填入该单元格。确定文本块属于哪个单元格的依据根据实际需求进行确定,此处不再详述。
[0069] 经本发明实施例处理过的PDF数据表格,可以生成其它文档格式中的原生表格,还原度和可读性都得到了很大的提高,还减少了转换后对文档再次手工处理的工作;而且可以消除因依赖表格线识别表格,造成的无法识别无表格线的表格以及类似表格形式的平面二维数据的问题。
[0070] 图2示出了本发明实施例提供的识别文档中数据表格的装置的结构。
[0071] 其中,文本提取模块21,用于提取PDF文档中的文本;
[0072] 文本划分模块22,用于根据提取的文本的属性对文本进行划分,得到一划分结果;
[0073] 数据表格生成模块23,用于对划分结果进行判断和处理,识别并生成数据表格;
[0074] 数据表格存储模块24,用于将数据表格保存至独立的中间数据结构中;
[0075] 数据表格还原模块25,用于根据目标文档格式将所述中间数据结构中的数据表格还原。
[0076] 优选的,所述文本提取模块21具体包括:
[0077] 文本块提取模块211,用于根据PDF页面内容流控制字所指示的绘制指令,提取该绘制指令对应的要绘制的文本块;
[0078] 文本块保存模块212,用于将提取的文本块保存至一文本块集合中,其中,提取出的文本块保存有该文本块的位置以及外接矩形区域大小信息。
[0079] 优选的,所述文本划分模块22具体包括:
[0080] 文本块划分模块221,用于对文本块集合中的文本块进行划分;
[0081] 文本间隙划分模块222,用于对文本间隙进行划分,获取间隙属性集合。
[0082] 优选的,所述数据表格生成模块23具体包括:
[0083] 网格线计算模块231,用于根据获取的间隙属性集合计算出表格的网格线,所述网格线包括有行线和列线;
[0084] 表格生成模块232,用于根据生成的网格线生成一表格。
[0085] 优选的,所述数据表格存储模块24具体包括:
[0086] 单元格确定模块241,用于对于文本块集合中的每一个文本块,根据该文本块的位置信息,结合网格线进行计算,确定该文本块所属的表格中的单元格;
[0087] 填充模块242,用于将该文本块填至上述确定的单元格中。
[0088] 本发明实施例通过将提取出来的PDF文档元素中的文本,根据文本的大小、位置等属性,进行划分,通过对划分结果的判断与处理,进行数据表格的识别与生成,并将识别的结果保存至独立的中间数据结构中,通过对该结构的读取,在生成其它文档格式时还原数据表格,极大的提高了内容的还原度和阅读性,提高了可编辑性,减少了转换后对文档再次手工处理的工作。
[0089] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而这些改进和变换都应属于本发明所附权利要求的保护范围。