解析PDF表格数据的方法、存储介质与流程

文档序号:14653633发布日期:2018-06-08 22:31阅读:236来源:国知局
解析PDF表格数据的方法、存储介质与流程

本发明涉及数据解析领域,具体说的是解析PDF表格数据的方法、存储介 质。



背景技术:

现有技术的PDF解析的对象现有一般都是针对文字,而里面的表格只是视 觉上的,没有真正的表格对象,各个单元格只是用线段划分开来,PDF协议只 是记录这些文字、线段、图片等的位置信息。

现有的相关解析只是获取里面的文字,但对于表格数据而言应该严格对应 标题的相应列,由于PDF的特殊性,如前后页表格的连续,单个单元格的换行 的不确定性,水印等。单纯字符的划分不太现实、针对每种格式的表格都得先 分析其中的区分特性,从而再写相应的脚本导入到数据库,工作量之大难以想 象,因此很难实现把PDF的表格数据自动的提取存储在数据库中。

因此,目前市场上的PDF解析相对闭源,且对这类表格数据都是单纯的字 符处理,很难做到数据与标题的对应,很难判断数据行与行之间的相关性。



技术实现要素:

本发明所要解决的技术问题是:一种解析PDF表格数据的方法、存储介质, 实现全自动准确地解析表格数据,且实用性强。

为了解决上述技术问题,本发明采用的技术方案为:

一种解析PDF表格数据的方法,包括:

获取每页PDF的各线段的坐标和各字符的坐标;

依据线段交点划分出单元格,并获取各单元格对应的矩形坐标;

依据字符的坐标与矩形坐标的包含关系,获取各单元格对应的字段块

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行 时实现以下步骤:

获取每页PDF的各线段的坐标和各字符的坐标;

依据线段交点划分出单元格,并获取各单元格对应的矩形坐标;

依据字符的坐标与矩形坐标的包含关系,获取各单元格对应的字段块。

本发明的有益效果在于:提供一种视觉解析PDF表格数据的方法,无需根 据特定的PDF文件分析字段之间如何划分,无需确定表格的标题头,能够实现 全自动准确地解析并组织字段块数据,适用性强。具体的,依据各线段和各字 符坐标的关系精确划分出单元格和单元格内的字符,精确提取PDF的表格以及 表格内的数据,自动性极强,大大简化了PDF表格的导入。本发明能够大大改 进PDF表格数据的解析的准确度和便捷性,效果十分显著。

附图说明

图1为单表格形式的PDF表格示意图;

图2为随机空白单元格的示意图;

图3为跨页单元格的示意图;

图4为多层水印的表格示意图;

图5为本发明一种解析PDF表格数据的方法的流程示意图;

图6为线段交点的示意图;

图7为构成有效单元格的线段组成示意图;

图8为实施例一的流程示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并 配合附图予以说明。

本发明最关键的构思在于:依据各线段和各字符坐标的关系精确划分出单 元格和单元格内的字符,精确提取PDF的表格以及表格内的数据,实现PDF表 格的准确、便捷、自动化解析。

请参照图5,本发明提供一种解析PDF表格数据的方法,包括:

获取每页PDF的各线段的坐标和各字符的坐标;

依据线段交点划分出单元格,并获取各单元格对应的矩形坐标;

依据字符的坐标与矩形坐标的包含关系,获取各单元格对应的字段块。

进一步的,还包括:

依据单元格的中位线,确定每一行对应的单元格。

由上述描述可知,依据所确定的各个单元格的中位线之间的误差范围确定 是否为处于同一行的单元格,实现单元格的规整,以便获取排列整齐的列表。

进一步的,还包括:

将每页PDF转变为图像数据形式;

若相衔接的上下页沿Y轴方向逐步叠加靠拢后,能够获取相对应的垂直的 线段,且能够分别在所述垂直的线段上获取到水平的线段,则合并所述上下页 衔接处的单元格。

由上述描述可知,能够根据图像视觉特征分析上下页之间衔接的单元格的 相关性判断是否属于同一个单元格,即是否由于分页而拆分,若是,则进行合 并。实现自动、准确地对拆分单元格进行合并。

