详解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如何将图片生成视频MP4

    python如何将图片生成视频MP4

    这篇文章主要介绍了python如何将图片生成视频MP4问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • python list与numpy数组效率对比

    python list与numpy数组效率对比

    这篇文章主要介绍了python list与numpy数组效率对比分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python如何安装下载后的模块

    python如何安装下载后的模块

    在本篇文章里小编给大家整理了关于python安装下载后的模块的方法,需要的朋友们可以学习下。
    2020-07-07
  • Tensorflow 实现线性回归模型的示例代码

    Tensorflow 实现线性回归模型的示例代码

    这篇文章主要介绍了Tensorflow 实现线性回归模型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 用Python写脚本,实现完全备份和增量备份的示例

    用Python写脚本,实现完全备份和增量备份的示例

    下面小编就为大家分享一篇用Python写脚本,实现完全备份和增量备份的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python求前n个阶乘的和实例

    python求前n个阶乘的和实例

    这篇文章主要介绍了python求前n个阶乘的和实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 详解python中executemany和序列的使用方法

    详解python中executemany和序列的使用方法

    这篇文章主要介绍了详解python中executemany和序列的使用方法的相关资料,需要的朋友可以参考下
    2017-08-08
  • Python中正则表达式的用法实例汇总

    Python中正则表达式的用法实例汇总

    这篇文章主要介绍了Python中正则表达式的用法实例汇总,非常实用,需要的朋友可以参考下
    2014-08-08
  • 基于Python编写简易的成语接龙游戏

    基于Python编写简易的成语接龙游戏

    成语接龙是中华民族传统的文字游戏。它历史悠久,是传统文字、文化、文明的一个缩影,也是老少皆宜的民间文化娱乐活动。本文将用Python制作一个简单的成语接龙游戏,需要的可以参考一下
    2022-03-03
  • python生成word合同的实例方法

    python生成word合同的实例方法

    在本篇内容里小编给大家分享的是一篇关于python生成word合同的实例方法相关内容,有需要的朋友们可以学习下。
    2021-01-01

最新评论