Python PDF 提取库

2024 年 8 月 29 日 | 阅读 6 分钟

在本教程中,我们将学习用于 PDF 数据提取的 Python 库,以便进行进一步分析。我们将介绍重要的 Python 库。

PDF 是便携式文档格式,通常用于安全地存储数据。PDF 简历的创建方式多种多样。例如——一些求职者以 word 格式制作简历并将其保存为 PDF,而另一些则使用在线简历模板创建。因此,我们的任务是解析 PDF 简历并提取所有文本,而不丢失信息。

以下是用于从 PDF 文件中提取文本的重要 Python 库。

  • PyPDF2
  • Tika
  • Textract
  • PyMuPDF
  • PDFtotext
  • PDFminer
  • Tabula

我们将介绍每个文档以及 Python 代码。

PyPDF2

PyPDF2 是一个完整的 Python 包,可用于执行多种 PDF 操作。我们可以使用此模块执行以下任务。

  • 我们可以在 Python 中从 PDF 提取信息。
  • 我们可以旋转页面。
  • 我们可以合并两个或多个 PDF。
  • 我们可以分割 PDF。
  • 我们可以添加水印。
  • 我们可以加密 PDF。

要使用此模块,我们需要使用 pip 命令将其安装在本地计算机上。

现在让我们来理解以下从 PDF 中提取数据的代码。

示例 -

在上面的代码中,我们打印了 PDF 中的页面数。我们也可以提取信息。

使用 PyPDF2 的缺点

以下是 PyPDF2 软件包的缺点。

  • 但是,此库可以提取文本,但无法保留原始 PDF 中文本的结构。
  • 它不保留表格结构。
  • 它还会将不必要的空格和换行符包含在提取的文本中。
  • 它还会将不必要的空格和换行符包含在提取的文本中。

Textract

存在几个用于从各种格式的文件中提取内容的包。Textract 库与其他库略有不同;它提供了一个单一的接口,可以从任何文件中删除内容,而无需任何不相关的标记。

Textract 还用于从 PDF 文件和其他格式中提取信息,包括 CSV、doc、eml、epub、JSON、jpg、mp3、msg、xls 等。

最重要的是要记住,它以字节格式提取信息。要将字节数据转换为字符串,我们需要使用另一个 Python 包进行解码,例如 codecs。

让我们通过 Textract、输入 PDF 和输出提取文本来理解以下使用 Textract 从 PDF 中提取文本的代码。

示例 -

此包可以提取信息而不会丢失任何数据。它保留了原始文档的原始结构;但是,表格结构未被保留。

这是推荐的文本提取库,不仅适用于 PDF,也适用于其他类型的文件。

PyMuPDF

PyMuPDF 是 MuPDF 的 Python 绑定,MuPDF 是一个轻量级的 PDF 查看器。它不完全基于 Python,并且该包以其卓越的性能和高质量的渲染而闻名。

使用 PyMuPDF,我们可以从 Python 脚本中访问扩展名为 *.pdf, *.xps, *.oxps, *.epub, *.cbz 或 *.fb2 的文件。还支持几种流行的图像格式,包括多页 TIFF 图像。

我们可以使用 PyMuPDF 提取多页文档的信息。它还允许我们通过提供页码来获取特定页面的信息。以下是使用 PyMuPDF 从 PDF 中提取文本的代码。

示例 -

该库可以删除文本中不必要的空格,因此预处理的文本清理任务会自动由该包完成。

PyMuPDF 能够保持文档的结构。但是,以原始格式提取表格并不可行,并且不建议删除表格数据。我们将不得不使用一些其他包来保留表格中的信息。该库在处理 PDF 的文本数据时提供了有效的结果。

PDFtotext

PDFtotext 是另一个基于 Python 的包,用于从 PDF 文件中提取文本。它只能读取 PDF 文件的数据,不支持其他格式。数据以对象的形式移除,并且 PDF 的结构得以保留。

以下是从 PDF 获取数据的代码。

示例 -

使用此库的主要优点是它可以保留 PDF 的表格结构及其文本。如果你想提取表格数据,这个库比之前的库更合适。

PDFMiner

PDFMiner 是一个基于 Python 的包,仅用于提取 PDF 文件。它还可以将 PDF 文件转换为其他文件格式,如 HTML/XML。PDFMiner 有各种版本,最新版本兼容 python 3.6 及以上版本。

该库以 API 请求响应的形式提供其响应。这就是为什么这个包比其他纯 Python 包需要更多时间的原因。

让我们理解以下示例 -

示例 -

Tabula

Tabula 是基于 Java 的,主要用于读取 PDF 中的表格数据。它是 tabular-java 的一个简单 Python 包装器,它提取信息并将其保存到 Python Dataframe 中。我们可以将该 Dataframe 转换为 CSV、tsv、excel 或 JSON 文件格式。

在下面的代码中,我们使用 Tabula 包以及输入 PDF 和输出提取的文本,从 PDF 文件中提取表格到 DataFrame 中。

示例 -

此库对于提取表格信息非常有用。将 Tabula 与上面提到的其他包一起使用,可以有效地提取完整的 PDF。

结论

本教程包含一些重要的 Python 库,用于从 PDF 中提取文本。这些库各有优缺点;然而,有些适用于提取文本,有些则擅长从表格中提取数据。我们可以根据自己的需求进行选择。我们还包含了代码示例。让我们看看讨论过的库的总结——

  1. PyPDF2 - 这个库不太推荐,因为它不保留格式。
  2. Tika - 要使用 Tike,我们需要安装 Java,并且必须熟悉 Java 安装,涉及不必要的 Java 连接,适合提取内容,关键元数据。
  3. Textract - 它返回一个字节对象,我们需要将其转换为字符串。
  4. PyMuPDF - 它从 PDF 文件中提取文本,删除文本中不必要的空格,并保留文档的原始结构。
  5. PDFminer - 它保留 PDF 文件文本的结构,但不保留表格结构。
  6. PDFtoText - 它是最推荐的库,因为它保留了表格和原始结构。