进一步的,所述若相衔接的上下页沿Y轴方向逐步叠加靠拢后,能够获取 相对应的垂直的线段,且能够分别在所述垂直的线段上获取到水平的线段,则 合并所述上下页衔接处的单元格,具体为:

预设每页PDF的左上角为坐标原点;

对当前页从Y轴最大值开始,往原点方向前进获取垂直的线段后,判断所 述垂直的线段上是否存在与其相交的水平线段;且同时

对下一页从Y轴零坐标开始,往最大值方向前进获取垂直的线段后,判断 所述垂直的线段上是否存在与其相交的水平线段;

若是,则将所述当前页中相邻所述垂直的线段对应的单元格与所述下一页 中相对应的单元格合并为同一个单元格。

由上述描述可知,能采用视觉算法判断PDF页与页之间单元格的相关性, 自动合并被拆分的单元格,进一步完善最终所获取的表格的表现形式。

进一步的,所述依据字符的坐标与矩形坐标的包含关系,获取各单元格对 应的字段块,具体为:

依据字符的坐标是否位于矩形坐标内,获取非空白的各个矩形坐标对应的 字符;

依据字符从PDF的坐标空间映射到用户视觉空间的矩阵系数,排除所述非 空白的各矩形坐标内的水印字符;

所述非空白的各矩形坐标对应的字符组成字段块,补充空白的各个矩形坐 标对应空白字段;

获取各单元格对应的字段块。

由上述描述可知,能够有效去除水印字符,保证解析所得表格的准确性。 同时,针对空白单元格对应配置空白字段,实现空白单元格与相应标题的对齐。 从而保证最终获取的表格的完整性和准确性。

进一步的,所述获取每页PDF的各线段的坐标和各字符的坐标,具体为:

将每页PDF的线段和字符渲染到CImage句柄,在渲染的同时捕获各线段 和各字符的坐标。

由上述描述可知,将线段和字符渲染到CImage句柄,实现将结构化的PDF 数据转变为便于分析处理的图像数据,方便后续直接依据图像数据进行检测分 析,获取线段和字符的特征数据,最终据此获取所需数据。

进一步的,所述依据线段交点划分出单元格,并获取各单元格对应的矩形 坐标,具体为:

若一线段的一端点坐标与另一线段的一端点坐标之间的距离在预设的第一 阈值范围内,则判定所述一线段与所述另一线段相交;

若相邻的四条线段依序头尾相交,且组成的区域超过预设的第二阈值范围, 则获取所述四条线段的坐标,标记为所述四条线段构成的单元格对应的矩形坐 标。

由上述描述可知,由于PDF用户空间的坐标是浮点类型,因此对应判断两 个点的距离是否在一定阈值范围内来确定对应线段是否相交。方便后续依据交 点数量准确划分单元格。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行 时实现以下步骤:

获取每页PDF的各线段的坐标和各字符的坐标;

依据线段交点划分出单元格,并获取各单元格对应的矩形坐标;

依据字符的坐标与矩形坐标的包含关系,获取各单元格对应的字段块。

进一步的,所述程序还能实现以下步骤:

将每页PDF转变为图像数据形式;

依据单元格的中位线,确定每一行对应的单元格;

若相衔接的上下页沿Y轴方向逐步叠加靠拢后,能够获取相对应的垂直的 线段,且能够分别在所述垂直的线段上获取到水平的线段,则合并所述上下页 衔接处的单元格。

进一步的,步骤获取每页PDF的各线段的坐标和各字符的坐标,具体为:

将每页PDF的线段和字符渲染到CImage句柄,在渲染的同时捕获各线段 和各字符的坐标;

步骤依据线段交点划分出单元格,并获取各单元格对应的矩形坐标,具体 为:

若一线段的一端点坐标与另一线段的一端点坐标之间的距离在预设的第一 阈值范围内,则判定所述一线段与所述另一线段相交;

