一种PDF文件数据提取方法、装置及存储介质制造方法及图纸

技术编号:22387288 阅读:18 留言:0更新日期:2019-10-29 06:29
本方案涉及人工智能,提供一种PDF文件数据提取方法、装置及存储介质,方法包括:对PDF文件进行解析,生成LT子对象;获取各LT子对象的纵坐标和横坐标,将每页的LT子对象对应存入一个第一列表,按照纵坐标从小到大的顺序依次抽取LT子对象,根据纵坐标由小至大的顺序纵向排列在第一列表中;在分行读取的过程中,通过竖向距离判断LT子对象是否在同一行,将LT子对象划分到各行中;对每一行的LT子对象按x0的顺序从小到大排序,若左侧的LT子对象的x1等于右侧的LT子对象的x0,将这两个LT子对象组合形成组合字符串。本发明专利技术将PDF文件的数据转换成excel格式,降低运用数据分析软件从统计月报提取信息的难度。

A data extraction method, device and storage medium of PDF file

【技术实现步骤摘要】
一种PDF文件数据提取方法、装置及存储介质
本专利技术涉及人工智能领域,具体说,涉及一种PDF文件数据提取方法、装置及存储介质。
技术介绍
现有统计局的统计月报都是用PDF格式对数据进行存储,从PDF中提取数据十分不便,往往需要人工查看来提取所需的数据,十分耗时耗力。目前还可以将PDF文件转换成word格式,再从word文件中提取数据。但是,现存的PDF转word技术对PDF进行转换时,常常出现乱码,中文顺序错位等问题。而对于统计月报来说,其中还包含有大量的表格,在PDF文件转换的过程中更加会出现表格位置窜动,表格中内容缺失等情况。截止目前,暂未有较好的解决方案。
技术实现思路
为解决以上技术问题,本专利技术提供一种PDF文件数据提取方法,应用于电子装置,包括:S10,使用pdfminer工具对PDF文件进行解析,对PDF的每个页面都生成一个pdfminer.layout对象,其中,所述pdfminer.layout对象中包含LT子对象;S20,获取各LT子对象的纵坐标和横坐标,并将每页的LT子对象存入对应的第一列表,其中,所述横坐标包括LT子对象的左侧边界坐标x0和LT子对象的右侧边界坐标x1,按照纵坐标从小到大的顺序依次抽取每个页面中pdfminer.layout对象的LT子对象,并根据纵坐标由小至大的顺序纵向排列在各页面对应的第一列表中;S30,对所述第一列表进行分行读取操作,并且,对于每一种LT子对象,在分行读取的过程中,通过各LT子对象之间的竖向距离判断每个LT子对象所属的行,从而将LT子对象划分到各行中;S40,对于每一种LT子对象,在每一行中,对LT子对象按左侧边界坐标x0的顺序从小到大排序,并且,通过判断左侧的LT子对象的右侧边界坐标x1是否等于相邻的右侧的LT子对象的左侧边界坐标x0,将多个LT子对象组合形成组合字符串。本专利技术还提供一种电子装置,该电子装置包括:存储器和处理器,所述存储器中存储PDF文件数据提取程序,所述PDF文件数据提取程序被所述处理器执行时实现如下步骤:S10,使用pdfminer工具对PDF文件进行解析,对PDF的每个页面都生成一个pdfminer.layout对象,其中,所述pdfminer.layout对象中包含LT子对象;S20,获取各LT子对象的纵坐标和横坐标,并将每页的LT子对象存入对应的第一列表,其中,所述横坐标包括LT子对象的左侧边界坐标x0和LT子对象的右侧边界坐标x1,按照纵坐标从小到大的顺序依次抽取每个页面中pdfminer.layout对象的LT子对象,并根据纵坐标由小至大的顺序纵向排列在各页面对应的第一列表中;S30,对所述第一列表进行分行读取操作,并且,对于每一种LT子对象,在分行读取的过程中,通过各LT子对象之间的竖向距离判断每个LT子对象所属的行,从而将LT子对象划分到各行中;S40,对于每一种LT子对象,在每一行中,对LT子对象按左侧边界坐标x0的顺序从小到大排序,并且,通过判断左侧的LT子对象的右侧边界坐标x1是否等于相邻的右侧的LT子对象的左侧边界坐标x0,将多个LT子对象组合形成组合字符串。本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,实现如上所述的PDF文件数据提取方法。本专利技术将PDF文件的数据转换成excel格式,将大大降低运用例如spider和pycharm数据分析软件从统计月报提取信息的难度。附图说明通过结合下面附图对其实施例进行描述,本专利技术的上述特征和技术优点将会变得更加清楚和容易理解。图1是表示本专利技术实施例的PDF文件数据提取方法的流程图;图2是表示本专利技术实施例的pdfminer.layout对象的框架示意图;图3是表示本专利技术第一实施例的PDF文件中的LTChar的示意图;图4是表示本专利技术第一实施例的分行读取获得的数据提取结果示意图;图5是表示本专利技术第一实施例的对LTChar进行排序后的数据提取结果示意图;图6是表示本专利技术第二实施例的PDF文件中的LTChar的示意图;图7是表示本专利技术第二实施例的比对组合字符串坐标后的数据提取结果示意图;图8是表示本专利技术第三实施例的添加LTline后的数据提取结果示意图;图9是表示本专利技术第四实施例的调整LTline后的数据提取结果示意图;图10是表示本专利技术第五实施例的PDF文件中的LTLtine的示意图;图11是表示本专利技术实施例的电子装置的硬件架构示意图;图12是表示本专利技术实施例的PDF文件数据提取程序的程序模块示意图。具体实施方式下面将参考附图来描述本专利技术所述的PDF文件数据提取方法、装置及存储介质的实施例。本领域的普通技术人员可以认识到,在不偏离本专利技术的精神和范围的情况下,可以用各种不同的方式或其组合对所描述的实施例进行修正。因此,附图和描述在本质上是说明性的,而不是用于限制权利要求的保护范围。此外,在本说明书中,附图未按比例画出,并且相同的附图标记表示相同的部分。本实施例的PDF文件数据提取方法是应用于对PDF文件中文字及其表格的提取。文字可以是形成在表格内的,也可以是没有表格的分段落的文字。下面以PDF格式的统计月报为例来说明。第一实施例图1示出本实施例中PDF文件数据提取方法的流程图,该方法包括以下步骤:步骤S10,使用pdfminer工具(从PDF文档中提取信息的工具),对PDF文件进行解析,对PDF的每个页面都生成一个pdfminer.layout对象,如图2所示,其中,pdfminer.layout对象中可以包含多个LT子对象,所述LT子对象可以是LTTextBoxHorizontal(水平文本框)子对象、LTChar(字符)子对象中的至少一个。LTChar是具有边界的字符。下文中主要是以LTChar为例来说明,所以提到的字符为LT子对象。当然,更进一步,还可以包括LTFigure(区域框)子对象、LTLine(分隔线)子对象。其中,LTFigure代表由区域框占用的一块区域,区域框用于引入图片或另一个PDF文档。步骤S20,获取各LT子对象的纵坐标和横坐标,例如,如果LT子对象是LTChar,则是获取每个字符的纵坐标和横坐标。如果LT子对象是LTLine,则获取每个分隔线的横坐标和纵坐标。如果LT子对象是水平文本框,则获取每个水平文本框的纵坐标和横坐标。并将每页的LT子对象存入对应的第一列表,比如,第一页对应一个第一列表,第二页对应一个第一列表。将每页的pdfminer.layout对象的LT子对象对应存入一个第一列表对应的命令为{'pageN':[LTobjsoflayout]},其中,N表示第N个layout,[LTobjsoflayout]为数组。其中,优选地,所述纵坐标包括LT子对象的左下角纵坐标y0和LT子对象的右上角纵坐标y1,所述横坐标包括LT子对象的左侧边界坐标x0和LT子对象的右侧边界坐标x1,按照纵坐标从小到大的顺序依次抽取pdfminer.layout对象的LT子对象,并根据左下角的纵坐标由小至大的顺序按序纵向排列在第一列表中。步骤S30,通过[listofline(list)]命令分行读取第一列表中的内容,并且,在分行读取的过程中,还通过竖向距离判断L本文档来自技高网...

