CN110569489B - 基于pdf文件的表格数据解析方法及装置 - Google Patents
基于pdf文件的表格数据解析方法及装置 Download PDFInfo
- Publication number
- CN110569489B CN110569489B CN201810567926.7A CN201810567926A CN110569489B CN 110569489 B CN110569489 B CN 110569489B CN 201810567926 A CN201810567926 A CN 201810567926A CN 110569489 B CN110569489 B CN 110569489B
- Authority
- CN
- China
- Prior art keywords
- lines
- line
- attribute information
- grouping
- cells
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于PDF文件的表格数据解析方法及装置,涉及数据处理技术领域,主要目的在于提高PDF文件中表格数据解析结果的准确性。本发明的方法包括:获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息;根据所述线条的属性信息,确定同一表格内的线条,记作分组线条;通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。本发明用于PDF文件中表格数据的解析。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于PDF文件的表格数据解析方法及装置。
背景技术
随着技术的不断发展,网络中的资讯呈爆炸式增长。在数据处理领域中,由于PDF(Portable Document Format,便携式文档格式,简称PDF)文件能够在多个系统中使用,使得此种文件在数据处理领域中的使用日趋频繁。因此,如何在PDF文件中提取出数据,尤其是表格数据,已愈发受到领域内技术人员的重视。
目前,在数据处理领域中,当需要对PDF文件中的表格数据进行解析和提取时,通常会从待解析的PDF文件中解析出每页中各个构成元素及其相关属性信息,然后再根据上述构成元素及其信息来构建对应的html(Hyper Text Markup Language,超文本标记语言,简称html)文件,以实现对其中表格数据的解析功能。然而,在实际应用中,现有的PDF文件的解析方法在对包含表格数据的文件进行解析时,对于文件中表格之外的数据的识别效果较差,导致被解析出的表格数据存在错误的问题。例如,将表格外的数据解析至表格中,从而导致表格数据存在异常。由此,现有技术在对PDF文件中的表格数据进行解析时,存在准确性较差的问题。
发明内容
鉴于上述问题,本发明提供一种基于PDF文件的表格数据解析方法及装置,主要目的在于解决现有技术在对PDF文件中的表格数据进行解析时存在的解析结果准确性较差的问题,提高解析出的表格数据的准确性。
为解决上述技术问题,第一方面,本发明提供了一种基于PDF文件的表格数据解析方法,该方法包括:
获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息;
根据所述线条的属性信息,确定同一表格内的线条,记作分组线条;
通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;
根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。
可选的,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的;
所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息是根据所述上边距及高度确定的。
可选的,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条包括:
通过所述线条中竖线的属性信息,确定同一表格内的竖线;
将所述同一表格内的竖线,确定为同一分组的分组竖线。
可选的,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条还包括:
根据所述分组竖线及所述分组竖线的属性信息,确定对应的表格范围;
根据所述线条中横线的属性信息以及所述表格范围,确定对应所述分组竖线对应的分组横线。
可选的,所述通过所述线条中竖线的属性信息,确定同一表格内的竖线包括:
根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;
根据所述竖线的位置信息及长度信息,确定所述竖线序列中具有相连关系的竖线;
将所述具有相连关系的竖线,确定为同一表格内的竖线。
可选的,在所述通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界之后,所述方法还包括:
根据所述表格边界,判断所述表格是否缺失边框;
若是,则根据所述表格边界,对所述表格进行边框补充。
可选的,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定是否存在边距小于预置阈值的线条;
若是,则根据所述线条的属性信息中长度信息,确定所述小于预置阈值的线条中长度最长线条;
保留所述长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
可选的,所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,包括:
确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格;
根据所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及
从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
可选的,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定所述表格中是否存在异常单元格,所述异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的;
若存在,则将所述异常单元格合并至相邻的单元格中。
可选的,在所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条之后,所述方法还包括:
从所述线条中确定异常线条,所述异常线条为所述线条中分组线条外的线条;
根据所述异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值;
若是,则将所述异常线条确定为分页符,并根据所述分页符进行分页。
第二方面,本发明还提供了一种基于PDF文件的表格数据解析装置,该装置包括:
获取单元,用于获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息;
第一确定单元,用于根据所述线条的属性信息,确定同一表格内的线条,记作分组线条;
第二确定单元,用于通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;
第一合并单元,用于根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。
可选的,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的;
所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息是根据所述上边距及高度确定的。
可选的,所述第一确定单元包括:
第一确定模块,用于通过所述线条中竖线的属性信息,确定同一表格内的竖线;
分组模块,用于将所述同一表格内的竖线,确定为同一分组的分组竖线。
可选的,所述第一确定单元还包括:
第二确定模块,用于根据所述分组竖线及所述分组竖线的属性信息,确定对应的表格范围;
第三确定模块,用于根据所述线条中横线的属性信息以及所述表格范围,确定对应所述分组竖线对应的分组横线。
可选的,所述第一确定模块包括:
排序子模块,用于根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;
第一确定子模块,用于根据所述竖线的位置信息及长度信息,确定所述竖线序列中具有相连关系的竖线;
第二确定子模块,用于将所述具有相连关系的竖线,确定为同一表格内的竖线。
可选的,所述装置还包括:
第一判断单元,用于根据所述表格边界,判断所述表格是否缺失边框;
补充单元,用于若判断所述表格缺失边框,则根据所述表格边界,对所述表格进行边框补充。
可选的,所述装置还包括:
第三确定单元,用于确定是否存在边距小于预置阈值的线条;
第四确定单元,用于若确定存在边距小于预置阈值的线条,则根据所述线条的属性信息中长度信息,确定所述小于预置阈值的线条中长度最长线条;
保留单元,用于保留所述长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
可选的,所述第一合并单元,包括:
确定模块,用于确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格;
第一合并模块,用于根据所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及
第二合并模块,用于从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
可选的,所述装置还包括:
第五确定单元,用于确定所述表格中是否存在异常单元格,所述异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的;
第二合并单元,用于若确定所述表格中存在异常单元格,则将所述异常单元格合并至相邻的单元格中。
可选的,所述装置还包括:
第六确定单元,用于从所述线条中确定异常线条,所述异常线条为所述线条中分组线条外的线条;
第二判断单元,用于根据所述异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值;
第七确定单元,用于若判断具有相同属性信息的异常线条的个数超过阈值,则将所述异常线条确定为分页符,并根据所述分页符进行分页。
为了实现上述目的,根据本发明的第三方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述的基于PDF文件的表格数据解析方法。
为了实现上述目的,根据本发明的第四方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述所述的基于PDF文件的表格数据解析方法。
借由上述技术方案,本发明提供的基于PDF文件的表格数据解析方法及装置,对于现有技术在对PDF文件中的表格数据进行解析时,存在准确性较差的问题,本发明通过获取页面中的线条及线条的属性信息,并根据所述线条的属性信息,确定同一表格内的线条,记作分组线条,然后通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界,最后根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,进而实现对PDF文件中表格数据解析,从而能够提高对页面内非表格数据的识别效果,避免了解析过程中可能出现的表格数据解析错误的问题,提高了解析结果的准确性。相比于现有技术,本发明根据线条的属性信息,确定同一表格内的线条,记作分组线条,能够有效识别PDF文件中同一页面中的多个表格,避免了多个表格之间的混淆。同时,根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,能够避免在表格数据的解析过程出现的异常线条,确保了表格内单元格的准确性,进而在整体上提高了基于PDF文件的表格数据解析结果的准确性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种基于PDF文件的表格数据解析方法流程图;
图2示出了本发明实施例提供的另一种基于PDF文件的表格数据解析方法流程图;
图3示出了本发明实施例提供的一种基于PDF文件的表格数据解析装置的组成框图;
图4示出了本发明实施例提供的另一种基于PDF文件的表格数据解析装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
为了提高基于PDF文件的表格数据解析的准确性,本发明实施例提供了一种基于PDF文件的表格数据解析方法,如图1所示,该方法包括:
101、获取页面中的线条及线条的属性信息。
通常情况下,当需要从PDF文件中解析出其中的数据和表格时,可以根据Mozilla基金会提供的JavaScript开源项目中的PDF.JS来进行PDF文件的初步解析,在进行初步解析后,可以得到PDF文件中每页中不同的元素及其对应的属性信息,进而根据上述元素及对应的属性信息进行文字及表格等内容的解析。
在本发明实施例中,当所述PDF文件进行了初步解析后,可以从上述解析出的信息中获取页面中与线条相关的数据信息,即步骤所述的线条及线条对应的属性信息,其中,所述线条是页面中表格的线条,由于PDF已被初步解析为多种元素,由此,在本步骤中可以从上述元素中对页面中包含的线条进行获取。由于线条之间具有位置的关联性,因此,在获取线条信息的同时还需要获取不同线条及其对应的线条的属性信息。其中,本发明实施例中的所述线条包括构成表格的横线及竖线,所述属性信息可以包括线条的位置信息及长度信息,以便后续步骤进行表格数据的解析。
102、根据所述线条的属性信息,确定同一表格内的线条,记作分组线条。
由于线条的属性信息中包括线条的长度信息和位置信息,由于表格是由不同的横线及竖线构成的,因此,不同线条之间存在关联关系。在本发明实施例中,当前述步骤101获取到了线条及其对应的属性信息后,可以根据本步骤所述的方法,根据线条的属性信息中的位置信息和长度信息确定其中的多个线条之间是否具有关联关系,进而根据关联关系确定线条是否为同一表格内,当确定多个线条为同一表格内的线条时,则可以将上述归属同一表格的线条确定为一组的分组线条。其中,本发明实施例所述的关联关系可以从线条之间的是否具备相连关系来确定,具体的可以根据横线及竖线之间的区别,分别选取对应的选择条件作为关联关系的判断依据,在此不做具体的限定,可以根据实际情况进行选取。
例如,当横线1的属性信息为上边距12mm、左边距13mm、长度1mm时,横线2的属性信息为上边距12mm、左边距14mm、长度1mm时,根据横线1的位置和长度,可以确定横线2的起点正位于横线1的终点,因此,能够确定这两个横向线条是相连的,进而能够确定这两个线条是同一表格内的线条,并将横线1和横线2确定为同一分组的分组线条。
103、通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界。
当前述步骤102确定了分组线条后,实际上就确定了同一表格中的线条,由此,在本步骤中,可以根据分组线条对每个分组进行表格边界的确定。具体的,在确定表格边界的过程中,需要根据同一组的分组线条的属性信息来确定。譬如,可以根据分组线条中的位置信息对其中的横、竖线条根据位置信息确定其中的最大值和最小值,并结合其线条的长度信息,从而确定该分组线条对应的表格的边界。例如,当某一分组线条中存在横线a属性信息为上边距0cm,左边距0cm,长度1cm;横线b属性信息为上边距0cm,左边距1cm,长度1cm;横线c属性信息为上边距1cm,左边距0cm,长度1cm;横线d属性信息为上边距1cm,左边距1cm,长度1cm;竖线A的属性信息为上边距0cm,左边距0cm,长度1cm;竖线B的属性信息为上边距0cm,左边距1cm,长度1cm;竖线C的属性信息为上边距0cm,左边距2cm,长度1cm。则根据上述分组线条中,可以确定其上边距最小值为0cm,上边距最大值为1cm,左边距最小值为0cm,左边距最大值为2cm,从而确定该表格的边界为上边距0cm至下边距1cm,左边距0cm,右边距为2cm。从而确定该分组线条所对应的表格的边界为横向范围为0-2cm,竖向范围为0-1cm。
此外,在本步骤确定了边界之后,还可以根据分组线条的属性信息进行表格的构建,并构建后进行分析和识别,当发现表格存在边框缺失的情况时,可以根据预先设定的补充方案对表格进行边框的补充。当然,对于边框的补充和表格的初步构建过程可以根据需要进行设置,在此并不做具体的限定。
104、根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内。
事实上,在前述步骤103之后,可以根据需要进行初步的表格构建,当然,为了进一步的提高表格数据解析结果的准确性,在前述步骤103之后,还可以根据本步骤所述的方法,根据表格对应的分组线条中线条的属性信息,依照预设的合并条件进行合并,以便将多余的单元格或在构建时异常的单元格进行合并操作,以避免出现异常单元格,影响表格数据解析结果的准确性。其中,在本发明实施例中所述表格是由多个不同的单元格组成的,而每一个单元格都是根据分组线条中的横、竖线条构成的。具体的,在本步骤中,所述预设条件可以是从任意方向的端点选取一单元格,然后再判断到该单元格预设方向的单元格边框时,则进行该预设方向的单元格合并操作。即当选取最上方单元格开始向下依次进行合并操作时,则需要判断该单元格是否具备下边框,在确定不存在下边框时,将该单元格与下方向的单元格进行合并。当然,本发明实施例所述的预设条件的选取,包括但不仅限于上述所述的方法,具体的预设条件的设定,可以根据具体情况来选取,在此并不做具体的限定。
当对所述表格进行了单元格合并的操作后,得到的表格即为排除了异常线条或单元格的准确表格,由此,可以将页面中的数据信息进行添加。由于PDF文件在进行解析后,其中页面内的各个数据信息均以字符串分组的形式存在,并且每一个字符串分组都带有表明其位置的位置信息,因此,可以根据每个字符串分组的位置信息,确定每个字符串所对应的表格中的单元格,并将该字符串分组中的内容添加到对应的单元格中,以实现对将页面中的数据信息添加至表格中对应的单元格的功能。例如,PDF文件中的文字信息,在添加的过程中,可以根据数据信息的位置信息进行添加,以便得到完整的表格数据。
本发明实施例提供的基于PDF文件的表格数据解析方法,对于现有技术在对PDF文件中的表格数据进行解析时,存在准确性较差的问题,本发明根据线条的属性信息,确定同一表格内的线条,记作分组线条,能够有效识别PDF文件中同一页面中的多个表格,避免了多个表格之间的混淆。同时,根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,能够避免在表格数据的解析过程出现的异常线条,确保了表格内单元格的准确性,进而在整体上提高了基于PDF文件的表格数据解析结果的准确性。
进一步的,作为对图1所示实施例的细化及扩展,本发明实施例还提供了另一种基于PDF文件的表格数据解析方法,如图2所示,其具体步骤包括:
201、获取页面中的线条及线条的属性信息。
在本发明实施例中本步骤所述的方法,在具体的执行方式及线条的描述皆与前述实施例中步骤101中的描述一致,在此不做赘述。其中,本发明实施例中所述的线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息。具体的,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的。所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息可以是根据所述上边距及高度确定的。例如,当横线A的属性信息中存在左边距1cm,宽度2cm,则可以根据该宽度与左边距进行相减操作,得到对应的横线A的长度为1cm;而当竖线a的属性信息中存在上边距12cm,高度14cm时,则可以根据高度与上边距进行相减操作,得到对应的竖线a的长度为2cm。
由此,可以根据本步骤所述的方法从PDF文件中经初步解析的数据中获取到关于PDF文件中关于线条的相关数据,进而能够为后续的表格构建提供数据基础。
202、根据所述线条的属性信息,确定同一表格内的线条,记作分组线条。
具体的,本步骤可以包括:通过所述线条中竖线的属性信息,确定同一表格内的竖线;将所述同一表格内的竖线,确定为同一分组的分组竖线。
其中,在通过所述线条中竖线的属性信息,确定同一表格内的竖线的过程中,具体的执行方式可以为:首先,根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;然后,根据所述竖线的位置信息及长度信息,确定所述竖线序列中具有相连关系的竖线;将所述具有相连关系的竖线,确定为同一表格内的竖线。具体的,在确定竖线相连关系的方式可以根据竖线的位置及长度来确定,竖线之间的相连关系可以通过确定相同左边距的竖线间是否第一竖线的终点与第二竖线的起点相重合确定。例如,当某一条竖线的末端位置与另一条竖线的始端位置相同时,则可以确定这两条竖线是相连的,具有连续性。
由于在表格中,竖线之间具有相连关系,说明是一个表格内的多个竖线,不具有相连关系的两组竖线说明可能是分属于两个不同的表格,由此,基于竖线的分组,可以确定该表格对应的高度,即表格范围,而基于横线的特性,可以从竖线确定的范围及横线的位置从而确定对应该组竖线的横线分组,从而得到该表格的全部竖线和横线。具体的,基于竖线的分组对页面中横线进行分组,本步骤还可以包括:首先,根据分组竖线及所述分组竖线的属性信息,来确定对应的表格范围。然后,根据所述线条中横线的属性信息以及所述表格范围,确定对应所述分组竖线对应的分组横线。
经本步骤所述的方法,在确定的分组线条的过程中,还可能存在一种不分属任意分组的线条,即异常线条。事实上,由于PDF文件中可能存在分页符,而分页符即可能为上述所述的异常线条,由于分页符具有相同位置,因此,在本步骤中可以根据前述步骤中确定了分组线条之后,从全部线条中找出不属于任何分组线条的线条,并将这样的线条确定为异常线条,然后基于异常线条的属性信息中记录的位置,确定相同位置的异常线条,然后根据PDF文件中出现在不同页面中的该位置异常线条的次数,确定该异常线条是否为分页符。具体执行方式可以从所述线条中确定异常线条,并根据所述异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值。当确定异常线条的个数超过阈值时,则将所述异常线条确定为分页符,并根据所述分页符进行分页。例如,当检测出分组线条外的线条包括:横线1,左边距0cm,上边距15cm;横线2,左边距1cm,上边距15cm;横线3,左边距2cm,上边距15cm;横线4,左边距3cm,上边距15cm;横线5,左边距4cm,上边距15cm;横线6,左边距5cm,上边距15cm;横线7,左边距6cm,上边距15cm时,共7个线条时,由于上述7个线条的属性信息中能够确定上述7个线条均为横线,且具有相同的上边距,且具有相同的长度时,则可以将这些具备多个相同的属性信息的线条确定为异常线条,当确定系统设定的阈值为5时,由于检测出的异常线条的个数大于阈值,则可以确定上述7个横线实际上为分页符。进而可以根据该位置的分页符进行相应的分页操作。
由此,通过利用竖线的连续性来确定同一表格的分组竖线,能够确保分组竖线的准确性,进而整体上确保了分组线条的准确性。另外,通过利用分组竖线来确定表格范围,并根据表格范围确定分组横线,能够准确的确定对应所述分组竖线的分组横线,进而能够确保分组线条的准确性,从而整体上提高了基于PDF文件的表格数据解析结果的准确性。此外,在确定分组线条的过程中,通过确定异常线条的出现次数,并与阈值进行对比,能够准确的识别出分页符,从而较好的确保了PDF文件的页面分页,能够使基于PDF文件的表格数据解析结果更为直观、准确。
203、通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界。
当前述步骤202确定了分组线条后,实际上就确定了同一表格中的线条,由此,在本步骤中,可以根据分组线条对每个分组进行表格边界的确定。具体的,对于表格边界的确定方式,与前述实施例中该步骤103中的描述一致,在此不再一一赘述。
204、根据所述表格边界,判断所述表格是否缺失边框。
由于本发明实施例所述的PDF文件中表格数据的解析方法是基于现有技术在进行初步解析后,可以得到PDF文件中每页中不同的元素及其对应的属性信息进行的。因此,为了确保所得到的表格边框的准确性,避免出现边框缺失的问题,在本步骤中还需要对前述步骤203确定的表格边界进行表格边框的识别,判断所述表格是否存在边框缺失的问题。具体的,可以根据表格边界来确定边界对应的线条是否全部存在。
205、若判断所述表格缺失边框,则根据所述表格边界,对所述表格进行边框补充。
当确定存在边框缺失的问题时,则可以根据表格边界确定缺失部分的线条两端的两个线条,然后根据缺失线条两端的两个线条的属性信息,对缺失线条进行补充。
由此,通过对缺失边框进行补充,能够避免所解析出的表格数据的边框缺失问题,进而提高了PDF文件的表格数据解析结果的准确性。
206、根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内。
在本发明实施例中,所述表格、单元格以及线条之间关系的描述皆与前述实施例中步骤104中的描述一致,在此不再赘述。
具体的,本步骤可以包括:首先,确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格。需要说明的是因为线条具备位置信息和长度信息,因此,可以通过二维数组输出的原理,得到对应的表格形式的线条。由于二维数数组所模拟出的表格和实际表格存在差异,为了能够完整的还原PDF中表格的形式,在此需要对模拟的表格及线条的属性信息进行单元格的合并,以便得到准确的表格。然后,根据所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及,从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
需要说明的是,在对于所述单元格合并的方式和方向包括但不仅上述所述的方法,还可以根据实际需要从其他方向进行,但在进行合并的过程中,需要根据所拟定的合并方向从表格边缘开始依次进行,以便避免出现合并错误的问题,提高合并结果的准确性。
由此,通过二维数组模拟出表格并进行相应的合并操作,能够确保得到的表格的准确性。同时,通过所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格。并通过从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格,能够确保合并结果的准确性,从而提高PDF文件中表格数据的解析结果的准确性。
207、确定是否存在边距小于预置阈值的线条。
在步骤206之后,可以对所述表格中的线条进行边距的获取,其中所述边距可以理解为线条周围同类线条的距离,例如,在竖线中,具有位置信息中相同纵坐标的竖线之间的距离,即该类竖线之间横坐标之间的差值。并将各线条之间的边距与预置的阈值进行对比。
208、若确定存在边距小于预置阈值的线条,则根据所述线条的属性信息中长度信息,确定所述小于预置阈值的线条中长度最长线条。
当前述步骤207确定了存在小于预置阈值的线条时,则说明出现了多余的线条,根据多余线条的规律,多余线条通常较短,因此,在本步骤中可以根据线条属性信息中的长度信息,确定出最长的线条,即实际上需要保留的线条。
209、保留所述长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
当步骤208确定了长度最长的线条时,则可以将该线条保留,并删除上述小于预置阈值的线条中其余线条,这样就确保了当表格中存在多余线条时,能够识别出多余的线条并进行删除,避免了多余线条对表格数据解析结果的影响,提高了PDF文件中表格数据解析结果的准确性。
210、确定所述表格中是否存在异常单元格。
其中,在步骤206之后,还可以根据本步骤所述的方法,在所述表格中确定是否存在异常单元格。其中,异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的。
211、若确定所述表格中存在异常单元格,则将所述异常单元格合并至相邻的单元格中。
当确定更存在异常单元格时,则需要将该异常单元格进行合并操作,以避免异常单元格对解析结果的影响。具体的,可以将所述异常单元格合并至相邻的正常单元格中,具体的合并方式可以按需选取。其中,在本发明实施例中,对于异常单元格的合并,可以对异常单元格与相邻单元格的高度和宽度进行比较,并基于高度和宽度的关系,确定合并方向。例如,当确定存在表格A、表格B、表格C、表格D、表格E、表格F、表格G。其中,表格A、表格B、表格C依次排列为第一列,表格D、表格E、表格F、表格G依次排为第二列。其中,上述表格中异常单元格为单元格G,同时,能够确定异常单元格G的高度与同一排的表格D、表格E、表格F相同,则可以将该异常单元格G与相邻的表格F进行合并,得到合并后的表格。
另外,在本发明实施例中,由于出现异常单元格的位置可能是表格中的表头位置,或者是其他位置。由于表头位置的重要性,在本发明实施例中,还可以额外设定查询表头异常单元格的操作,具体的,可以首先遍历表格中预置范围内的单元格,该预置范围可以为1,也可以为其他数值,但确保所选择的数值能够确保遍历的为表格的表头位置即可。然后确定该表头位置单元格的最大高度,并获取小于该最大高度的单元格。最后,当确定存在小于最大高度的单元格时,修改该单元格的高度至最大高度。
需要说明的是,在本发明实施例中,步骤207-209所述的小于预置阈值的线条的处理过程以及步骤201-211的异常单元格的处理过程,可以根据实际需要选取执行的顺序,在本发明实施例中所选择的顺序仅仅是示例性的,并不做具体的限定,具体的在执行这两个过程时,可按照实际需要选取。
由此,在判断出存在小于单元格面积阈值的异常单元格时,通过对其进行合并,能够避免因异常单元格对PDF文件中表格数据解析结果的影响,进而提高了解析结果的准确性。
进一步的,作为对上述图1所示方法的实现,本发明实施例还提供了一种基于PDF文件的表格数据解析装置,用于对上述图1所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图3所示,该装置包括:获取单元31、第一确定单元32、第二确定单元33及第一合并单元34,其中
获取单元31,可以用于获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息。
第一确定单元32,可以用于根据所述获取单元31获取的线条的属性信息,确定同一表格内的线条,记作分组线条。
第二确定单元33,可以用于通过所述第一确定单元32确定的分组线条中线条的属性信息,确定所述分组线条对应的表格边界。
第一合并单元34,可以用于根据所述第二确定单元33确定了所述表格边界后的表格所对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。
进一步的,作为对上述图2所示方法的实现,本发明实施例还提供了一种基于PDF文件的表格数据解析装置,用于对上述图2所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图4所示,该装置包括:获取单元401、第一确定单元402、第二确定单元403及第一合并单元404,其中
获取单元401,可以用于获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息。
第一确定单元402,可以用于根据所述获取单元401获取的线条的属性信息,确定同一表格内的线条,记作分组线条。
第二确定单元403,可以用于通过所述第一确定单元402确定的分组线条中线条的属性信息,确定所述分组线条对应的表格边界。
第一合并单元404,可以用于根据所述第二确定单元403确定了所述表格边界后的表格所对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。
进一步的,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的;
所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息是根据所述上边距及高度确定的。
进一步的,所述第一确定单元402包括:
第一确定模块4021,可以用于通过所述线条中竖线的属性信息,确定同一表格内的竖线;
分组模块4022,可以用于将所述第一确定模块4021确定的同一表格内的竖线进行分组,得到对应的分组竖线。
进一步的,所述第一确定单元402还包括:
第二确定模块4023,可以用于根据所述分组模块4022得到的分组竖线及所述分组竖线的属性信息,确定对应的表格范围;
第三确定模块4024,可以用于根据所述线条中横线的属性信息以及所述第二确定模块4023确定的表格范围,确定对应所述分组竖线对应的分组横线。
进一步的,所述第一确定模块4021包括:
排序子模块40211,可以用于根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;
第一确定子模块40212,可以用于根据所述竖线的位置信息及长度信息,确定所述排序子模块40211得到的竖线序列中具有相连关系的竖线;
第二确定子模块40213,可以用于将所述第一确定子模块40212确定的具有相连关系的竖线,确定为同一表格内的竖线。
进一步的,所述装置还包括:
第一判断单元405,可以用于根据所述第二确定单元403确定的表格边界,判断所述表格是否缺失边框;
补充单元406,可以用于若所述第一判断单元405判断所述表格缺失边框,则根据所述表格边界,对所述表格进行边框补充。
进一步的,所述装置还包括:
第三确定单元407,可以用于确定是否存在边距小于预置阈值的线条;
第四确定单元408,可以用于若所述第三确定单元407确定存在边距小于预置阈值的线条,则根据所述线条的属性信息中长度信息,确定所述小于预置阈值的线条中长度最长线条;
保留单元409,可以用于保留所述第四确定单元408确定的长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
进一步的,所述第一合并单元404,包括:
确定模块4041,可以用于确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格;
第一合并模块4042,可以用于根据所述多个线条的属性信息以及所述确定模块4041得到的模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及
第二合并模块4043,可以用于从所述表格左侧边缘开始,在确定所述确定模块4041得到的模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
进一步的,所述装置还包括:
第五确定单元410,可以用于确定所述表格中是否存在异常单元格,所述异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的;
第二合并单元411,可以用于若所述第五确定单元410确定所述表格中存在异常单元格,则将所述异常单元格合并至相邻的单元格中。
进一步的,所述装置还包括:
第六确定单元412,可以用于从所述线条中确定异常线条,所述异常线条为所述线条中分组线条外的线条;
第二判断单元413,可以用于根据所述第六确定单元412确定的异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值;
第七确定单元414,可以用于若所述第二判断单元413判断具有相同属性信息的异常线条的个数超过阈值,则将所述异常线条确定为分页符,并根据所述分页符进行分页。
借由上述技术方案,本发明实施例提供一种基于PDF文件的表格数据解析方法及装置。对于现有技术在对PDF文件中的表格数据进行解析时,存在准确性较差的问题,本发明根据线条的属性信息,确定同一表格内的线条,记作分组线条,能够有效识别PDF文件中同一页面中的多个表格,避免了多个表格之间的混淆。同时,根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,能够避免在表格数据的解析过程出现的异常线条,确保了表格内单元格的准确性,进而在整体上提高了基于PDF文件的表格数据解析结果的准确性。
同时,根据获取页面中的线条及线条的属性信息,可以从PDF文件中经初步解析的数据中获取到关于PDF文件中关于线条的相关数据,进而能够为后续的表格构建提供数据基础。通过利用竖线的连续性来确定同一表格的分组竖线,能够确保分组竖线的准确性,进而整体上确保了分组线条的准确性。另外,通过利用分组竖线来确定表格范围,并根据表格范围确定分组横线,能够准确的确定对应所述分组竖线的分组横线,进而能够确保分组线条的准确性,从而整体上提高了基于PDF文件的表格数据解析结果的准确性。此外,在确定分组线条的过程中,通过确定异常线条的出现次数,并与阈值进行对比,能够准确的识别出分页符,从而较好的确保了PDF文件的页面分页,能够使基于PDF文件的表格数据解析结果更为直观、准确。并且,通过对缺失边框进行补充,能够避免所解析出的表格数据的边框缺失问题,进而提高了PDF文件的表格数据解析结果的准确性。进一步的,通过二维数组模拟出表格并进行相应的合并操作,能够确保得到的表格的准确性。同时,通过所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格。并通过从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格,能够确保合并结果的准确性。
此外,当确定存在边距小于预置阈值的线条时,通过保留其中最长的线条,并删除其余线条,能够确保当表格中存在多余线条时,能够识别出多余的线条并进行删除,避免了多余线条对表格数据解析结果的影响,提高了PDF文件中表格数据解析结果的准确性。,并且,在判断出存在小于单元格面积阈值的异常单元格时,通过对其进行合并,能够避免因异常单元格对PDF文件中表格数据解析结果的影响,进而提高了解析结果的准确性。
所述的基于PDF文件的表格数据解析装置包括处理器和存储器,上述获取单元、第一确定单元、第二确定单元及第一合并单元等作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高PDF文件中表格数据解析结果的准确性。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述基于PDF文件的表格数据解析方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述基于PDF文件的表格数据解析方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息;根据所述线条的属性信息,确定同一表格内的线条,记作分组线条;通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。
进一步的,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的;
所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息是根据所述上边距及高度确定的。
进一步的,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条包括:
通过所述线条中竖线的属性信息,确定同一表格内的竖线;
将所述同一表格内的竖线,确定为同一分组的分组竖线。
进一步的,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条还包括:
根据所述分组竖线及所述分组竖线的属性信息,确定对应的表格范围;
根据所述线条中横线的属性信息以及所述表格范围,确定对应所述分组竖线对应的分组横线。
进一步的,所述通过所述线条中竖线的属性信息,确定同一表格内的竖线包括:
根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;
根据所述竖线的位置信息及长度信息,确定所述竖线序列中具有相连关系的竖线;
将所述具有相连关系的竖线,确定为同一表格内的竖线。
进一步的,在所述通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界之后,所述方法还包括:
根据所述表格边界,判断所述表格是否缺失边框;
若是,则根据所述表格边界,对所述表格进行边框补充。
进一步的,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定是否存在边距小于预置阈值的线条;
若是,则根据所述线条的属性信息中长度信息,确定所述小于预置阈值的线条中长度最长线条;
保留所述长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
进一步的,所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,包括:
确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格;
根据所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及
从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
进一步的,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定所述表格中是否存在异常单元格,所述异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的;
若存在,则将所述异常单元格合并至相邻的单元格中。
进一步的,在所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条之后,所述方法还包括:
从所述线条中确定异常线条,所述异常线条为所述线条中分组线条外的线条;
根据所述异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值;
若是,则将所述异常线条确定为分页符,并根据所述分页符进行分页。本发明实施例中的设备可以是服务器、PC、PAD、手机等。
本发明实施例还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息;根据所述线条的属性信息,确定同一表格内的线条,记作分组线条;通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的。
进一步的,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的;
所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息是根据所述上边距及高度确定的。
进一步的,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条包括:
通过所述线条中竖线的属性信息,确定同一表格内的竖线;
将所述同一表格内的竖线,确定为同一分组的分组竖线。
进一步的,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条还包括:
根据所述分组竖线及所述分组竖线的属性信息,确定对应的表格范围;
根据所述线条中横线的属性信息以及所述表格范围,确定对应所述分组竖线对应的分组横线。
进一步的,所述通过所述线条中竖线的属性信息,确定同一表格内的竖线包括:
根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;
根据所述竖线的位置信息及长度信息,确定所述竖线序列中具有相连关系的竖线;
将所述具有相连关系的竖线,确定为同一表格内的竖线。
进一步的,在所述通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界之后,所述方法还包括:
根据所述表格边界,判断所述表格是否缺失边框;
若是,则根据所述表格边界,对所述表格进行边框补充。
进一步的,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定是否存在边距小于预置阈值的线条;
若是,则根据所述线条的属性信息中长度信息,确定所述小于预置阈值的线条中长度最长线条;
保留所述长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
进一步的,所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,包括:
确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格;
根据所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及
从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
进一步的,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定所述表格中是否存在异常单元格,所述异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的;
若存在,则将所述异常单元格合并至相邻的单元格中。
进一步的,在所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条之后,所述方法还包括:
从所述线条中确定异常线条,所述异常线条为所述线条中分组线条外的线条;
根据所述异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值;
若是,则将所述异常线条确定为分页符,并根据所述分页符进行分页。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (13)
1.一种基于PDF文件的表格数据解析方法,其特征在于,包括:
获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息,其中,所述位置信息是基于线条与纸张边界的距离确定的,所述长度信息是基于纸张边界的距离与纸张的长度或宽度的相对关系确定的;
根据所述线条的属性信息,确定同一表格内的线条,记作分组线条,其中,所述分组线条是基于属性信息确定具有关联关系的线条;
通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;
根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的,所述预设条件包括模拟表格中的单元格不存在下框横线及右框竖线,所述模拟表格是基于二维数组输出的原理得到的,所述二维数组输出的原理是基于数组的行列确定数组位置。
2.根据权利要求1所述的方法,其特征在于,所述横线的属性信息中的位置信息包括所述横线的左边距及上边距,所述横线的属性信息中的长度信息是根据所述横线的左边距及宽度确定的;
所述竖线的属性信息中的位置信息包括竖线的上边距及左边距,所述竖线的属性信息中的长度信息是根据所述上边距及高度确定的。
3.根据权利要求2所述的方法,其特征在于,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条包括:
通过所述线条中竖线的属性信息,确定同一表格内的竖线,所述同一表格内的竖线是具有相连关系的线条;
将所述同一表格内的竖线,确定为同一分组的分组竖线。
4.根据权利要求3所述的方法,其特征在于,所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条还包括:
根据所述分组竖线及所述分组竖线的属性信息,确定对应的表格范围,所述表格范围是基于所述分组竖线的位置信息和所述高度确定的;
根据所述线条中横线的属性信息以及所述表格范围,确定所述分组竖线对应的分组横线,所述分组竖线对应的分组横线是基于横线的位置以及所述表格范围确定的。
5.根据权利要求3所述的方法,其特征在于,所述通过所述线条中竖线的属性信息,确定同一表格内的竖线包括:
根据所述线条中竖线的属性信息中的位置信息,对所述竖线进行排序得到竖线序列;
根据所述竖线的位置信息及长度信息,确定所述竖线序列中具有相连关系的竖线,所述具有相连关系的竖线是基于所述竖线的位置信息存在一个重合点确定的;
将所述具有相连关系的竖线,确定为同一表格内的竖线。
6.根据权利要求5所述的方法,其特征在于,在所述通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界之后,所述方法还包括:
根据所述表格边界,判断所述表格是否缺失边框;
若是,则根据所述表格边界,对所述表格进行边框补充。
7.根据权利要求6所述的方法,其特征在于,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定是否存在边距小于预置阈值的线条;
若是,则根据所述线条属性信息中的长度信息,确定所述小于预置阈值的线条中长度最长线条;
保留所述长度最长的线条,并删除所述边距小于预置阈值中的其余线条。
8.根据权利要求7所述的方法,其特征在于,所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,包括:
确定所述表格对应的分组线条的数量,并根据所述分组线条的数量及二维数组模拟对应的模拟表格;
根据所述多个线条的属性信息以及所述模拟表格,从所述表格上侧边缘开始,在确定所述模拟表格中的单元格不存在下框横线时,合并所述单元格及下侧与之相邻的单元格;以及
从所述表格左侧边缘开始,在确定所述模拟表格中的单元格不存在右框竖线时,合并所述单元格及右侧与之相邻的单元格。
9.根据权利要求8所述的方法,其特征在于,在所述根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内之后,所述方法还包括:
确定所述表格中是否存在异常单元格,所述异常单元格为所述表格中不包含所述数据信息,且所述单元格的面积小于单元格面积阈值的单元格,所述单元格面积是根据所述单元格对应的横线及竖线确定的;
若存在,则将所述异常单元格合并至相邻的单元格中。
10.根据权利要求9所述的方法,其特征在于,在所述根据所述线条的属性信息,确定同一表格内的线条,记作分组线条之后,所述方法还包括:
从所述线条中确定异常线条,所述异常线条为所述线条中分组线条外的线条;
根据所述异常线条的属性信息,判断具有相同属性信息的异常线条的个数是否超过阈值;
若是,则将所述异常线条确定为分页符,并根据所述分页符进行分页。
11.一种基于PDF文件的表格数据解析装置,其特征在于,包括:
获取单元,用于获取页面中的线条及线条的属性信息,所述线条包括横线及竖线,所述线条的属性信息包括位置信息及长度信息,其中,所述位置信息是基于线条与纸张边界的距离确定的,所述长度信息是基于纸张边界的距离与纸张的长度或宽度的相对关系确定的;
第一确定单元,用于根据所述线条的属性信息,确定同一表格内的线条,记作分组线条,其中,所述分组线条是基于属性信息确定具有关联关系的线条;
第二确定单元,用于通过所述分组线条中线条的属性信息,确定所述分组线条对应的表格边界;
第一合并单元,用于根据所述表格对应的分组线条中多个线条的属性信息,合并所述表格中符合预设条件的单元格,并将所述页面中数据信息添加至表格中对应的单元格内,所述表格是由所述单元格组成的,所述单元格是根据所述线条构成的,所述预设条件包括模拟表格中的单元格不存在下框横线及右框竖线,所述模拟表格是基于二维数组输出的原理得到的,所述二维数组输出的原理是基于数组的行列确定数组位置。
12.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求10中任意一项所述的基于PDF文件的表格数据解析方法。
13.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时权利要求1至权利要求10中任意一项所述的基于PDF文件的表格数据解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810567926.7A CN110569489B (zh) | 2018-06-05 | 2018-06-05 | 基于pdf文件的表格数据解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810567926.7A CN110569489B (zh) | 2018-06-05 | 2018-06-05 | 基于pdf文件的表格数据解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569489A CN110569489A (zh) | 2019-12-13 |
CN110569489B true CN110569489B (zh) | 2023-08-11 |
Family
ID=68772109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810567926.7A Active CN110569489B (zh) | 2018-06-05 | 2018-06-05 | 基于pdf文件的表格数据解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569489B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111695330B (zh) * | 2020-06-30 | 2023-10-27 | 望海康信(北京)科技股份公司 | 生成表格的方法、装置、电子设备及计算机可读存储介质 |
CN113343658B (zh) * | 2021-07-01 | 2024-04-09 | 湖南四方天箭信息科技有限公司 | 一种pdf文件信息抽取方法、装置以及计算机设备 |
CN113761873A (zh) * | 2021-09-07 | 2021-12-07 | 平安国际智慧城市科技股份有限公司 | Pdf解析方法、装置、电子设备及可存储介质 |
CN113688795A (zh) * | 2021-09-27 | 2021-11-23 | 上海合合信息科技股份有限公司 | 一种将图像中表格转换为电子表格的方法及装置 |
CN113723362A (zh) * | 2021-09-27 | 2021-11-30 | 上海合合信息科技股份有限公司 | 一种在图像中检测表格线的方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377177B (zh) * | 2012-04-27 | 2016-03-30 | 北大方正集团有限公司 | 一种数字版式文件中识别表格的方法及装置 |
CN102722475A (zh) * | 2012-05-09 | 2012-10-10 | 深圳市万兴软件有限公司 | 一种PDF文档中的表格转换成Excel表格的方法 |
US9251413B2 (en) * | 2013-06-14 | 2016-02-02 | Lexmark International Technology, SA | Methods for automatic structured extraction of data in OCR documents having tabular data |
CN105988979B (zh) * | 2015-02-16 | 2018-11-16 | 北京邮电大学 | 基于pdf文件的表格提取方法和装置 |
CN107590448A (zh) * | 2017-08-30 | 2018-01-16 | 武汉古奥基因科技有限公司 | 从文献中自动获取qtl数据的方法 |
CN107622230B (zh) * | 2017-08-30 | 2019-12-06 | 中国科学院软件研究所 | 一种基于区域识别与分割的pdf表格数据解析方法 |
-
2018
- 2018-06-05 CN CN201810567926.7A patent/CN110569489B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110569489A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569489B (zh) | 基于pdf文件的表格数据解析方法及装置 | |
US20180129944A1 (en) | Document understanding using conditional random fields | |
CN104835134B (zh) | 一种计算商品图像牛皮癣分值的方法和装置 | |
CN104112284B (zh) | 一种图片的相似度检测方法和设备 | |
CN107294918B (zh) | 一种钓鱼网页检测方法及装置 | |
WO2019075968A1 (zh) | 表格信息跨页识别方法、电子设备及计算机可读存储介质 | |
CN109582883B (zh) | 栏目页的确定方法和装置 | |
CN106202098A (zh) | 记录及还原网页中点击位置的方法和装置 | |
CN110489625A (zh) | 一种网页数据采集模板的生成方法和装置 | |
CN111125088B (zh) | 多层级数据处理方法和装置 | |
CN106407392A (zh) | 一种基于标记语言的节点映射关系抽取方法及系统 | |
CN109582934B (zh) | 版式文档的转换方法及装置 | |
Xu et al. | Cross-browser differences detection based on an empirical metric for web page visual similarity | |
CN108255891B (zh) | 一种判别网页类型的方法及装置 | |
CN117423124A (zh) | 基于表格图像的表格数据处理方法和装置、设备及介质 | |
CN117390329A (zh) | 网页标注方法、装置及设备 | |
CN115297042A (zh) | 检测不同网络下网页一致性的方法及相关设备 | |
CN115797955A (zh) | 基于单元格约束的表格结构识别方法及其应用 | |
CN116045906A (zh) | 最小建筑限界检测方法、装置及服务器 | |
CN113255369B (zh) | 文本相似度分析的方法、装置及存储介质 | |
CN111125590B (zh) | 一种绘制热力图的方法及装置 | |
US10970464B2 (en) | Method, device for processing webpage content and storage medium | |
CN114820729A (zh) | 一种元素一键布局方法及装置 | |
CN117173725B (zh) | 表格信息处理方法、装置、计算机设备和存储介质 | |
CN108629238B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |