详解Python如何利用pdfplumber提取PDF中的表格

 更新时间:2024年04月18日 10:32:28   作者:程序媛小本  
pdfplumber 是一个开源的 python 工具库 ,它可以轻松的获取 PDF 文本内容、标题、表格、尺寸等各种信息,今天来介绍如何使用它来提取 PDF 中的表格,文中通过代码和图片讲解的非常详细,需要的朋友可以参考下

前言

pdfplumber 是一个开源的 python 工具库 ,它可以轻松的获取 PDF 文本内容、标题、表格、尺寸等各种信息,今天来介绍如何使用它来提取 PDF 中的表格。

安装

首先通过下面命令安装 pdfplumber 模块。

pip install pdfplumber

或是使用豆瓣镜像源安装。

pip install -i https://pypi.douban.com/simple pdfplumber

案例

这里有一份2020年中国大学生计算机设计大赛参赛作品获奖名单,文件为 PDF 格式,每页都包含表格,表格中包含为各支队伍的获奖信息,共158页。表格前两页内容如下。

下面将 PDF 中的表格提取出来,并保存到 Excel 中。

首先导入所需要的模块:

import pdfplumber
import pandas as pd

读取 PDF 文件

read_path = '2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
pdf_2020 = pdfplumber.open(read_path)

pages 属性包含 PDF 中每页的信息,循环每页内容,使用 extract_table() 方法提取每页中的表格数据,并将数据转为 DataFrame,最后合并每页的数据。

result_df = pd.DataFrame()
for page in pdf_2020.pages:
    table = page.extract_table()
    df_detail = pd.DataFrame(table[1:], columns=table[0])
    # 合并每页的数据集
    result_df = pd.concat([df_detail, result_df], ignore_index=True)

此时DataFrame中数据如下:

可以看到通过 extract_table() 提取后的数据有许多包含缺失值的列,我们还需要对DataFrame进行进一步处理,删除全为缺失值的列。

result_df.dropna(axis=1, how='all', inplace=True)

删了缺失值后,列名也一并删除了,还需要指定对应列名。

result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']

到现在我们就成功将表格信息完整的提取出来了!

完整代码

import pdfplumber
import pandas as pd

def read_pdf(read_path, save_path):
    pdf_2020 = pdfplumber.open(read_path)
    result_df = pd.DataFrame()
    for page in pdf_2020.pages:
        table = page.extract_table()
        print(table)
        df_detail = pd.DataFrame(table[1:], columns=table[0])
        result_df = pd.concat([df_detail, result_df], ignore_index=True)
    result_df.dropna(axis=1, how='all', inplace=True)
    result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']
    result_df.to_excel(excel_writer=save_path, index=False, encoding='utf-8')

read_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
save_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.xlsx'
read_pdf(read_path, save_path)

到此这篇关于详解Python如何利用pdfplumber提取PDF中的表格的文章就介绍到这了,更多相关Python pdfplumber提取PDF表格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中class内置方法__init__与__new__作用与区别解析

    Python中class内置方法__init__与__new__作用与区别解析

    这篇文章主要介绍了Python中class内置方法__init__与__new__作用与区别探究,本文中涉及的类均为Python3中默认的新式类,对应Python2中则为显式继承了object的class,因为未继承object基类的旧式类并没有这些内置方法,需要的朋友可以参考下
    2022-09-09
  • 解决pycharm 工具栏Tool中找不到Run manager.py Task的问题

    解决pycharm 工具栏Tool中找不到Run manager.py Task的问题

    今天小编就为大家分享一篇解决pycharm 工具栏Tool中找不到Run manager.py Task的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 如何将Pycharm中Terminal使用Powershell作为终端

    如何将Pycharm中Terminal使用Powershell作为终端

    这篇文章主要介绍了如何将Pycharm中Terminal使用Powershell作为终端问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 浅析Python __name__ 是什么

    浅析Python __name__ 是什么

    这篇文章主要介绍了Python __name__ 是什么,本文通过实例代码给大家介绍了Python __name__ 的作用,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 基于Python开发一个图像水印批量添加工具

    基于Python开发一个图像水印批量添加工具

    在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于Python PIL库的工业级图像水印解决方案,有需要的可以参考下
    2025-07-07
  • Python基于面向对象做一个文件夹整理工具

    Python基于面向对象做一个文件夹整理工具

    这篇文章主要给大家介绍了Python基于面向对象做一个文件夹整理工具,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • Python中两大Web身份认证主流方案的实现指南

    Python中两大Web身份认证主流方案的实现指南

    在Web开发中,身份认证是保护用户数据和系统安全的第一道防线,Session和JWT作为两种主流的认证方案,各有其适用场景和优缺点,下面小编就为大家详细介绍一下吧
    2025-10-10
  • Python中lru_cache的使用和实现详解

    Python中lru_cache的使用和实现详解

    这篇文章主要介绍了Python 中 lru_cache 的使用和实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • numpy中np.append()函数用法小结

    numpy中np.append()函数用法小结

    在numpy的函数库中,np.append()函数是一个常用的数组操作函数,它在进行数组操作时能够将两个数组进行拼接,并返回一个拼接后的新数组,下面就来介绍一下具体用法,感兴趣的可以了解一下
    2023-11-11
  • python3连接MySQL数据库实例详解

    python3连接MySQL数据库实例详解

    这篇文章主要为大家详细介绍了python3连接MySQL数据库实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论