来自公众号:Python大数据分析

pdf是一种便携式文档格式,由Adobe公司设计。因为不受平台限制,且方便保存和传输,所以pdf非常受欢迎。

目前市场上有很多pdf工具,大部分是阅读类,也有支持对pdf的修改、转换等功能,但这部分工具不少是收费的。

这次介绍一个开源python工具库-pdfplumber,可以方便地获取pdf的各种信息,包括文本、表格、图表、尺寸等。

pdfplumber在github上有英文官方文档,后面我们会捡重点讲解,先看下如何用pdfplumber提取pdf表格?

以NBA 2020-2021 常规赛数据作为范例,pdf表格如下:

第一步:使用pdfplumber提取表格文本

# 导入pdfplumber
import pdfplumber# 读取pdf文件,保存为pdf实例
pdf =  pdfplumber.open("E:\\nba.pdf") # 访问第二页
first_page = pdf.pages[1]# 自动读取表格信息,返回列表
table = first_page.extract_table()table

输出:

第二步:整理成dataframe格式,保存为excel

import pandas as pd# 将列表转为df
table_df = pd.DataFrame(table_2[1:],columns=table_2[0])# 保存excel
table_df.to_excel('test.xlsx')table_df

输出:

一个小小的脚本,不到十行代码,便将pdf表格提取并转化为dataframe格式,最终保存到excel。

有个初步认知后,接下来详细讲讲pdfplumber的安装、导入、api接口等信息。

pdfplumber简介

前面已经介绍过pdfplumber的用途,也用一个小案例展示了如何提取表格,我觉得对于pdfplumber只需要了解三点就可以。

1、它是一个纯python第三方库,适合python 3.x版本

2、它用来查看pdf各类信息,能有效提取文本、表格

3、它不支持修改或生成pdf,也不支持对pdf扫描件的处理

Github地址https://github.com/jsvine/pdfplumber

pdfplumber安装和导入

同其他python库一样,pdfplumber支持使用pip安装,在命令行输入:

pip install pdfplumber

如果遇到安装慢的问题,可以替换镜像源,会快很多。

pdfplumber安装后,用import导入即可使用:

import pdfplumber
....

pdfplumber简单使用

pdfplumber中有两个基础类,PDF和Page。看字面意思能猜出,前者是处理整个文档,后者是处理页面。

「pdfplumber.PDF类」

属性 描述
.metadata 获取pdf基础信息,返回字典
.pages 一个包含pdfplumber.Page实例的列表,每一个实例代表pdf每一页的信息。

「pdfplumber.Page类」

这是pdfplumber的核心功能,对pdf的大部分操作都是基于这个类,包括提取文本、表格、尺寸等。

这里暂不一一列举它的属性和方法。

通过一个简单的案例,就可以明白它们的作用。示例pdf文档,共两页:

  1. 读取pdf

# 导入pdfplumber
import pdfplumber# 读取pdf文件,返回pdfplumber.PDF类的实例
pdf = pdfplumber.open("e:\\nba2.pdf")
  1. 获取该pdf文档的信息

# 通过pdfplumber.PDF类的metadata属性获取pdf信息
pdf.metadata

输出:

这些是pdf的基础信息,包括作者、来源、日期等。

  1. 总页数

# 通过pdfplumber.PDF类的metadata属性获取pdf页数
len(pdf.pages)
  1. 读取第一页的页宽、页高等信息

# 第一页pdfplumber.Page实例
first_page = pdf.pages[0]# 查看页码
print('页码:',first_page.page_number)# 查看页宽
print('页宽:'first_page.width)# 查看页高
print('页高:'first_page.height)

输出:

  1. 读取第一页的文本

# 读取文本
text = first_page.extract_text()
print(text)

输出:

  1. 读取第二页的表格

import pandas as pd# 第二页pdfplumber.Page实例
first_page = pdf.pages[1]# 自动读取表格信息,返回列表
table = first_page.extract_tables()# 将列表转为df
table_df = pd.DataFrame(table_2[1:],columns=table_2[0])table_df

pdfplumber提取表格有很多的细节需要处理,这里给到的范例表格线框比较规范,所以能很简单的提取,但对于线框不完全(包含无线框)的表格,其效果就差了不少。

在实际项目所需处理的pdf文档中,线框完全及不完全的表格都比较多,为了能够理解pdfplumber实现表格抽取的原理和方法,我们需要去细究相关参数的设置。

正如案例所示,pdfplumber.Page对象的.extract_table()方法可以提取表格,返回从页面上最大的表中提取的文本,以列表列表的形式显示,结构为row -> cell。

「表格抽取参数设置」

默认情况下,extract_table使用页面的垂直和水平线(或矩形边缘)作为单元格分隔符。该方法可以通过table_settings参数进行高度自定义。可能的设置及其默认值:

{"vertical_strategy": "lines", "horizontal_strategy": "lines","explicit_vertical_lines": [],"explicit_horizontal_lines": [],"snap_tolerance": 3,"join_tolerance": 3,"edge_min_length": 3,"min_words_vertical": 3,"min_words_horizontal": 1,"keep_blank_chars": False,"text_tolerance": 3,"text_x_tolerance": None,"text_y_tolerance": None,"interp_tolerance": 3,"interp_x_tolerance": None,"interp_y_tolerance": None,
}

