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

手把手教你用Python提取PDF中的表格 前言 pdfplumber 是一个开源的 python 工具库 ,它可以轻松的获取 PDF 文本内容、标题、表格、尺寸等各种信息,今天来介绍如何使用它来提取 PDF 中的表格。 安装 首先通过下面命令安装 pdfplumber 模块。 pip install pdfplumber 或是使用豆瓣镜像源安装。 pip install -i https://pypi.douban.com/simple pdfplumber 案例 这里有一份2020年中国大学生计算机设计大赛参赛作品获奖名单,文件为 PDF 格 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

Python免费学习资料、代码以及交流解答点击即可加入


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

目前市场上有很多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类」

 

 

「pdfplumber.Page类」

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

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

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

 

 

1.读取pdf

# 导入pdfplumber
import pdfplumber

# 读取pdf文件,返回pdfplumber.PDF类的实例
pdf = pdfplumber.open("e:\\nba2.pdf")

2.获取该pdf文档的信息

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

输出:

 

 

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

# 通过pdfplumber.PDF类的metadata属性获取pdf页数
len(pdf.pages)

4.读取第一页的页宽、页高等信息

# 第一页pdfplumber.Page实例
first_page = pdf.pages[0]

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

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

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

输出:

 

 

5.读取第一页的文本

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

输出:

 

 

6.读取第二页的表格

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,
    "intersection_tolerance": 3,
    "intersection_x_tolerance": None,
    "intersection_y_tolerance": None,
}

 

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

 

pdfplumber的独特之处

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

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

最关键的是pdfplumber作者持续在维护该库,而同样受欢迎的PyPDF2已经不再维护了。
源码:https://pan.baidu.com/s/1COX_JUYeNxwvaMe4NFy6AA 提取码: q3a7

用Python代码批量提取PDF文件中的表格 本文演示如何使用Python提取PDF文档中的表格数据,并将其保存到文本文件或Excel文件。 阅读详情

相关推荐

使用Python快速读取PDF中的表单数据

本文介绍了如何使用Python快速读取PDF文档中多种表单或者特定表单的数据。包含详细步骤介绍及代码示例。

nuclear2011的博客 3340

python实现PDF中表格转化为Excel的方法

随着科技的发展和数字化的普及,PDF作为一种通用的电子文档格式,已经成为了我们生活和工作中不可或缺的一部分。但是,PDF文档中的表格往往不能直接编辑或复制,给数据的提取和处理带来了很大的困难。因此,将PDF中的表格转化为Excel表格,成为了很多人需要解决的问题。本文将介绍Python实现PDF中表格转化为Excel的方法。

weixin_68789096的博客 7396

再见PDF提取收费!我用100行Python代码搞定!去你的收费!

大家在日常的工作和学习过程中,都少不了与PDF文件打交道,很多的小伙伴都面临着将PDF文件中的文字、图片和表格数据提取出来的问题。能够对PDF文件中的文字、表格等数据进行编辑,网上现存的PDF提取的软件都需要付费操作! 小编今天就利用百行的python程序,来提取PDF文件中的文字、图片和表格数据。一起来看看吧。 01.程序执行效果 python库版本介绍 本次程序涉及到多个python第三方库与python3的内置库,而且不同的python库版本对于程序的兼容性不一致,因此我们首先来介绍一下使

weixin_52994140的博客 3124

Python提取pdf中的表格数据(附实战案例)

今天给大家介绍一个Python使用工具,那就是从pdf文件中读取表格数据,主要用到第三方库pdfplumber。pdfplumber是一款基于pdfminer,完全由python开发的pdf文档解析库,不仅可以获取每个字符、矩形框、线等对象的具体信息,而且还可以抽取文本和表格。目前pdfplumber仅支持可编辑的pdf文档。

m0_64336780的博客 1万+

Python实战:用Streamlit打造PDF表格与图片提取神器

本文介绍了一个基于Python和Streamlit开发的PDF处理工具,能够自动提取PDF中的表格和图片。工具使用pdfplumber库提取表格数据并导出为Excel,利用PyMuPDF提取图片内容。文章详细说明了环境搭建、核心功能实现(包括表格和图片提取)、遇到的常见问题及解决方案。该工具仅需不到100行代码,即可实现高效的PDF内容提取功能,适用于办公自动化场景,并支持后续扩展更多PDF处理功能。作者还提供了完整的Github源码链接和详细的开发思路。

weixin_42636075的博客 813

Python提取PDF文件中的表格文本保存为Excel文件

“Python小屋”编程比赛正式开始推荐图书:《Python程序设计(第3版)》,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,20...

Python小屋 814

python源码案例 Python提取PDF表格及文本

python源码案例 Python提取PDF表格及文本

m0_37302966的博客 1344

Python编程神器:3行代码提取PDF表格数据

从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。 PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面清晰且美观的展示效果。然而,对于想要从 PDF 中提取信息的人们来说,PDF 是个噩梦,尤其是表格。 大量的学术报告、论文、分析文章都使...

python入门教程学习电子书视频资料 1024

Camelot:从pdf中提取表格数据

