需要
该公司的PDF年报包含了各种表,这些表需要在一些特定字幕下解析,称为数据结构。
解决方案
通过查看别人写的博客,我们发现在Python中通常有四种PDF解析:
Pdfminer善于分析文字,这种小白尝试,是把桌子变成普通的文字,而且经常伴随着一些莫名其妙的奇怪的未知符号。这个解决方案已经过时了。
例如,PDF2HTML将PDF解析成HTML,但是HTML标签不是规则的,解析一个是可以的,但是这个白板是许多PDF文档下的字幕表,这个方案直接通过。
Tabula,这是我老一辈写得最广泛的博客。我已经用过了。对于单元格中没有新行的简单表,表的头和尾并不复杂,该方案值得推荐。计算机需要一个Java环境。
PDF管道工,这是一个解决方案,已经发现了一个知识渊博的老板,发现人数最少,但最符合我的需要,在安装成功后。前提是你需要安装IMAGEMGEK。
实现解决方案
我已经使用了两种解决方案来解决我的需求,即TabLA和PDFPUBUBER。
先做前期工作。
1。将PDF文件转换为JPG格式,搜索关键字,查看所需表的页码,如图中的风险管理评分表。
代码如下:(有婴儿的百度AIP密钥!
将PDF分解成JPG。
从PDF2IMAGE导入RealtToFixPATH,转换为字节
导入风暴文件
导入PDF2图像
DEF PDF2图像(IyPATH,OYPATH):
TimeFrime.TimeAudio目录()作为路径:
IsIsFixFixPosie= EngtFixFixPATH(IyPATH,OutpUpHealths= OYPATH,FMT=JPG)
IyPATH='/用户/高华/桌面/ 33
OYPATH=‘用户/高华/桌面/ 33’
PDF2图像(IyPATH,OYPATH)
重命名文档重命名
导入操作系统
路径=’/用户/高华/桌面/ 33’
DEF ReNeMIX文件(路径):
OSListdir(PATH)中的文件:
Os.rename(OS.PATION联接(路径,文件),OS.PATION联接(路径,文件[-5:]))
ReNaMIX文件(路径)
使用百度OCR识别
来自AIP进口公司
DEBUIDUAIP(AppyID,ApIIKIKE,CONTYTYKEY KEY):
客户端= AIPOCR(AppHyID,ApIIKEY,CONTYTYKEY)
返回(客户端)
AppyID=’116599 28’
APIKYKEY=OGKG6BurcGnktfoAjjg7RT
分泌蛋白键=
客户端= BIDU-AIP(AppHyID,ApIIKEY,CONTYTYKEY)
DEFGETFILE内容(路径):
打开(路径,“RB”)作为FP:
返回FP-读()
DF FunthPad(路径,KEY-ION字):
OS.Listdir(PATH)中的文件〔1:- 1〕:
结果= clie.Basic通用(GETXFILE内容(OS.PATION连接(路径,文件)))
对于结果项[ [词]结果] ]:
打印输出(项目[单词] ]
如果项目中的键入单词[单词' ]:
返回(文件条('.jpg))
上面安装的模块不应该是个问题。如果有任何问题,你可以留言。
调用函数的输出如下
关键词=“风险管理状态”
Page=FunthPage(路径,KEY字)
打印(页)
会输出相应的页码(无耻地看着婴儿的Juyter看起来好吗?)
当我们得到页码,我们可以做任何我们想做的事。
第一种是第一种方法:Tabula。
具体操作方法如下:
进口制表
将PDF读入数据文件
DF= TabulaRead PdF('/Cuff/Gooa/桌面/ 33 PDF′,Page=STR(页面))
df
这直接返回一个数据帧,因此它是直接结构化数据。
输出如下:
这样,我们已经完成了我们的需要。下面的段落中关于Excel的下面的话被更多地谈论了。可以移动熊猫或PyWi32。
虽然TabRA非常方便,但是它的输出确实是不方便的,而且还需要安装Java环境,Java环境变量做宝宝肾不足。
有时我会输出一些杂乱的东西,例如,有时我会输出传统的中文,我也遇到了。
所以保险。
这里还有第二个解决方案:
同样,这两个解决方案是PDFPUBUBER。
进口PDFP
PDF=PDFUntual.OPEN(‘用户/高华/桌面/ 33 PDF’)
P0= PDF.Page(int(页)- 1”α]注意,这里的页面是从0开始的列表。
表=P0.Excel表()
进口熊猫为PD
DF= PD.DATAFRAM(表[1:],列=表[0)]
df
输出如下:
虽然为了便于比较,这里使用相同的表,但是解决方案2确实比解决方案1更好。
不要问我为什么我知道2比1好,你尝试用文本格式解析一些表,用复数头来分析表,你知道的!我在这里不是胡说八道,我必须安装Java,后者只安装一个IMAGE,IMAGEMGEKE非常有用,嘻嘻嘻嘻。
总结
百度OCR接口的总和使用,百度AIP这个东西!这是一个人的宝库!你可以自己看。
还有一个PDF格式的分析软件包。
但仍存在一些弊端。两个解决方案都是针对具有完整水平和垂直线的智能表,如下面的一个。
方案1的识别输出是心脏过剩,肾脏不足,输出无效。
方案2的输出是一个半九十一步的过程,输出是一个不太像样的表,需要手动调整。
怎么快速学python,有什么方法,打算深入了解这个行业的朋友,可以加python学习群:399288541,邀请码:(云曦)不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。 每天晚上20:00我都会开直播给大家分享python知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的python党,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。