若相邻的四条线段依序头尾相交,且组成的区域超过预设的第二阈值范围, 则获取所述四条线段的坐标,标记为所述四条线段构成的单元格对应的矩形坐 标;

步骤依据字符的坐标与矩形坐标的包含关系,获取各单元格对应的字段块, 具体为:

依据字符的坐标是否位于矩形坐标内,获取非空白的各个矩形坐标对应的 字符;

依据字符从PDF的坐标空间映射到用户视觉空间的矩阵系数,排除所述非 空白的各矩形坐标内的水印字符;

所述非空白的各矩形坐标对应的字符组成字段块,补充空白的各个矩形坐 标对应空白字段;

获取各单元格对应的字段块。

实施例一

本实施例主要提供一种解析PDF表格数据的方法,适用于对PDF格式数据 中的表格进行解析,获取对应的表格数据,方便后续编辑操作。如在前端清洗 数据,客户提供的话单、账单中有很大一部分是表格式PDF格式的,通过本实 施例能将表格式PDF提取成对应的CSV格式,自动的导入到数据库中进行分析。

如图1-4所示,为现有常见的几种PDF表格形式。具体的,图1对应单表 格;图2对应随机空白单元格;图3对应跨页单元格;图4对应多层水印等形 式。基于目前现有的PDF表格解析相对闭源,且对这类表格数据都是单纯的字 符处理,难以做到数据与标题的对应,更难以判断行与行之间的相关性。

针对上述问题,本发明将在本实施例中,通过多个具体的实施方式来对应 解决不同表格形式的解析。

请参阅图8,本实施例的解析PDF表格数据的方法包括:

S1:将每页PDF转变为图像数据形式;设每页PDF的左上角为坐标原点; 获取每页PDF的各线段的坐标和各字符的坐标;

该步骤具体包括:

S101:加载PDF文件,循环获取每一页的对象;所述对象为指向每一页PDF 的指针,用于依序获取每一页PDF数据;

S102:将每一页PDF的线段和字符渲染到CImage句柄,设图像数据的每 页PDF数据的左上角为坐标原点;在渲染的同时捕获各线段和各字符的坐标。

在此,渲染到CImage句柄目的是为了:1.将结构化类型的PDF数据拷贝后 将再转换为图像数据;2.独立处理,保存原始PDF数据,避免源文件丢失;3. 能得到纯线段的图像数据,为后面图像二值化、直线检测排除干扰;4.转换为图 像数据,方便后续处理,直接通过图像检测得到对应特征,获取所需数据。

渲染时线段和字符的坐标是可以同时获取的,这里只是为了得到纯线段的 图像。获取线段的坐标指的是获取的一对点的坐标。

S2:依据线段交点划分出单元格,并获取各单元格对应的矩形坐标;

由于PDF用户空间的坐标是浮点类型的,因此,图片数据格式的xy空间坐 标中,线段的交点指的是空间坐标内的一条线段的其中一个端点与另一条线段 的其中一个端点的距离在一定的阈值范围内;如图6所示,线段A(x1,y1), (x2,y2)与线段B(x3,y3),(x4,y4)具有一个交点。单元格是指空间坐标 四组线段存在四个交点,且组成的区域超过一定阈值时可认为是有效的单元格; 如图7所示,相邻的四条线段A、B、C和D组成一个单元格。

因此,步骤S2具体包括:

S201:若一条线段的其中一个端点的坐标与另一条线段的其中一个端点的 坐标之间的距离在预设的第一阈值范围内,则判定这两条线段相交;

S202:若相邻的四条线段依次头尾相交,且所组成的区域超过预设的第二 阈值范围,则判定这四条线段组成一个有效的单元格,同时获取这四条线段的 坐标,标记为这四条线段构成的单元格对应的矩形坐标。

S203:获取每一个单元格对应的矩形坐标。

S3:依据字符的坐标与矩形坐标的包含关系,获取各单元格对应的字段块。

字段块,指的是在PDF单个单元格内的所有有效字符的顺序集合(排除落在 单元格内的水印字符)。

步骤S3具体包括:

