Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比_tabula-py(1)

代码运行结果:

想把这个结果还原成表格可不容易,加的规则太多必然导致通用性的下降。

二、tabula-py

tabula 是专门用来提取PDF表格数据的,同时支持PDF导出为CSV、Excel格式,但是这工具是用 java 写的,依赖 java7/8。tabula-py 就是对它做了一层 python 的封装,所以也依赖 java7/8。

代码很简单:

虽然号称是专业处理 pdf 中的表格的,但实际效果也不咋地。还是 pdfminer 中使用的 pdf,运行结果如下:

这结果真的很尴尬啊,表头识别就错了,还有 pdf 中有两张表,我没发现怎么区分表。

三、pdfplumber

pdfplumber 是按页来处理 pdf 的,可以获得页面的所有文字,并且提供的单独的方法用于提取表格。

得到的 table 是个 string 类型的二维数组,这里为了跟 tabula 比较,按行输出显示。

可以看到,跟 tabula 相比,首先是可以区分表格,其次,准确率也提高了很多,表头的识别完全正确。对于表格中有换行的,识别还不是很正确,但至少列的划分没问题,所以还是能处理的。

经过处理后,运行得到结果:

这结果已经完全正确了,而用 tabula,即便是经过处理也是无法得到这样的结果的。当然对于不同的 pdf,可能需要不同的处理,实际情况还是要自己分析。

pdfplumber 也有处理不准确的时候,主要表现在缺列:

我找了另一个 pdf,表格部分截图如下:

解析结果如下:

4列变成了两列,另外,如果表格有合并单元格的情况,也会有这种问题,我挑这个表格展示是因为比较特殊,没有合并单元格也缺列了。这应该跟 pdf 生成的时候有关。

但其实数据是获取完整的,并没有丢,只是被认为是非表格了。输出 page.extract_text() 如下:

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
需要这份系统化学习资料的朋友,可以戳这里无偿获取**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我来介绍一下使用Python中的第三方库pandas和tabula-py来将PDF转换为Excel的具体步骤。请先确保已经安装了pandas和tabula-py库。 1. 安装Java环境 tabula-py库需要Java环境的支持,所以需要先安装Java环境。可以从官网下载Java SE Development Kit (JDK)进行安装。 2. 安装tabula-py库 可以使用pip命令进行安装tabula-py库: ``` pip install tabula-py ``` 3. 打开PDF文件并将内容转换为DataFrame 使用tabula-py库的read_pdf函数可以打开PDF文件并将内容转换为DataFrame。以下是示例代码: ```python import tabula # 打开PDF文件并将内容转换为DataFrame df = tabula.read_pdf("example.pdf", pages="all") ``` 其中,read_pdf函数的第一个参数是PDF文件的路径,pages参数可以指定需要转换的页数,"all"表示全部页数。转换成功后,df变量将是一个包含PDF文件内容的DataFrame。 4. 将DataFrame写入Excel文件 使用pandas库的to_excel函数可以将DataFrame写入Excel文件。以下是示例代码: ```python import pandas as pd # 将DataFrame写入Excel文件 df.to_excel("example.xlsx", index=False) ``` 其中,to_excel函数的第一个参数是Excel文件的路径,index参数可以指定是否写入行索引。通过以上代码,就可以将PDF文件内容转换为Excel文件并保存在本地。 需要注意的是,tabula-py库的转换效果受到PDF文件质量和结构的影响,如果PDF文件结构比较复杂或者排版不规则,转换结果可能不太理想。因此,在使用该库进行PDF转换时,建议先进行一定的测试和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值