python读取pdf表格_Python 解析 PDF 表格?

需要

该公司的PDF年报包含了各种表,这些表需要在一些特定字幕下解析,称为数据结构。

解决方案

通过查看别人写的博客,我们发现在Python中通常有四种PDF解析:

Pdfminer善于分析文字,这种小白尝试,是把桌子变成普通的文字,而且经常伴随着一些莫名其妙的奇怪的未知符号。这个解决方案已经过时了。

例如,PDF2HTML将PDF解析成HTML,但是HTML标签不是规则的,解析一个是可以的,但是这个白板是许多PDF文档下的字幕表,这个方案直接通过。

Tabula,这是我老一辈写得最广泛的博客。我已经用过了。对于单元格中没有新行的简单表,表的头和尾并不复杂,该方案值得推荐。计算机需要一个Java环境。

PDF管道工,这是一个解决方案,已经发现了一个知识渊博的老板,发现人数最少,但最符合我的需要,在安装成功后。前提是你需要安装IMAGEMGEK。

实现解决方案

我已经使用了两种解决方案来解决我的需求,即TabLA和PDFPUBUBER。

先做前期工作。

1。将PDF文件转换为JPG格式,搜索关键字,查看所需表的页码,如图中的风险管理评分表。

u=2063593543,1003710562&fm=173&app=25&f=JPEG?w=629&h=419&s=7FA8306311DE45C80ED5E1DF0000C0B1

代码如下:(有婴儿的百度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看起来好吗?)

u=3558733856,2590534842&fm=173&app=25&f=JPEG?w=576&h=294&s=A8C2D74B5BA5936C0CCDE50F0000E0C3

当我们得到页码,我们可以做任何我们想做的事。

第一种是第一种方法:Tabula。

具体操作方法如下:

进口制表

将PDF读入数据文件

DF= TabulaRead PdF('/Cuff/Gooa/桌面/ 33 PDF′,Page=STR(页面))

df

这直接返回一个数据帧,因此它是直接结构化数据。

输出如下:

u=634875828,1180173415&fm=173&app=25&f=JPEG?w=576&h=252&s=28C283433FE8BB640ACDE5060000E0C3

这样,我们已经完成了我们的需要。下面的段落中关于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

输出如下:

u=2209404301,2985385652&fm=173&app=25&f=JPEG?w=576&h=338&s=68D283471FED936C0ECDC10F0000E0C2

虽然为了便于比较,这里使用相同的表,但是解决方案2确实比解决方案1更好。

不要问我为什么我知道2比1好,你尝试用文本格式解析一些表,用复数头来分析表,你知道的!我在这里不是胡说八道,我必须安装Java,后者只安装一个IMAGE,IMAGEMGEKE非常有用,嘻嘻嘻嘻。

总结

百度OCR接口的总和使用,百度AIP这个东西!这是一个人的宝库!你可以自己看。

还有一个PDF格式的分析软件包。

但仍存在一些弊端。两个解决方案都是针对具有完整水平和垂直线的智能表,如下面的一个。

u=141423088,225582252&fm=173&app=25&f=JPEG?w=582&h=388&s=0ACA7A2350AC60AC1A55A0DA0000C0B1

方案1的识别输出是心脏过剩,肾脏不足,输出无效。

方案2的输出是一个半九十一步的过程,输出是一个不太像样的表,需要手动调整。

怎么快速学python,有什么方法,打算深入了解这个行业的朋友,可以加python学习群:399288541,邀请码:(云曦)不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。 每天晚上20:00我都会开直播给大家分享python知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的python党,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值