S301:依据字符的坐标和矩形坐标之间的包含关系,判断矩形坐标内是否 包含有字符,即字符的矩形坐标是否落在(单元格)的矩形坐标内;若有,则 执行S302;若否,则执行S303。这一过程是从图像格式的空间坐标位置关系直 观自然的确定的。

S302:顺序获取矩形坐标内的所有字符,组成对应该矩形坐标的字段块;

S303:若判定某个矩形坐标内没有字符,则将该矩形坐标对应的字段块设 为空,即补充空白字段块对应该矩形坐标,以确保这一空白的矩形坐标对应的 空白单元格能与相应的标题对齐。

在一具体实施方式中,在判断得到矩形坐标内包含字符后,即步骤S302之 前,还将执行下述步骤;以针对性解决存在水印的PDF表格解析。

所述步骤具体包括:依据字符从PDF的坐标空间映射到用户视觉空间(即 本实施例中图像数据形式的xy坐标空间)的矩阵系数,排除各矩形坐标内的水 印字符。具体的,矩阵特征系数是指字符从PDF的坐标空间映射到用户视觉空 间的一组矩阵,水印一般是带有角度的字符,所以转换的矩阵与正常字符会有 不同,从而根据此方式判断某个字符是否是水印。

接着,本实施例的S3还包括:

S304:获取每一个单元格对应的字段块。

在另一具体实施方式中,进一步的还将包括S305,以同时实现对多行单元 格的解析。

S305:依据单元格的中位线,确定每一行对应的单元格。具体的,通过根 据各个单元格对应的中位线之间的误差范围确定是否是同一行数据。若位于同 一行,则该行的各个单元格的中位线的y轴坐标应该在一定阈值范围内,若不 在该阈值范围内,则判定不在同一行,将其拆分成不同行。

在另一具体实施方式中,还将包括S4-S5,以进一步实现对跨页单元格的解 析。

S4:将图像数据形式的每页PDF数据转换到Mat对象opencv中。

S5:对当前页从Y轴最大值开始,往原点方向前进获取垂直的线段后,判 断所述垂直的线段上是否能检测到与其相交的水平线段;且同时

对下一页从Y轴零坐标开始,往最大值方向前进获取垂直的线段后,判断 所述垂直的线段上是否能检测到与其相交的水平线段;

若同时满足这两个条件,则将所述当前页中相邻所述垂直的线段对应的单 元格与所述下一页中相对应的单元格合并为同一个单元格。如图3所示,即将 由于上下页分页而拆分的不完整单元格合并为完整的单元格。

在本实施例中,还包括以下步骤:

S6:汇聚整理成CSV格式的表格数据。

本实施例提供的PDF表格解析方法,无需根据特定的PDF文件分析字段之 间如何划分,无需确定表格的标题头,能够实现全自动、准确地解析并组织字 段块数据,实用性强、适用性光。进一步的,本实施例采用字符间坐标的关系 精确划分,采用视觉算法判断PDF页与页之间单元格的相关性,该方法以全新 的思路精确提取PDF的表格数据,自动性极强,大大简化了此类数据的导入。 综上,本实施例能自动、准确、全面地解析类PDF表格数据,大大改进了数据 清洗的准确性和便捷性,效果十分显著。

实施例二

本实施例对应实施例一,提供对应的一种计算机可读存储介质,其上存储 有计算机程序,该程序被处理器执行时能实现实施例一所包含的所有步骤。

综上所述,本发明提供的一种解析PDF表格数据的方法、存储介质,能实 现PDF表格的准确、便捷、自动化解析。不仅能精准解析出单表格、多表格的 数据,还能准确解析出随机空白单元格、跨页单元格以及多层水印单元格;其 实用性强、适用范围广。进一步的,本发明基于字符坐标和线段坐标进行解析, 区别于现有的单纯基于字符的处理,不仅实现更准确、便捷的解析,而且还能 保证数据与标题的对应;同时还能据此分析行与行之间的相关性,为实现多种 类型的表格解析提供支持。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利 用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术 领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1