pdfplumber支持对图表进行可视化调试,能输出图像,显示如何提取表。

pdfplumber的独特之处

python中有很多库可以处理pdf,比如PyPDF2、pdfminer等,那pdfplumber的优势在哪呢?

首先,pdfplumber能轻松访问有关PDF对象的所有详细信息,且用于提取文本和表格的方法高级可定制,使用者可根据表格的具体形式来调整参数。

最关键的是pdfplumber作者持续在维护该库,而同样受欢迎的PyPDF2已经不再维护了。

为了答谢广大粉丝,我们每个月都有送书活动,最近有两次送书:

学 Python,销量1000000本的蟒蛇书来啦!

你要的职场“摸鱼”神器来了!送书5本!

推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领AI全套资料!

如何使用Python提取pdf表格及文本,并保存到excel相关推荐

  1. Python提取PDF表格及文本!(附源码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习资料 ...

  2. python提取pdf表格数据并保存到excel中

    pdfplumber操作pdf文件 python开源库pdfplumber,可以较为方便地获取pdf的各种信息,包含pdf的基本信息(作者.创建时间.修改时间-)及表格.文本.图片等信息,基本可以满足 ...

  3. 用python提取PDF表格内容保存到excel

    一 提取pdf方法介绍 任务是用python提取PDF里的表格文件到excel里面去.做为一个 学了一个周python的人来说当然像尝试一下看能不能做到,事实证明是可以的只是可能代码有点烂...... ...

  4. python 提取pdf表格_用Python提取pdf文件中的表格数据

    本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...

  5. python提取pdf表格数据_Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  6. Python按关键字提取txt文本并保存到Excel

    简单介绍 将会议上语音转成的文字文本按主要关键字提取,例如"上周的KPI"."没达标的原因"."遇到的问题"."解决方法" ...

  7. 每天一个小实例——使用pdfplumber提取pdf表格及文本,并保存到excel

    pdfplumber简介 (1)可以方便地获取pdf的各种信息,包括文本.表格.图表.尺寸等,它不支持修改或生成pdf,也不支持对pdf扫描件的处理 (2)pdfplumber中有两个基础类,PDF和 ...

  8. python中提取pdf文件某些页_人工智能|Python提取PDF中的文本并朗读

    题前的话 之前有老师在群里推荐这个,我看了一眼觉得还是蛮有趣的,然后就忘了--昨天又看到这个<宅男福利!我50行Python代码让小姐姐给你读Pdf>,今天于是开始自己尝试,谁知道pdfp ...

  9. python提取pdf表格信息

    借助camelot这个包 import camelot import pandas as pddef table_mining(pdf_path):tables = camelot.read_pdf( ...

  10. python提取pdf表格数据导出到mongodb_python读取mongoDB数据并存入本地excel表格

    from openpyxl import Workbook import pymongo # 读取mongoDB数据库相应的表,每条数据取出数个字段存入一个dict,再将所有的dict存入一个list ...

最新文章

  1. win10 jenkins svn android studio 自动化打包教程 以及一些问题的解决办法
  2. java cache缓存_为什么 Java 中“1000==1000”为false,而”100==100“为true?
  3. echarts字变大_在echarts中如何调整lable的字体大小?
  4. BugkuCTF-MISC题只有黑棋的棋盘(writeup)
  5. 暴跌1300亿,机械茅也扛不住了
  6. 脱单盲盒小程序源码_微信脱单盲盒源码_交友盲盒系统源码
  7. 一元二次方程求根计算机的代码,一元二次方程求根Java源程序代码
  8. 零基础搭建完全免费个人静态博客
  9. Android开发前景及现状分析
  10. csgo单板透视距离绘制代码
  11. 工艺角,PVT, TT,SS,FF,FS,SF
  12. kindle for PC更新后无法打开解决方案
  13. arcgis for js 画圆圈(会跟地图一起缩小),而不是打点然后加半径的圆点(不会缩小),制作打卡功能选点。可以点击地图自动画圆圈
  14. 认识并理顺元宇宙与产业互联网之间的关系,可以打开产业互联网的发展新症结
  15. linux pci/pcie驱动
  16. 为App签名(为apk签名)
  17. k860i 4.2root成功,用root大师20130705
  18. 创业者该如何设计公司的股权架构
  19. Kaptcha工具和手动实现验证码功能
  20. python学习 python实现证件照剪裁、缩放、修改底色

热门文章

  1. 不知道前端课程学什么?这份完整的web前端课程大纲分享给你
  2. 硬盘安装FREEBSD5.4详细步骤
  3. 关于STC12C5A60S2单片机实现IAP远程升级研究
  4. 转载:C语言运算符优先级记忆口诀
  5. 【洛谷试炼场】普及练习场——排序
  6. 【竞赛篇-国创(大创)申报书撰写(三大类别七千字总结建议)】国家级大学生创新创业训练计划申报书撰写经验分享
  7. 读书笔记:《人工智能》
  8. arcgis制作遥感影像标签(分割分类目标提取方向)
  9. Java语言的发展简史
  10. Java学习-Java系统介绍