【技术保护点】
1.一种PDF文件数据提取方法,应用于电子装置,其特征在于,包括以下步骤:S10,使用pdfminer工具对PDF文件进行解析,对PDF的每个页面都生成一个pdfminer.layout对象,其中,所述pdfminer.layout对象中包含LT子对象;S20,获取各LT子对象的纵坐标和横坐标,并将每页的LT子对象存入对应的第一列表,其中,所述横坐标包括LT子对象的左侧边界坐标x0和LT子对象的右侧边界坐标x1,按照纵坐标从小到大的顺序依次抽取每个页面中pdfminer.layout对象的LT子对象,并根据纵坐标由小至大的顺序纵向排列在各页面对应的第一列表中;S30,对所述第一列表进行分行读取操作,并且,对于每一种LT子对象,在分行读取的过程中,通过各LT子对象之间的竖向距离判断每个LT子对象所属的行,从而将LT子对象划分到各行中;S40,对于每一种LT子对象,在每一行中,对LT子对象按左侧边界坐标x0的顺序从小到大排序,并且,通过判断左侧的LT子对象的右侧边界坐标x1是否等于相邻的右侧的LT子对象的左侧边界坐标x0,将多个LT子对象组合形成组合字符串。

【技术特征摘要】
1.一种PDF文件数据提取方法,应用于电子装置,其特征在于,包括以下步骤:S10,使用pdfminer工具对PDF文件进行解析,对PDF的每个页面都生成一个pdfminer.layout对象,其中,所述pdfminer.layout对象中包含LT子对象;S20,获取各LT子对象的纵坐标和横坐标,并将每页的LT子对象存入对应的第一列表,其中,所述横坐标包括LT子对象的左侧边界坐标x0和LT子对象的右侧边界坐标x1,按照纵坐标从小到大的顺序依次抽取每个页面中pdfminer.layout对象的LT子对象,并根据纵坐标由小至大的顺序纵向排列在各页面对应的第一列表中;S30,对所述第一列表进行分行读取操作,并且,对于每一种LT子对象,在分行读取的过程中,通过各LT子对象之间的竖向距离判断每个LT子对象所属的行,从而将LT子对象划分到各行中;S40,对于每一种LT子对象,在每一行中,对LT子对象按左侧边界坐标x0的顺序从小到大排序,并且,通过判断左侧的LT子对象的右侧边界坐标x1是否等于相邻的右侧的LT子对象的左侧边界坐标x0,将多个LT子对象组合形成组合字符串。2.根据权利要求1所述的PDF文件数据提取方法,其特征在于,所述方法还包括:S50,以组合字符串的最左侧的字符串的左侧边界坐标作为组合字符串的左侧边界坐标;在每一行中,比较各组合字符串的左侧边界坐标,将组合字符串再按照组合字符串的左侧边界坐标从小到大的顺序从左至右排序。3.根据权利要求1所述的PDF文件数据提取方法,其特征在于,通过竖向距离判断LT子对象是否在同一行的公式如下:|LTtext[i]y0-LTtext[i+1]y0|<|LTtext[i]y1-LTtext[i]y0|其中,|LTtext[i]y1-LTtext[i]y0|为LT子对象的高度;|LTtext[i]y0-LTtext[i+1]y0|为第i个LT子对象与第i+1个LT子对象的y0的差值;i表示第i个LT子对象。4.根据权利要求1所述的PDF文件数据提取方法,其特征在于,步骤S20中将每页的LT子对象存入对应的第一列表的步骤包括:通过命令{'pageN':[LTobjsoflayout]}将每页的pdfminer.layout对象的LT子对象对应存入一个第一列表,其中,N表示第N个layout,[LTobjsoflayout]为数组。5.根据权利要求1所述的PDF文件数据提取方法,其特征在于,所述LT子对象包括LTTextBoxHorizontal子对象、LTChar子对象、LTFigure子对象中的...

【专利技术属性】
技术研发人员:杨志鸿常河徐亮阮晓雯
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1