Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何使用python提取pdf表格及文本,并保存到excel

如何使用python提取pdf表格及文本,并保存到excel

作者头像
派大星的数据屋
发布于 2022-04-03 05:23:48
发布于 2022-04-03 05:23:48
3.2K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入pdfplumber
import pdfplumber

# 读取pdf文件,保存为pdf实例
pdf =  pdfplumber.open("E:\\nba.pdf") 

# 访问第二页
first_page = pdf.pages[1]

# 自动读取表格信息,返回列表
table = first_page.extract_table()

table

输出:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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安装,在命令行输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install pdfplumber

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pdfplumber
....

pdfplumber简单使用

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

「pdfplumber.PDF类」

属性

描述

.metadata

获取pdf基础信息,返回字典

.pages

一个包含pdfplumber.Page实例的列表,每一个实例代表pdf每一页的信息。

「pdfplumber.Page类」

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

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

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

  1. 读取pdf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入pdfplumber
import pdfplumber

# 读取pdf文件,返回pdfplumber.PDF类的实例
pdf = pdfplumber.open("e:\\nba2.pdf")
  1. 获取该pdf文档的信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 通过pdfplumber.PDF类的metadata属性获取pdf信息
pdf.metadata

输出:

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

  1. 总页数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 通过pdfplumber.PDF类的metadata属性获取pdf页数
len(pdf.pages)
  1. 读取第一页的页宽、页高等信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 第一页pdfplumber.Page实例
first_page = pdf.pages[0]

# 查看页码
print('页码:',first_page.page_number)

# 查看页宽
print('页宽:'first_page.width)

# 查看页高
print('页高:'first_page.height)

输出:

  1. 读取第一页的文本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 读取文本
text = first_page.extract_text()
print(text)

输出:

  1. 读取第二页的表格
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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参数进行高度自定义。可能的设置及其默认值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "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,
    "intersection_tolerance": 3,
    "intersection_x_tolerance": None,
    "intersection_y_tolerance": None,
}

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