Camelot:从pdf中提取表格数据文章目录:一、Camelot的介绍和安装1. Camelot介绍2. Camelot的安装3. 其他二、Camelot的使用1. 快速入门使用2. 详细说明3. camelot两种表格解析(提取)方法1、流解析(stream)2、格子解析(lattice)三、高级使用1. 处理背景线1. 处理背景线2. 可视调试3. 指定表区域4. 指定列表分隔符5. 沿分隔...

求真、务实 1万+

Python解析PDF:支持本地/在线文档的解析、提取文本及表格信息(采用pdfplumber包)

番外话 被PDF折磨了两年多,今天终于找到一个比较好的解析方案,是用pdfplumber包解析的,并做了一些封装。之前用pdfminer解析的效果很一般,提取效果无法忍受的那种。把解析方法写出来后,我自己也是老泪纵横,给大家分享一下 注意事项 pdfplumber是对pdfminer的再封装,最好先安装pdfminer3看,再安装pdfplumber,否则代码很容易报错 源码 # -*- coding: utf-8 -*- # @Author: 二师父 # @Vtime: 20...

weixin_39181440的博客 1637

Android 面试题 Handler篇

1.Handler的实现原理。

ViewHandKownHealth的博客 955

如何用Python提取PDF表格数据

从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面清晰且美观的展示效果。然而,对于想要从 PDF 中提取信息的人们来说,PDF 是个噩梦,尤其是表格。大量的学术报告、论文、分析文章都使用 PDF 展示其中的表格数据,但是对于如果想要直接从表格中复制数据则会非常麻烦。

AI大模型资料分享员 1618

通讯软件013——分分钟学会Kepware OPC AE Server仿真配置

本文介绍如何使用Kepware软件仿真OPC AE Server配置。

zhouwl72的博客 2227

Python提取PDF中表格数据

从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。 项目地址:https://github.com/camelot-dev/camelot 项目作者提供了三种安装方法。首先,你可以使用 Conda 进行安装,这是最简单的。 conda install -c conda-forge ca...

冥更的博客 4387

python毕设 基于Web的中药材信息查询系统程序+论文

***(程序+源码+数据库+调试部署+开发环境)论文文档1,文末可获取,系统界面在最后面。****

m0_74825541的博客 1257

VSCode+PlatformIO新建工程卡成狗?3步提速大法实测有效(附镜像源配置)

针对VSCode+PlatformIO新建工程时因依赖下载缓慢导致的加载慢问题,本文提供了三步核心提速方案。通过配置Python环境变量、修改PlatformIO插件设置以使用国内镜像源,并优化pip配置文件,实测可大幅缩短工程创建时间,有效解决创建工程卡顿的痛点。

delta的博客 712

如何使用Python提取PDF表格数据

从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面清晰且美观的展示效果。然而,对于想要从 PDF 中提取信息的人们来说,PDF 是个噩梦,尤其是表格。大量的学术报告、论文、分析文章都使用 PDF 展示其中的表格数据,但是对于如果想要直接从表格中复制数据则会非常麻烦。

weixin_72959097的博客 2067

NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案

本文主要介绍了NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案,希望能对使用jupyter notebook的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

干货| 使用Python提取PDF表格数据

然而,对于想要从 PDF 中提取信息的人们来说,PDF 是个噩梦,尤其是表格。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

白帽阿叁的博客 2152

Android Framework WMS面试题及参考答案

什么是 WindowManagerService(WMS)?它的作用是什么? WindowManagerService(WMS)是 Android 系统中非常重要的一个系统服务。它运行在系统进程(system_server 进程)中。 从本质上来说,WMS 是 Android 窗口管理系统的核心。它负责管理系统中的所有窗口,包括应用程序窗口、系统窗口(如状态栏、导航栏)等。 它的主要作用有很多。首先是窗口的创建和销毁。当一个应用请求创建一个窗口时,WMS 会协调各个模块完成窗口的创建工

大模型大数据攻城狮的专栏 2163

提示词编写:从新手到专家的进阶之路

本文旨在为提示词编写者提供一条从新手到专家的进阶之路。我们将详细探讨提示词编写的背景与意义、基础与进阶技巧、实战应用以及最佳实践。通过逐步深入的分析与实操,读者将掌握提示词编写的核心要点,提高编写效率和作品质量。提示词是用于引导人工智能生成文本的关键词或短语,它包含了作者想要传达的主题、情感和细节。随着人工智能技术的普及,自动化写作工具逐渐应用于各行各业。为了提高写作效率,项目团队决定开发一款基于人工智能的自动化写作工具。成功开发了一款自动化写作工具,生成文本质量较高。

AI天才研究院 1087

用三行 Python 代码提取 PDF 表格数据

项目作者:vinayak mehta参与:一鸣从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取...

Python小二 1116

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6863

为什么别人整理表格数据那么快,我教你简单三行Python 代码快速提取PDF表格数据

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

m0_63102527的博客 805

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python新工具:用三行代码提取PDF表格数据

(由Python大本营付费下载自视觉中国)作者 | vinayak mehta参与|一鸣来源 |Python数据科学(ID:PyDataScience)从 PDF...

Python大本营的博客 1256

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camelot | 三行代码提取PDF表格数据

本文来自『机器之心编译』(almosthuman2014)PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面清晰且美观的展示效...

机器学习算法与Python学习 2257

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 零基础学Python:案例实践之学生信息管理系统
下一篇: Python 爬虫:单线程、多线程和协程的爬虫性能对比
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值