CN110705213B - Pdf表格提取方法、装置、终端及计算机可读存储介质 - Google Patents
Pdf表格提取方法、装置、终端及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110705213B CN110705213B CN201910783740.XA CN201910783740A CN110705213B CN 110705213 B CN110705213 B CN 110705213B CN 201910783740 A CN201910783740 A CN 201910783740A CN 110705213 B CN110705213 B CN 110705213B
- Authority
- CN
- China
- Prior art keywords
- cell
- type
- width
- length
- 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
- 238000000605 extraction Methods 0.000 title claims abstract description 35
- 230000008859 change Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
Abstract
本发明公开了一种PDF表格提取方法,包括:获取目标PDF,并对所述目标PDF进行解析获得表格数据;从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;根据各单元格的顶点坐标生成对应格式的表格。本发明还提供一种PDF表格提取装置、终端及计算机可读存储介质,本发明基于数据查询对PDF中的表格进行提取,最终提取生成的表格与PDF中的表格的格式一致,保证了表格提取的准确性。
Description
技术领域
本发明涉及表格提取技术领域,尤其涉及一种PDF表格提取方法、装置、终端及计算机可读存储介质。
背景技术
目前PDF支持ASCII码和二进制码这两种编码方式,且其文档结构是一种树型结构,树的根结点也是PDF文件的根对象,根结点有四个子树:页面树、书签树、线索树和名字树。
原先常规的解析PDF中的excel的方法是:使用PDFbox进行读取,然而得到的表格信息会出现显示错乱的问题,尤其是合并的单元格,PDFbox无法辨识篇幅很长的内容属于某一行某一列,使得从PDF中提取出来的表格与PDF 中的原表格不一致,即,从PDF中提取出来的表格的准确率不高。
因此,现有PDF表格提取方法提取出的表格的准确率不高是一种亟待解决的问题。
发明内容
本发明的主要目的在于提供一种PDF表格提取方法、装置、终端及计算机可读存储介质,旨在解决现有的PDF表格提取方法准确率不高的技术问题。
为实现上述目的,本发明提供一种PDF表格提取方法,所述PDF表格提取方法包括:
获取目标PDF,并对所述目标PDF进行解析获得表格数据;
从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;
根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;
根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;
根据各单元格的顶点坐标生成对应格式的表格。
优选地,所述单元格类型包括第一类型、第二类型、第三类型以及第四类型,所述根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型的步骤包括:
将第一个单元格换行符之前的所有单元格中的第一个单元格的类型判定为第一类型;
将第一个单元格换行符之前的所有单元格中的除第一个单元格之外的单元格的类型判定为第二类型;
将相邻两个单元格换行符之间的第一个单元格的类型判定为对应的第三类型或第四类型;
将相邻两个单元格换行符之间的除第一个单元格之外的单元格的类型判定为第四类型。
优选地,所述将相邻两个单元格换行符之间的第一个单元格的类型判定为对应的第三类型或第四类型的步骤包括:
获取相邻两个单元格换行符之间的第一个单元格之前的单元格行数;
若所述单元格行数为一行,则判断相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽是否均相等;
若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽不是均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。
优选地,所述获取相邻两个单元格换行符之间的第一个单元格之前的行数的步骤之后,还包括:
若所述单元格行数大于一行,则从相邻两个单元格换行符之间的第一个单元格的上一行开始,遍历对比每行的第一个单元格的宽与第二个单元格的宽,判断每行的第一个单元格的宽与第二个单元格的宽是否均相等;
若每行的第一个单元格的宽与第二个单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若存在第一个单元格的宽与第二个单元格的宽不相等的不相等行,则停止遍历,并将所述不相等行的第二个单元格的宽与所述不相等行之后的行的第一个单元格的宽进行求和,判断求得的和是否或等于所述不相等行的第一个单元格的宽,其中,所述不相等行之后的行是指位于所述不相等行之后且位于相邻两个单元格换行符之间的第一个单元格之前的所有行;
若求得的和大于或等于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若求得的和小于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。
优选地,所述根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标的步骤包括:
获取预设的单元格标准长度与单元格标准宽度;
以表格左上角为坐标原点、表格行方向为X轴正方向、表格列方向为Y 轴正方向、以单元格标准长度为X轴单位长度、以单元格标准宽度为Y轴单位长度建立二维坐标系;
根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标。
优选地,所述根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标的步骤包括:
获得第一类型的单元格的左上顶点坐标为(0,0),右上顶点坐标为(第一类型的单元格的长度/单元格标准长度,0),左下顶点的坐标为(0,第一类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为(第一类型的单元格的长度/单元格标准长度,第一类型的单元格的宽度/单元格标准宽度);
获得第二类型的单元格的左上顶点坐标为(第二类型的单元格的左侧所有单元格的长度之和/单元格标准长度,0),右上顶点坐标为({第二类型的单元格的左侧所有单元格的长度之和+第二类型的单元格的长度}/单元格标准长度,0),左下顶点的坐标为(0,第二类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为({第二类型的单元格的左侧所有单元格长度之和+ 第二类型的单元格长度}/单元格标准长度},第二类型的单元格宽度/单元格标准宽度);
获得第三类型的单元格的左上顶点坐标为(0,第三单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为(第三类型的单元格的长度/单元格标准长度,第三单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(0,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为(第三类型的单元格的长度/单元格标准长度,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度);
获得第四类型的单元格的左上顶点坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为({第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为({第四类型的单元格左侧所有单元格的长度之和+ 第四类型的单元格的长度}/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度)。
优选地,所述获取目标PDF,并对所述目标PDF进行解析获得表格数据的步骤包括:
获取目标PDF;
对所述目标PDF进行解析获得对应的字节流;
识别所述字节流中的表格标识符,并提取所述表格标识符对应的字节流作为表格数据。
本发明还提供一种PDF表格提取装置,所述PDF表格提取装置包括:
解析模块,所述解析模块用于获取目标PDF,并对所述目标PDF进行解析获得表格数据;
获得模块,所述获得模块用于从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;
获取模块,所述获取模块用于根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;
计算模块,所述计算模块用于根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;
生成模块,所述生成模块用于根据各单元格的顶点坐标生成对应格式的表格。
本发明还提供一种终端,包括处理器、存储器、以及存储在所述存储器上的可被所述处理器执行的PDF表格提取程序,其中,所述PDF表格提取程序被所述处理器执行时,实现如上所述的PDF表格提取方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有PDF表格提取程序,其中,所述PDF表格提取程序被处理器执行时,实现如上所述的PDF表格提取方法的步骤。
本发明技术方案中,获取目标PDF,并对目标PDF进行解析获得表格数据;从表格数据中获得各表格中的各单元格的长宽属性和位置属性;根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;根据单元格类型、长宽属性和位置属性得出各单元格的各顶点坐标;根据各单元格的顶点坐标生成对应格式的表格。本发明提出的技术方案基于数据查询对PDF中的表格进行提取,先从PDF中解析出表格数据,再获得表格数据中的长宽属性和位置属性,根据长宽属性和位置属性计算出各单元格的各顶点坐标,最后根据各顶点坐标生成对应格式的表格,最终生成的表格与PDF中的表格的格式一致,保证了表格提取的准确性。
附图说明
图1为本发明实施例方案中涉及的终端的硬件结构示意图;
图2为本发明PDF表格提取方法第一实施例的流程示意图;
图3为本发明实施例中获取目标PDF,并对所述目标PDF进行解析获得表格数据的步骤的流程细化示意图;
图4为本发明实施例中根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型的步骤的流程细化示意图;
图5为本发明实施例中将相邻两个单元格换行符之间的第一个单元格的类型判定为对应的第三类型或第四类型的步骤的流程细化示意图;
图6为本发明实施例中根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标的步骤的流程细化示意图;
图7为本发明实施例中根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标的步骤的流程示意图;
图8为本发明实施例中PDF表格提取装置的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例涉及的PDF表格提取方法主要应用于终端,该终端可以是 PC、便携计算机、移动终端等具有显示和处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的终端结构示意图。本发明实施例中,终端可以包括处理器1001(例如CPU),通信总线1002,用户接口 1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、Wi-Fi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及PDF表格提取程序。
在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的PDF表格提取程序,并执行PDF 表格提取方法的步骤。
基于上述终端的硬件结构,提出本发明PDF表格提取方法的各个实施例。
本发明提供一种PDF表格提取方法。
请参阅图2,在本发明第一实施例中,PDF表格提取方法包括以下步骤:
步骤S100,获取目标PDF,并对所述目标PDF进行解析获得表格数据;
具体地,在需要提取PDF中的excel表格时,可以先获取目标PDF,目标PDF可以是用户在需要进行提取时上传至终端的PDF,目标PDF也可以是预先存储在终端的数据库中的PDF,在用户需要进行表格提取时,在数据库中选取对应需要的PDF。在获取到目标PDF后,可以通过 VisualBasic/Python/JAVA等程序语言对目标PDF进行解析获得表格数据,目标PDF中可能有多个表格,针对每个表格可以提取出对应的表格数据。
具体地,请参照图3,图3为本发明实施例中获取目标PDF,并对所述目标PDF进行解析获得表格数据的步骤的流程细化示意图,基于上述实施例,步骤S100包括:
步骤S110,获取目标PDF;
步骤S120,对所述目标PDF进行解析获得对应的字节流;
在获取到目标PDF后,通过VisualBasic/Python/JAVA等程序语言将目标 PDF进行解析,可以获得目标PDF对应的字节流。
步骤S130,识别所述字节流中的表格标识符,并提取所述表格标识符对应的字节流作为表格数据。
由于PDF中不同格式部分均有对应的标识符,在将目标PDF转换为字节流后,可以通过VisualBasic/Python/JAVA等程序语言识别出字节流中的表格标识符,通过识别出的表格识别符在字节流中确定出与表格对应的字节流,并提取出与表格对应的字节流作为表格数据。
步骤S200,从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;
具体地,在获得各表格对应的表格数据后,可以运用宏定义去获得各表格中的各单元格的长宽属性,其中,“表格中各单元格的长宽属性”指该表格中各单元格的实际长宽。表格中各单元格的位置属性是指表格中各单元格之间的先后顺序以及各单元格所在行的信息,表格数据中,表格个单元格数据的读取顺序为:从表格第一行第一列单元格开始从左至右遍历第一行的所有单元格,再从第二行第一列列单元格开始从左至右遍历第二行的所有单元格,再从第三行从左至右遍历第三行的所有单元格,直至遍历完表格的所有单元格。其中,各单元格所在行的信息可通过单元格换行符表现,通过检测单元格数据流中的单元格换行符,将第一个单元格换行符之前的单元格作为第一行,且将相邻两个单元格换行符之间的单元格作为一行。
步骤S300,根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;
为了方便对各单元格的顶点坐标进行计算,可以将各单元格分为四种类型,分别为第一类型、第二类型、第三类型以及第四类型,第一类型的单元格的左侧与上边均无单元格;第二类型的单元格的左侧有单元格,但上边无单元格;第三类型的单元格的左侧无单元格,但上边有单元格;第四类型的单元格的上边和左侧均有单元格。在获得各单元格的长宽属性和位置属性后,可以通过各单元格的长宽属性和各单元格的位置属性来确定各单元格所属的单元格类型。
步骤S400,根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;
具体地,在获得单元格属于第一类型、第二类型、第三类型或第四类型后,可以根据单元格的长宽属性和位置属性得出各单元格得到各顶点坐标。例如,可以在终端预设单元格标准长度与单元格标准宽度,当单元格为第一类型时,单元格是左上顶点坐标为坐标原点;右上顶点坐标的X坐标为单元格的长/单元格标准长度,Y坐标为0;左下顶点的X坐标为0,Y坐标为单元格的宽/单元格标准宽度,右下顶点的X坐标为单元格的长/单元格标准长度,Y坐标为单元格的宽/单元格标准宽度。当单元格为第二类型时,单元格是左上顶点坐标的X坐标为单元格的左侧所有单元格的长度之和/单元格标准长度,Y坐标为0;右上顶点坐标的X坐标为{单元格的左侧所有单元格的长度之和+单元格的长度}/单元格标准长度,Y坐标为0;左下顶点的X坐标为 0,Y坐标为单元格的宽度/单元格标准宽度,右下顶点的X坐标为{单元格的左侧所有单元格长度之和+单元格长度}/单元格标准长度},Y坐标为单元格宽度/单元格标准宽度。
步骤S500,根据各单元格的顶点坐标生成对应格式的表格;
在获得各单元格的顶点坐标后,在坐标轴中可以根据各单元格各顶点坐标生成对应格式的表格,生成的表格与PDF中的表格的格式一致。此外,在生成了对应格式的表格之后,还可以将利用Python等得到的表格中的内容对应填入表格中,使得提取出的表格在内容及格式上均与PDF中的原有表格保持一致。在生成表格后,表格为excel表格,可以将表格转换成word形式保存。
本发明技术方案中,获取目标PDF,并对目标PDF进行解析获得表格数据;从表格数据中获得各表格中的各单元格的长宽属性和位置属性;根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;根据单元格类型、长宽属性和位置属性得出各单元格的各顶点坐标;根据各单元格的顶点坐标生成对应格式的表格。本发明提出的技术方案基于数据查询对PDF中的表格进行提取,先从PDF中解析出表格数据,再获得表格数据中的长宽属性和位置属性,根据长宽属性和位置属性计算出各单元格的各顶点坐标,最后根据各顶点坐标生成对应格式的表格,最终生成的表格与PDF中的表格的格式一致,保证了表格提取的准确性。
具体地,请参照图4,图4为本发明实施例中根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型的步骤的流程细化示意图,单元格类型包括第一类型、第二类型、第三类型以及第四类型,基于上述实施例,步骤S300包括:
步骤S310,将第一个单元格换行符之前的所有单元格中的第一个单元格的类型判定为第一类型;
具体地,各表格对应的表格数据中均包含有单元格换行符,通过检测单元格数据流中的单元格换行符,将第一个单元格换行符之前的单元格作为第一行,且将相邻两个单元格换行符之间的单元格作为一行。将第一个单元格换行符之前的所有单元格中的第一个单元格的类型判定为第一类型,即,在读取各表格对应的表格数据时,将按照读取顺序读取到的表格中的第一个单元格的类型判定为第一类型。
步骤S320,将第一个单元格换行符之前的所有单元格中的除第一个单元格之外的单元格的类型判定为第二类型;
具体地,将第一个单元格换行符之前的所有单元格中的除第一个单元格之外的单元格的类型判定为第二类型,即,在读取各表格对应的表格数据时,将按照读取顺序读取到的表格中的第一个单元格换行符之前的除第一个单元格之外的单元格的类型判定为第二类型。
步骤S330,将相邻两个单元格换行符之间的第一个单元格的类型判定为对应的第三类型或第四类型;
相邻两个单元格换行符之间的第一个单元格可能是第三类型,也可能是第四类型,即,当相邻两个单元格换行符之间的第一个单元格是表格中的第一单元格时,相邻两个单元格换行符之间的第一个单元格为第三类型,当当相邻两个单元格换行符之间的第一个单元格不是表格中的第一单元格时,相邻两个单元格换行符之间的第一个单元格为第四类型。例如,如果在第一个单元格换行符之前的所有单元格中的第一个单元格的宽度较大时,第一个单元格将会占到第一个元格换行符和第二个单元格换行符之间的第一个单元格左侧的空间,第一个元格换行符和第二个单元格换行符之间的第一个单元格属于第三类型;如果在第一个单元格换行符之前的所有单元格的宽度均一致,则说明第一个元格换行符和第二个单元格换行符之间的第一个单元格左侧的空间不会被占用,第一个元格换行符和第二个单元格换行符之间的第一个单元格属于第四类型。
具体地,参照图5,图5为本发明实施例中将相邻两个单元格换行符之间的第一个单元格的类型判定为对应的第三类型或第四类型的步骤的流程细化示意图,基于上述实施例,步骤S330包括:
步骤S331,获取相邻两个单元格换行符之间的第一个单元格之前的单元格行数;
由于将第一个单元格换行符之前的单元格作为第一行,且将相邻两个单元格换行符之间的单元格作为一行,因此,相邻两个单元格换行符之间的第一个单元格之前的行数就是相邻两个单元格换行符之间的第一个单元格之前具有的单元格换行符的数量。例如,第一个单元格换行符与第二个单元格换行符之间的第一个单元格之前的行数为1,第一个单元格换行符与第二个单元格换行符之间的第一个单元格之前具有1个单元格换行符;第二个单元格换行符与第三个单元格换行符之间的第一个单元格之前的行数为2,第二个单元格换行符与第三个单元格换行符之间的第一个单元格之前具有2个单元格换行符。
步骤S332,若所述单元格行数为一行,则判断相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽是否相等;
如果相邻两个单元格换行符之间的第一个单元格之前的单元格行数为一行,则说明需要判断的是第一个单元格换行符与第二个单元格换行符之间的第一个单元格的类型,此时,只需要对该第一个单元格之前的各单元格的宽进行对比,判断相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽是否相等。
步骤S333,若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
具体地,如果相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型。即,如果第一个单元格换行符之前的所有的单元格的宽均相等,说明第一个单元格换行符之前的所有的单元格均未占用第一个单元格换行符和第二个单元格换行符之间的第一个单元格的左侧的空间,即,第一个单元格换行符和第二个单元格换行符之间的第一个单元格的左侧无单元格,说明第一个单元格换行符和第二个单元格换行符之间的第一个单元格的类型为第三类型。
步骤S334,若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽不是均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型;
具体地,如果相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽不是均相等,即如果相邻两个单元格换行符之间的第一个单元格之前的各单元格中存在宽不相等的单元格,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。即,如果第一个单元格换行符之前的所有的单元格中存在宽不相等的单元格,说明第一个单元格换行符之前的单元格均占用了第一个单元格换行符和第二个单元格换行符之间的第一个单元格的左侧的空间,即,第一个单元格换行符和第二个单元格换行符之间的第一个单元格的左侧有单元格,说明第一个单元格换行符和第二个单元格换行符之间的第一个单元格的类型为第四类型。
步骤S335,若所述单元格行数大于一行,则从相邻两个单元格换行符之间的第一个单元格的上一行开始,遍历对比每行的第一个单元格的宽与第二个单元格的宽,判断每行的第一个单元格的宽与第二个单元格的宽是否均相等;
具体地,将相邻两个单元格换行符之间的第一个单元格定义为待判断单元格,如果相邻两个单元格换行符之间的第一个单元格之前的单元格行数大于一行,即相邻两个单元格换行符之间的第一个单元格之前的单元格行数为两行及以上,则从相邻两个单元格换行符之间的第一个单元格的上一行开始,遍历对比每行的第一个单元格的宽与第二个单元格的宽,判断每行的第一个单元格的宽与第二个单元格的宽是否均相等。具体地,相邻两个单元格换行符之间的第一个单元格之前的单元格行数大于一行时,先对比相邻两个单元格换行符之间的第一个单元格的上一行的第一个单元格与第二个单元格的宽是否相等,即,先对比最接近待判断单元格的行中的第一个单元格与第二个单元格的宽是否相等,再沿远离待判断单元格的方向依次遍历对比其他行的第一个单元格与第二个单元格的宽是否相等等。如果每一行的第一个单元格的宽与第二个单元格的宽均相等,则直接遍历完相邻两个单元格换行符之间的第一个单元格之前的所有行的单元格;如果遍历到某行时,发现某行的第一个单元格的宽与第二个单元格的宽不相等,则停止遍历,再进行后续的计算判断操作。
步骤S336,若每行的第一个单元格的宽与第二个单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
如果相邻两个单元格换行符之间的第一个单元格之前的所有行的第一个单元格的宽和第二个单元格的宽均相等,说明相邻两个单元格换行符之间的第一个单元格之前的所有行的第一个单元格没有占用当前待判断的第一个单元格左侧的空间,因此,可以将该相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型。
步骤S337,若存在第一个单元格的宽与第二个单元格的宽不相等的不相等行,则停止遍历,并将所述不相等行的第二个单元格的宽与所述不相等行之后的行的第一个单元格的宽进行求和,判断求得的和是否或等于所述不相等行的第一个单元格的宽,其中,所述不相等行之后的行是指位于所述不相等行之后且位于相邻两个单元格换行符之间的第一个单元格之前的所有行;
如果在遍历的过程中,发现了第一个单元格的宽与第二个单元格的宽不相等的不相等行,此时,停止遍历,并将不相等行的第二个单元格的宽与不相等行之后的行的第一个单元格的宽进行求和,判断求得的和是否或等于不相等行的第一个单元格的宽,其中,不相等行之后的行是指位于不相等行之后且位于相邻两个单元格换行符之间的第一个单元格之前的所有行。具体地,当发现某不相等行的第一个单元格的宽与第二个单元格的宽不相等时,需要判断该不相等行的第一个单元格是否占用了待判断单元格左侧的空间,此时,只需将不相等行的第二个单元格的宽与所述不相等行之后的行的第一个单元格的宽进行求和,再根据求得的和与不相等行的第一个单元格的宽的大小关系来判断不相等行的第一个单元格是否占用了待判断单元格左侧的空间。
步骤S338,若求得的和大于或等于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
具体地,如果求得的和大于或等于不相等行的第一个单元格的宽,则说明不相等行的第一个单元格没有占用邻两个单元格换行符之间的第一个单元格左侧的空间,此时,可以将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型。
步骤S339,若求得的和小于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。
具体地,如果求得的和小于不相等行的第一个单元格的宽,则说明不相等行的第一个单元格占用了相邻两个单元格换行符之间的第一个单元格左侧的空间,此时,可以将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。
进一步地,请参照图6,图6为本发明实施例中根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标的步骤的流程细化示意图,基于上述实施例,步骤S400包括:
步骤S410,获取预设的单元格标准长度与单元格标准宽度;
具体地,在一种实施例中,可以在终端预设固定的单元格标准长度和单元格标准宽度,在另一实施例中,可以基于表格数据确定对应的单元格标准长度和单元格标准宽度,即,可以获取表格中所有单元格长度和宽度,以单元格的长度和宽度组成[长度,宽度]二维数组,统计出现次数最多的数组,将该数组的长宽作为单元格标准长度和单元格标准宽度;还可以在获取表格所有单元格长度和宽度后,将各单元格的长度进行比较、将各单元格的宽度进行比较,获得其中的最短长度和最短宽度,将最短长度和最短宽度作为单元格标准长宽。在需要得出各单元格的各顶点坐标时,可以先获取预设的单元格标准长度与单元格标准宽度。
步骤S420,以表格左上角为坐标原点、表格行方向为X轴正方向、表格列方向为Y轴正方向、以单元格标准长度为X轴单位长度、以单元格标准宽度为Y轴单位长度建立二维坐标系;
在获取到预设的单元格标准长度与单元格标准宽度后,以表格左上角为坐标原点、表格行方向为X轴正方向、表格列方向为Y轴正方向、以单元格标准长度为X轴单位长度、以单元格标准宽度为Y轴单位长度建立二维坐标系。
步骤S430,根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标;
在建立了二维坐标系后,根据各单元格的单元格类型、各单元格的长宽属性以及各单元格的位置属性可以得出各单元格在二维坐标系的各顶点坐标。
具体地,请参照图7,图7为本发明实施例中根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标的步骤的流程示意图,基于上述实施例,步骤S430包括:
步骤S431,获得第一类型的单元格的左上顶点坐标为(0,0),右上顶点坐标为(第一类型的单元格的长度/单元格标准长度,0),左下顶点的坐标为(0,第一类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为(第一类型的单元格的长度/单元格标准长度,第一类型的单元格的宽度/单元格标准宽度);
需要说明的是,本实施例中的左侧指的是同一行的左侧,上边为同一列的上边。
具体地,第一类型的单元格的上边与左侧均无单元格,在获得单元格类型和长宽属性后,可以获得第一类型单元格的左上顶点为坐标原点(0,0);第一类型单元格的右上顶点坐标的X坐标为第一类型的单元格的长度/单元格标准长度,Y坐标为0;左下顶点的坐标的X坐标为0,Y坐标为第一类型的单元格的宽度/单元格标准宽度;右下顶点的坐标的X坐标为第一类型的单元格的长度/单元格标准长度,Y坐标为第一类型的单元格的宽度/单元格标准宽度。
步骤S432,获得第二类型的单元格的左上顶点坐标为(第二类型的单元格的左侧所有单元格的长度之和/单元格标准长度,0),右上顶点坐标为({第二类型的单元格的左侧所有单元格的长度之和+第二类型的单元格的长度}/单元格标准长度,0),左下顶点的坐标为(0,第二类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为({第二类型的单元格的左侧所有单元格长度之和+第二类型的单元格的长度}/单元格标准长度},第二类型的单元格的宽度/单元格标准宽度);
具体地,第二类型的单元格的上边无单元格,左侧有单元格,在获得单元格类型和长宽属性后,可以获得第二类型单元格的左上顶点的X坐标为第二类型的单元格的左侧所有单元格的长度之和/单元格标准长度,Y坐标为0;第二类型单元格的右上顶点坐标的X坐标为{第二类型的单元格的左侧所有单元格的长度之和+第二类型的单元格的单元格长度}/单元格标准长度,Y坐标为0;左下顶点的坐标的X坐标为0,Y坐标为第二类型的单元格的宽度/ 单元格标准宽度;右下顶点的坐标的X坐标为{第二类型的单元格的左侧所有单元格长度之和+第二类型的单元格长度}/单元格标准长度},Y坐标为第二类型的单元格的宽度/单元格标准宽度;
步骤S433,获得第三类型的单元格的左上顶点坐标为(0,第三单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为(第三类型的单元格的长度/单元格标准长度,第三单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(0,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为(第三类型的单元格的长度/单元格标准长度,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度);
具体地,第三类型的单元格的上边有单元格,左侧无单元格,在获得单元格类型和长宽属性后,可以获得第三类型单元格的左上顶点的X坐标为0, Y坐标为第三单元格上边所有单元格的宽度之和/单元格标准宽度;第三类型单元格的右上顶点坐标的X坐标为第三类型的单元格的长度/单元格标准长度,Y坐标为第三单元格上边所有单元格的宽度之和/单元格标准宽度;左下顶点的坐标的X坐标为0,Y坐标为{第三单元格上边所有单元格的宽度之和 +第三类型的单元格的宽度}/单元格标准宽度;右下顶点的坐标的X坐标为第三类型的单元格的长度/单元格标准长度,Y坐标为{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度。
步骤S434,获得第四类型的单元格的左上顶点坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为({第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为({第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度)。
具体地,第四类型的单元格的上边和左侧均有单元格,在获得单元格类型、长宽属性和位置属性后,可以获得第四类型单元格的左上顶点的X坐标为第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,Y坐标为第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度;第四类型单元格的右上顶点坐标的X坐标为{第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,Y坐标为第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度;左下顶点的坐标的X坐标为第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,Y坐标为{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度;右下顶点的坐标的X坐标为{第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,Y坐标为{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度。
通过获得第一类型、第二类型、第三类型以及第四类型的单元格的各顶点坐标,能够得到表格中所有单元格的顶点坐标,通过对单元格进行分类,使得坐标的获得更加准确、方便且快捷。
此外,请参照图8,本发明还提供一种PDF表格提取装置10,所述PDF 表格提取装置10包括:
解析模块20,所述解析模块用于获取目标PDF,并对所述目标PDF进行解析获得表格数据;
获得模块30,所述获得模块用于从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;
获取模块40,所述获取模块用于根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;
计算模块50,所述计算模块用于根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;
生成模块60,所述生成模块用于根据各单元格的顶点坐标生成对应格式的表格。
进一步地,所述单元格类型包括第一类型、第二类型、第三类型以及第四类型,所述获取模块40还用于:
将第一个单元格换行符之前的所有单元格中的第一个单元格的类型判定为第一类型;
将第一个单元格换行符之前的所有单元格中的除第一个单元格之外的单元格的类型判定为第二类型;
将相邻两个单元格换行符之间的第一个单元格的类型判定为对应的第三类型或第四类型;
将相邻两个单元格换行符之间的除第一个单元格之外的单元格的类型判定为第四类型。
进一步地,所述获取模块40还用于:
获取相邻两个单元格换行符之间的第一个单元格之前的单元格行数;
若所述单元格行数为一行,则判断相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽是否均相等;
若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽不是均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。
进一步地,所述获取模块40还用于:
若所述单元格行数大于一行,则从相邻两个单元格换行符之间的第一个单元格的上一行开始,遍历对比每行的第一个单元格的宽与第二个单元格的宽,判断每行的第一个单元格的宽与第二个单元格的宽是否均相等;
若每行的第一个单元格的宽与第二个单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若存在第一个单元格的宽与第二个单元格的宽不相等的不相等行,则停止遍历,并将所述不相等行的第二个单元格的宽与所述不相等行之后的行的第一个单元格的宽进行求和,判断求得的和是否或等于所述不相等行的第一个单元格的宽,其中,所述不相等行之后的行是指位于所述不相等行之后且位于相邻两个单元格换行符之间的第一个单元格之前的所有行;
若求得的和大于或等于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若求得的和小于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型;
进一步地,所述计算模块50还用于:
获取预设的单元格标准长度与单元格标准宽度;
以表格左上角为坐标原点、表格行方向为X轴正方向、表格列方向为Y 轴正方向、以单元格标准长度为X轴单位长度、以单元格标准宽度为Y轴单位长度建立二维坐标系;
根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标。
进一步地,所述计算模块50还用于:
获得第一类型的单元格的左上顶点坐标为(0,0),右上顶点坐标为(第一类型的单元格的长度/单元格标准长度,0),左下顶点的坐标为(0,第一类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为(第一类型的单元格的长度/单元格标准长度,第一类型的单元格的宽度/单元格标准宽度);
获得第二类型的单元格的左上顶点坐标为(第二类型的单元格的左侧所有单元格的长度之和/单元格标准长度,0),右上顶点坐标为({第二类型的单元格的左侧所有单元格的长度之和+第二类型的单元格的长度}/单元格标准长度,0),左下顶点的坐标为(0,第二类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为({第二类型的单元格的左侧所有单元格长度之和+ 第二类型的单元格长度}/单元格标准长度},第二类型的单元格宽度/单元格标准宽度);
获得第三类型的单元格的左上顶点坐标为(0,第三单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为(第三类型的单元格的长度/单元格标准长度,第三单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(0,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为(第三类型的单元格的长度/单元格标准长度,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度);
获得第四类型的单元格的左上顶点坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为({第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为({第四类型的单元格左侧所有单元格的长度之和+ 第四类型的单元格的长度}/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度)。
进一步地,所述解析模块20还用于:
获取目标PDF;
对所述目标PDF进行解析获得对应的字节流;
识别所述字节流中的表格标识符,并提取所述表格标识符对应的字节流作为表格数据。
其中,上述PDF表格提取装置10中各个模块与上述PDF表格提取方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
此外,本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有PDF表格提取程序,其中,PDF表格提取程序被处理器执行时,实现如上述的PDF表格提取方法的步骤。
其中,PDF表格提取程序被执行时所实现的方法可参照本发明PDF表格提取方法的各个实施例,此处不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
Claims (8)
1.一种PDF表格提取方法,其特征在于,所述PDF表格提取方法包括:
获取目标PDF,并对所述目标PDF进行解析获得表格数据;
从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;
根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;
根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;
根据各单元格的顶点坐标生成对应格式的表格;
所述单元格类型包括第一类型、第二类型、第三类型以及第四类型,所述根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型的步骤包括:
将第一个单元格换行符之前的所有单元格中的第一个单元格的类型判定为第一类型;
将第一个单元格换行符之前的所有单元格中的除第一个单元格之外的单元格的类型判定为第二类型;
获取相邻两个单元格换行符之间的第一个单元格之前的单元格行数;
若所述单元格行数为一行,则判断相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽是否均相等;
若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽不是均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型;
将相邻两个单元格换行符之间的除第一个单元格之外的单元格的类型判定为第四类型。
2.如权利要求1所述的PDF表格提取方法,其特征在于,所述获取相邻两个单元格换行符之间的第一个单元格之前的行数的步骤之后,还包括:
若所述单元格行数大于一行,则从相邻两个单元格换行符之间的第一个单元格的上一行开始,遍历对比每行的第一个单元格的宽与第二个单元格的宽,判断每行的第一个单元格的宽与第二个单元格的宽是否均相等;
若每行的第一个单元格的宽与第二个单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若存在第一个单元格的宽与第二个单元格的宽不相等的不相等行,则停止遍历,并将所述不相等行的第二个单元格的宽与所述不相等行之后的行的第一个单元格的宽进行求和,判断求得的和是否或等于所述不相等行的第一个单元格的宽,其中,所述不相等行之后的行是指位于所述不相等行之后且位于相邻两个单元格换行符之间的第一个单元格之前的所有行;
若求得的和大于或等于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;
若求得的和小于所述不相等行的第一个单元格的宽,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型。
3.如权利要求2所述的PDF表格提取方法,其特征在于,所述根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标的步骤包括:
获取预设的单元格标准长度与单元格标准宽度;
以表格左上角为坐标原点、表格行方向为X轴正方向、表格列方向为Y轴正方向、以单元格标准长度为X轴单位长度、以单元格标准宽度为Y轴单位长度建立二维坐标系;
根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标。
4.如权利要求3所述的PDF表格提取方法,其特征在于,所述根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格在所述二维坐标系的各顶点坐标的步骤包括:
获得第一类型的单元格的左上顶点坐标为(0,0),右上顶点坐标为(第一类型的单元格的长度/单元格标准长度,0),左下顶点的坐标为(0,第一类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为(第一类型的单元格的长度/单元格标准长度,第一类型的单元格的宽度/单元格标准宽度);
获得第二类型的单元格的左上顶点坐标为(第二类型的单元格的左侧所有单元格的长度之和/单元格标准长度,0),右上顶点坐标为({第二类型的单元格的左侧所有单元格的长度之和+第二类型的单元格的长度}/单元格标准长度,0),左下顶点的坐标为(0,第二类型的单元格的宽度/单元格标准宽度),右下顶点的坐标为({第二类型的单元格的左侧所有单元格长度之和+第二类型的单元格长度}/单元格标准长度},第二类型的单元格宽度/单元格标准宽度);
获得第三类型的单元格的左上顶点坐标为(0,第三单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为(第三类型的单元格的长度/单元格标准长度,第三单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(0,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为(第三类型的单元格的长度/单元格标准长度,{第三单元格上边所有单元格的宽度之和+第三类型的单元格的宽度}/单元格标准宽度);
获得第四类型的单元格的左上顶点坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),右上顶点坐标为({第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,第四类型的单元格上边所有单元格的宽度之和/单元格标准宽度),左下顶点的坐标为(第四类型的单元格左侧所有单元格的长度之和/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度),右下顶点的坐标为({第四类型的单元格左侧所有单元格的长度之和+第四类型的单元格的长度}/单元格标准长度,{第四类型的单元格上边所有单元格的宽度之和+第四类型的单元格的宽度}/单元格标准宽度)。
5.如权利要求1-4中任一项所述的PDF表格提取方法,其特征在于,所述获取目标PDF,并对所述目标PDF进行解析获得表格数据的步骤包括:
获取目标PDF;
对所述目标PDF进行解析获得对应的字节流;
识别所述字节流中的表格标识符,并提取所述表格标识符对应的字节流作为表格数据。
6.一种PDF表格提取装置,其特征在于,所述PDF表格提取装置包括:
解析模块,所述解析模块用于获取目标PDF,并对所述目标PDF进行解析获得表格数据;
获得模块,所述获得模块用于从所述表格数据中获得各表格中的各单元格的长宽属性和位置属性;
获取模块,所述获取模块用于根据各单元格的长宽属性和位置属性获取各单元格所属的单元格类型;
计算模块,所述计算模块用于根据所述单元格类型、所述长宽属性和所述位置属性得出各单元格的各顶点坐标;
生成模块,所述生成模块用于根据各单元格的顶点坐标生成对应格式的表格;
所述单元格类型包括第一类型、第二类型、第三类型以及第四类型,所述获取模块还用于将第一个单元格换行符之前的所有单元格中的第一个单元格的类型判定为第一类型;将第一个单元格换行符之前的所有单元格中的除第一个单元格之外的单元格的类型判定为第二类型;获取相邻两个单元格换行符之间的第一个单元格之前的单元格行数;若所述单元格行数为一行,则判断相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽是否均相等;若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第三类型;若相邻两个单元格换行符之间的第一个单元格之前的各单元格的宽不是均相等,则将相邻两个单元格换行符之间的第一个单元格的类型判定为第四类型;将相邻两个单元格换行符之间的除第一个单元格之外的单元格的类型判定为第四类型。
7.一种终端,其特征在于,包括处理器、存储器、以及存储在所述存储器上的可被所述处理器执行的PDF表格提取程序,其中,所述PDF表格提取程序被所述处理器执行时,实现如权利要求1至5中任一项所述的PDF表格提取方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有PDF表格提取程序,其中,所述PDF表格提取程序被处理器执行时,实现如权利要求1至5中任一项所述的PDF表格提取方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910783740.XA CN110705213B (zh) | 2019-08-23 | 2019-08-23 | Pdf表格提取方法、装置、终端及计算机可读存储介质 |
PCT/CN2020/093507 WO2021036380A1 (zh) | 2019-08-23 | 2020-05-29 | Pdf表格提取方法、装置、计算机设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910783740.XA CN110705213B (zh) | 2019-08-23 | 2019-08-23 | Pdf表格提取方法、装置、终端及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110705213A CN110705213A (zh) | 2020-01-17 |
CN110705213B true CN110705213B (zh) | 2023-11-14 |
Family
ID=69193579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910783740.XA Active CN110705213B (zh) | 2019-08-23 | 2019-08-23 | Pdf表格提取方法、装置、终端及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110705213B (zh) |
WO (1) | WO2021036380A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110705213B (zh) * | 2019-08-23 | 2023-11-14 | 平安科技(深圳)有限公司 | Pdf表格提取方法、装置、终端及计算机可读存储介质 |
CN112380826B (zh) * | 2020-11-12 | 2024-03-22 | 中国农业银行股份有限公司佛山分行 | 一种基于文本文件的格式化电子表格生成方法 |
CN113326797A (zh) * | 2021-06-17 | 2021-08-31 | 上海电气集团股份有限公司 | 一种pdf文档提取的表格信息转换为结构化知识的方法 |
CN113378789B (zh) * | 2021-07-08 | 2023-09-26 | 京东科技信息技术有限公司 | 单元格位置的检测方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6865720B1 (en) * | 1999-03-23 | 2005-03-08 | Canon Kabushiki Kaisha | Apparatus and method for dividing document including table |
CN108446264A (zh) * | 2018-03-26 | 2018-08-24 | 阿博茨德(北京)科技有限公司 | Pdf文档中的表格矢量解析方法及装置 |
CN108595402A (zh) * | 2018-04-28 | 2018-09-28 | 西安极数宝数据服务有限公司 | 一种提取pdf表格信息的系统 |
WO2019075970A1 (zh) * | 2017-10-16 | 2019-04-25 | 平安科技(深圳)有限公司 | 表格信息换行识别方法、电子设备及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004139484A (ja) * | 2002-10-21 | 2004-05-13 | Hitachi Ltd | 帳票処理装置、該装置実行のためのプログラム、及び、帳票書式作成プログラム |
CN101833546A (zh) * | 2009-03-10 | 2010-09-15 | 株式会社理光 | 从可移植电子文档中提取表格的方法和装置 |
CN102103587B (zh) * | 2009-12-17 | 2014-06-04 | 北大方正集团有限公司 | 一种表格转换的方法和装置 |
US10331949B2 (en) * | 2017-07-25 | 2019-06-25 | Konica Minolta Laboratory U.S.A., Inc. | Splitting merged table cells |
CN110083810B (zh) * | 2019-03-28 | 2023-05-09 | 东软集团股份有限公司 | 表单转换方法、装置、存储介质和电子设备 |
CN110705213B (zh) * | 2019-08-23 | 2023-11-14 | 平安科技(深圳)有限公司 | Pdf表格提取方法、装置、终端及计算机可读存储介质 |
-
2019
- 2019-08-23 CN CN201910783740.XA patent/CN110705213B/zh active Active
-
2020
- 2020-05-29 WO PCT/CN2020/093507 patent/WO2021036380A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6865720B1 (en) * | 1999-03-23 | 2005-03-08 | Canon Kabushiki Kaisha | Apparatus and method for dividing document including table |
WO2019075970A1 (zh) * | 2017-10-16 | 2019-04-25 | 平安科技(深圳)有限公司 | 表格信息换行识别方法、电子设备及计算机可读存储介质 |
CN108446264A (zh) * | 2018-03-26 | 2018-08-24 | 阿博茨德(北京)科技有限公司 | Pdf文档中的表格矢量解析方法及装置 |
CN108595402A (zh) * | 2018-04-28 | 2018-09-28 | 西安极数宝数据服务有限公司 | 一种提取pdf表格信息的系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021036380A1 (zh) | 2021-03-04 |
CN110705213A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110705213B (zh) | Pdf表格提取方法、装置、终端及计算机可读存储介质 | |
US10409856B2 (en) | Approaches for associating terms with image regions | |
CN109685870B (zh) | 信息标注方法及装置、标注设备及存储介质 | |
US20170278057A1 (en) | Information processing apparatus, shelf label management system, control method, and program | |
CN109144370B (zh) | 一种截屏方法、装置、终端及计算机可读介质 | |
CN111240669B (zh) | 界面生成方法、装置、电子设备及计算机存储介质 | |
CN109508189B (zh) | 一种布局模板处理方法、装置及计算机可读存储介质 | |
CN112070076B (zh) | 文本段落结构还原方法、装置、设备及计算机存储介质 | |
CN112507806B (zh) | 智慧课堂信息交互方法、装置及电子设备 | |
CN108256523B (zh) | 基于移动终端的识别方法、装置及计算机可读存储介质 | |
CN110516218B (zh) | 表格的生成方法、终端和计算机可读存储介质 | |
CN111709414A (zh) | Ar设备及其文字识别方法、装置和计算机可读存储介质 | |
CN110659346A (zh) | 表格提取方法、装置、终端及计算机可读存储介质 | |
CN113283355A (zh) | 一种表格图像的识别方法、装置、计算机设备及存储介质 | |
CN108052869B (zh) | 车道线识别方法、装置及计算机可读存储介质 | |
CN109656652B (zh) | 网页图表绘制方法、装置、计算机设备和存储介质 | |
CN111400439A (zh) | 网络不良数据监控方法、装置及存储介质 | |
CN107871128B (zh) | 一种基于svg动态图表的高鲁棒性图像识别方法 | |
CN113313066A (zh) | 图像识别方法、装置、存储介质以及终端 | |
CN110222576B (zh) | 拳击动作识别方法、装置和电子设备 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
CN114083800B (zh) | 模型支撑面的3d打印数据生成方法、装置及存储介质 | |
JP2015191277A (ja) | データ識別方法、データ識別プログラム及びデータ識別装置 | |
CN110442663B (zh) | 栅格数据批量裁剪方法、装置及计算机可读存储介质 | |
CN102567302B (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 |