前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[784]python解析PDF表格

[784]python解析PDF表格

作者头像
周小董
发布2020-03-28 19:43:47
1.1K0
发布2020-03-28 19:43:47
举报
文章被收录于专栏:python前行者python前行者

通过看别人写的博客,发现python里面有关PDF解析的通常有以下四种:

  • pdfminer,擅长仅仅是文字的解析,本小白试过了,是把表格解析成普通的文本,还经常会伴随一些莫名奇妙的不认识的符号。这个方案pass掉
  • pdf2html,看例是把pdf解析成html,但是html的标签并没有规律,解析一个还行,但是本小白是许多的pdf文档下小标题的表格,这个方案直接pass掉
  • tabula,这个是我看过的前辈写的博客中使用最多的,本人用过了。对于简单的表格,也就是单元格中没有换行的,表头表尾形式不复杂的,这个方案的值得推荐。电脑需要有Java的环境。
  • pdfplumber,这个是看了知乎上的一个大佬的发现,并且自己安装成功之后,发现最小众,但是最符合我的需求的解决方案。前提是是需要安装ImageMagick的

方案1:tabula

import tabula

# Read pdf into DataFrame
df = tabula.read_pdf("./P26.pdf",pages=str(1))
print(df)

这个直接返回的是一个数据帧,所以就直接是结构化的数据啦!

输出结果是这样的:

[    序号               疑似失联私募机构
0    1     中投国美投资基金管理(北京)有限公司
1    2           北京嘉宸投资基金有限公司
2    3     中融国晟投资基金管理(北京)有限公司
3    4     奥尼斯特(北京)投资基金管理有限公司
4    5       北京国信联盟投资基金管理有限公司]

方案2:pdfplumber

import pdfplumber
import pandas as pd

pdf = pdfplumber.open("./P26.pdf")
p0 = pdf.pages[0]#注意此处的pages是一个列表,索引是从0开始的
table = p0.extract_table()
df = pd.DataFrame(table[1:], columns=table[0])
# df = pd.DataFrame(table[2:], columns=table[1])
print(df)

输出结果是这样的:

   序号 NaN NaN               疑似失联私募机构                 NaN   NaN
0       1                             中投国美投资基金管理(北京)有限公司      
1       2               北京嘉宸投资基金有限公司                None  None
2       3         中融国晟投资基金管理(北京)有限公司                None  None
3       4         奥尼斯特(北京)投资基金管理有限公司                None  None
4       5           北京国信联盟投资基金管理有限公司                None  None

虽然为了展示对比的方便,这里都是用了同样的一个表格,但是方案2的解决真的要比1好

别问我为啥知道2比1好,你试试用1去解析一些带有文字格式的表格,带有复杂的表头的表格,你就知道啦!我在这里并没有在瞎说,而且还得装的的java的,后者只装一个的ImageMagick的就行,而且ImageMagick的很有用的

pandas.core.frame.DataFrame 切片技巧

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
print(df.iloc[3])  # 输出第4行的值 索引以0开头
print(df.iloc[3:5, 0:2])  # 输出4-5行,1到2列
print(df.iloc[[1, 2, 4], [0, 2]])  # 输出不连续行列的树
print(df.iat[1, 1]) # 提取2行2列的数,提取单个数iat效率更高

print('分割线','*'*200)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方案1:tabula
  • 方案2:pdfplumber
  • pandas.core.frame.DataFrame 切片技巧
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档