pdfplumber的独特之处

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python大数据分析 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​Python 操作pdf(pdfplumber读取PDF写入Exce)
PDF是Portable Document Format的缩写,这类文件通常使用.pdf作为其扩展名。在日常开发工作中,最容易遇到的就是从PDF中读取文本内容以及用已有的内容生成PDF文档这两个任务。
度假的小鱼
2023/11/17
6020
​Python 操作pdf(pdfplumber读取PDF写入Exce)
手把手教学:提取PDF各种表格文本数据(附代码)
PDFPlumb最适合提取电脑生成的PDF,而不是扫描的PDF。 它是在pdfminer和pdfmine.six基础上设计的。
量化投资与机器学习微信公众号
2019/09/24
3.5K1
手把手教学:提取PDF各种表格文本数据(附代码)
Python PyPDF2、pdfplumber 提取 PDF 文本、图片内容
PyPDF2 需要去 GitHub 下载 https://github.com/mstamy2/PyPDF2
全栈程序员站长
2022/09/10
3.1K0
如何使用Python提取PDF表格及文本,并保存到Excel
PDF是一种便携式文档格式,由Adobe公司设计。因为不受平台限制,且方便保存和传输,所以PDF非常受欢迎。
IT阅读排行榜
2021/04/20
5.1K0
如何使用Python提取PDF表格及文本,并保存到Excel
手把手教你用Python提取PDF中的表格
pdfplumber 是一个开源的 python 工具库 ,它可以轻松的获取 PDF 文本内容、标题、表格、尺寸等各种信息,今天来介绍如何使用它来提取 PDF 中的表格。
玖柒的小窝
2021/11/21
1.8K0
手把手教你用Python提取PDF中的表格
Python操作PDF全总结|处理PDF文档不得不知道的两个库
Python在自动化办公方面有很多实用的第三方库,可以很方便的处理word、excel、ppt、pdf文件,今天我们就学习一下Python处理PDF文档的两个常用库「pdfplumber」、「pypdf2」。
吾非同
2021/01/20
3.7K0
为了提取pdf中的表格数据,python遇到excel,各显神通!
不知大家在工作中有没有过提取pdf表格数据的经历,按照普通人的思维,提取pdf的表格数据的方法可能会选择复制粘贴,但这是一个相当繁杂且重复的工作。而今天我们会讲解如何用python和excel来提取pdf的表格数据,看二者哪个更为方便!
Python与Excel之交
2021/08/05
3.4K0
Python自动读取PDF,推荐用pdfplumber库!
pdfplumber 是一个 Python 库,专为从 PDF 文件中提取文本和表格数据而设计。
double
2024/02/26
2.3K0
Python自动读取PDF,推荐用pdfplumber库!
用python解析pdf中的文本与表格【pdfplumber的安装与使用】
我们接触到的很多文档资料都是以pdf格式存在的,比如:论文,技术文档,标准文件,书籍等。pdf格式使得用机器从中提取信息格外困难。
blmoistawinde
2019/10/30
4.9K0
[784]python解析PDF表格
别问我为啥知道2比1好,你试试用1去解析一些带有文字格式的表格,带有复杂的表头的表格,你就知道啦!我在这里并没有在瞎说,而且还得装的的java的,后者只装一个的ImageMagick的就行,而且ImageMagick的很有用的
周小董
2020/03/28
1.2K0
用 Python 批量提取 PDF 的表格数据,保存为 Excel
需求:想要提取 PDF 的数据,保存到 Excel 中。虽然是可以直接利用 WPS 将 PDF 文件输出成 Excel,但这个功能是收费的,而且如果将大量 PDF转 Excel 的时候,手动去输出是非常耗时的。我们可以利用 Python 的第三方工具库 pdfplumber 快速完成这个功能。
杰哥的IT之旅
2022/05/17
2.6K0
用 Python 批量提取 PDF 的表格数据,保存为 Excel
python自动化系列之提取pdf文字和图片
在python中有许多开源的库可以处理Pdf文档,最常用的Pypdf2库可以读取文档,合并,分割pdf文档,但是也有局限性:
JQ实验室
2022/07/06
5.5K0
【随笔】用 Python 轻松提取、合并和压缩 PDF 文件
在我们的示例中,首先读取指定的 PDF 文件并提取每一页的第二行内容。根据第二行的内容(以空格分隔的第一个词),我们将相同内容的页面合并为一个新的 PDF 文件。最后,生成的 PDF 文件会被压缩,以减少文件的大小。
框架师
2024/11/14
2890
Python自动化办公系列之Python操作PDF
大家可以叫我黄同学(博客名:Huang Supreme),一个应用统计硕士,爱好写一些技术博客,志在用通俗易懂的写作风格,帮助大家学到知识,学好知识!
小白学视觉
2022/04/06
9660
Python自动化办公系列之Python操作PDF
别再问如何用Python提取PDF内容了!
导读 大家好,在之前的办公自动化系列文章中我们已经详细介绍了?如何使用Python批量处理PDF文件,包括合并、拆分、水印、加密等操作。 今天我们再次回到PDF,详细讲解如何使用Python从PDF提
刘早起
2020/09/30
2.3K0
数据导入与预处理-第4章-数据获取python读取pdf文档
1、什么是pdf? PDF(Portable Document Foramt)是一种便捷式文本格式,由Adobe系统公司开发,其文件可以在任意操作系统中保持原有的文本格式。PDF文件中可以包含图片、文本、多媒体等多种形式的内容。
用户2225445
2022/11/12
1.2K0
数据导入与预处理-第4章-数据获取python读取pdf文档
Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本。
丹枫无迹
2019/01/22
18.8K1
三大神器助力Python提取pdf文档信息
今天这篇文章是今年最后一篇文章了,因此也是一篇非常有用的技术文章,你可以现在只了解一下并进行收藏,等你需要用到的时候再拿出来看一看,这样就好了。
啃饼思录
2019/02/26
20.7K0
技术学习:Python(11)|操作PDF
🏮1 前言 Python在自动化办公方面有很多实用的第三方库,我们可以从官方网https://pypi.org/search/?q=pd找到很多这种第三方库来供给我们使用,这些库可以很方便的处理wor
艾特
2023/10/10
4170
技术学习:Python(11)|操作PDF
PDF文件信息不会提取怎么办??别急!Python帮你解决
在大多数常规数据文件中,pdf文件因其特殊的性质导致对其信息进行智能解析、提取、甚至批量化处理造成一定的困难,本期推文就教你如何使用Python第三方库pdfplumber (https://github.com/jsvine/pdfplumber) 对pdf文件进行解析及提取。
DataCharm
2021/02/22
1.6K0
PDF文件信息不会提取怎么办??别急!Python帮你解决
推荐阅读
相关推荐
​Python 操作pdf(pdfplumber读取PDF写入Exce)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验