在Jupyter Notebook中用python提取pdf表格及文本内容

2021-3-19 15:58| 发布者: Fuller| 查看: 7170| 评论: 0

摘要: 1. 项目说明1.1. 数据分析师可以驾驭的数据处理模板对pdf文件中的文本和表格进行处理,很多数据分析师会碰到,因为pdf格式非常流行。然而从pdf中抽取表格和文本却不那么容易。也不是技术上没有手段,而是你无法预期 ...

1. 项目说明

1.1. 数据分析师可以驾驭的数据处理模板

对pdf文件中的文本和表格进行处理,很多数据分析师会碰到,因为pdf格式非常流行。然而从pdf中抽取表格和文本却不那么容易。也不是技术上没有手段,而是你无法预期一个表格会在哪一页,会有多少行列,是否有表头等等。提取文本也有同样的困惑,哪一页哪一段无法预期。那么,产生的问题就是:很难写一个通用的程序,可以从一批pdf都准确无误地提取表格。比如,把2020年第四季度上市公司的公告提取一遍,那是很难定位的。

可见,要准确无误地提取pdf表格和文本内容,需要大量的交互,所以,与Jupyter Notebook配合将是一个很好的方案。

而Jupyter Notebook这类交互式数据探索和分析工具代表了一股不容忽视的潮流,借助于Python编程的强大力量,数据加工的能力和灵活性已经有相当明显的优势,尤其是程序代码和文字描述可以混合编排,数据探索和数据描述做完了,一篇研究报告也基本上成型了。

然而Python毕竟是一个全功能的编程语言,对于非编程出身的数据分析师来说,Pandas,Numpy,Matplotlib这些词让人望而生畏。本系列Notebook将设法解决这个问题,让非编程出身的数据分析师能够忽略复杂的编程过程,专注于数据处理和统计分析部分,就像使用Excel的公式一样驾驭Python。

所以,我们将尝试发布一系列Jupyter Notebook,像文档模板,一些基本的程序环境设置、文件操作等固化下来,在设定的分析场景下不需要改动程序代码。而数据处理部分的代码可以根据需要截取选用。每一项功能用一个code cell存代码,不需要的处理功能可以删除。

1.2. 本模板适应的场景

本模板演示怎样打开,读取pdf格式文档的文本和表格,并保存到excel文件中。pdf文件放在data/raw中

1.3. 使用方法

基本操作顺序是:

  1. 本notebook将打开data/raw中的cba_2021.pdf
  2. 如需处理其它文件,请将文件复制到data/raw文件夹下,并且修改file_pdf的值
  3. 执行本notebook的单元

注意:每个notebook项目目录都预先规划好了,具体参看Jupyter Notebook项目目录规划参考。如果要做多个分析项目,把整个模板目录专门拷贝一份给每个分析项目。

1.4. 简要技术说明

在每个功能项单元,如果不需要关心的编程细节,将注明【编程细节】。

本notebook主要介绍一系列对pdf文件的基本操作方法。

主要采用pdfplumber库和Pandas程序库。pdfplumber库处理pdf格式文件,用Pandas生成一个DataFrame类型的对象,把读取到的pdf表格内容写入excel文件。

1.5. 数据源

数据源是一篇有关中国职业篮球联赛(CBA)的介绍和赛事统计的pdf文件:cba_2021.pdf

1.6. 修改历史

2021-03-19:第一版发布

1.7. 版权说明

本notebook是GooSeeker大数据分析团队开发的,所分析的源数据是data/raw中的cba_2021.pdf文件,本notebook中的数据和代码可自由共享使用,包括转发、复制、修改、用于其他项目中

2. 准备程序环境

导入必要的Python程序包,设定要分析的文件名变量。使用以下变量对应读取pdf文件名和写入excel文件名:

  • file_pdf:要打开的pdf文件名
  • file_excel: 要写入的excel名

本节下面的代码将把上述变量赋值。 【注意】如果执行下面的代码时遇到下面的异常,表示pdfplumber还没有安装,需要按照下面的步骤安装。运行异常

2.1. 安装pdfplumber的步骤

1. 打开Anaconda的命令行窗口 在下面的菜单中打开annaconda命令行

2. 执行pip install pdfplumber 在命令行窗口执行,会看到如下结果安装pdfplumber

3. 再次执行下面的代码 应该不会出现前述异常了

3. 打开pdf文件

这里的pdf变量表示打开的pdf文档,这是一个pdfplumber对象,下面的所有操作都是针对pdfplumber对象做的。

4. 获取该pdf文档的信息

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

6. 读取第一页的文本信息

7. 读取第二页的表格

8. 把表格内容保存到excel

9. 关于pdfplumber库的进一步总结说明

9.1. pdfplumber简介

  • 它是一个纯python第三方库,适合python 3.x版本
  • 它用来查看pdf各类信息,能有效提取文本、表格
  • 它不支持修改或生成pdf,也不支持对pdf扫描件的处理

9.2. pdfplumber安装

pip install pdfplumber

9.3. pdfplumber导入

import pdfplumber

9.4. pdfplumber常用类

  • pdfplumber.pdf类
  • pdfplumber.page类

9.5. page类的常用方法

  • 提取文本:page.extract_text()
  • 提取表格:page.extract_table()
10. 下载notebook源代码

下载本Jupyter Notebook源代码请点击:用python提取pdf表格及文本内容

鲜花

握手

雷人

路过

鸡蛋

最新评论

GMT+8, 2024-12-21 23:01