如何用 Python 从 PDF 文件中提取数据
数据存在于现代数字世界的所有领域,它有许多不同的形式。
最常见的数据格式之一是 PDF。企业和机构经常将发票、报告和其他表格存储在便携式文档格式(PDF)文件中。
从 PDF 文件中提取数据可能会很费力和费时。幸运的是,为了方便从 PDF 文件中提取数据,Python 提供了各种库。
本文将解释如何使用 Python 从 PDF 文件中提取数据。你将学习如何安装必要的库,我将提供如何安装的例子。
有几个 Python 库,你可以用来读取和提取 PDF 文件中的数据。这些库包括 PDFMiner、PyPDF2、PDFQuery 和 PyMuPDF。这里,我们将使用 PDFQuery 从多个 PDF 文件中读取和提取数据。
如何使用 PDFQuery
PDFQuery 是一个 Python 库,通过使用类似于 CSS 的选择器来定位文档中的元素,提供了一种从 PDF 文件中提取数据的简单方法。
它将一个 PDF 文件作为一个对象来读取,将 PDF 对象转换为一个 XML 文件,并通过其在 PDF 文件中的特定位置来访问所需的信息。
让我们考虑一个简短的例子来看看它是如何工作的。
from pdfquery import PDFQuery
pdf = PDFQuery('example.pdf')
pdf.load()
# 使用类似 CSS 的选择器来定位元素
text_elements = pdf.pq('LTTextLineHorizontal')
# 从元素中提取文本
text = [t.text for t in text_elements]
print(text)
在这段代码中,我们首先通过传递我们想要提取数据的 PDF 文件的文件名创建一个 PDFQuery 对象。然后我们通过调用 load() 方法将文件加载到该对象中。
接下来,我们使用类似 CSS 的选择器来定位 PDF 文档中的文本元素。pq() 方法被用来定位这些元素,它返回一个代表所选元素的 PyQuery 对象。
最后,我们通过访问每个元素的 text 属性从这些元素中提取文本,并将提取的文本存储在一个叫作 text 的列表中。
让我们考虑另一种方法,读取 PDF 文件,提取一些数据元素,并使用 PDFQuery 创建一个结构化的数据集。我们将遵循以下步骤:
- 安装包
- 导入库
- 读取和转换 PDF 文件
- 读取和转换数据
安装包
首先,我们需要安装 PDFQuery,同时安装 Pandas 以进行一些分析和数据展示。
$ pip install pdfquery
$ pip install pandas
导入库
import pandas as pd
import pdfquery
我们导入这两个库,以便能够在我们的项目中使用它们。
读取和转换 PDF 文件
#读取 PDF
pdf = pdfquery.PDFQuery('customers.pdf')
pdf.load()
#将 pdf 转换为 XML
pdf.tree.write('customers.xml', pretty_print = True)
pdf
我们将把 pdf 文件作为一个元素对象读入我们的项目,并加载它。将 pdf 对象转换成可扩展标记语言(XML)文件。这个文件包含了一个给定的 PDF 页面的数据和元数据。
XML 定义了一套规则,用于将 PDF 编码成人类和机器都能阅读的格式。使用文本编辑器查看 XML 文件,我们可以看到我们要提取的数据在哪里。
读取和转换数据
我们可以在 LTTextBoxHorizontal
标签里面得到想要提取的信息,我们可以看到与之相关的元数据。
在 XML 片段中,文本框内的值 [68.0, 231.57, 101.990, 234.893]
是指文本框的左、下、右、上坐标。你可以把它看作是我们要提取的数据周围的边界。
让我们使用文本框的坐标来访问和提取客户名称。
# 使用坐标读取数据
customer_name = pdf.pq('LTTextLineHorizontal:in_bbox("68.0, 231.57, 101.990, 234.893")').text()
print(customer_name)
#output: Brandon James
就这样,我们完成了!
注意
:有时我们想提取的数据在每个文件中的位置不完全相同,这可能会导致问题。幸运的是,PDFQuery 也可以查询包含一个给定字符串的标签。
总结
从 PDF 文件中提取数据是一项重要任务,因为这些文件经常被用于文档存储和共享。
Python 的 PDFQuery 是一个强大的工具,可用于从 PDF 文件中提取数据。任何想要从 PDF 文件中提取数据的人都会发现 PDFQuery 是一个很好的选择,因为它语法简单、文档全面,它也是开源的,可以修改以适应特定的用例。
相关文章
Python for 循环中的下一项
发布时间:2023/04/26 浏览次数:179 分类:Python
-
本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。
Python While 循环用户输入
发布时间:2023/04/26 浏览次数:148 分类:Python
-
我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。
在 Python 中将整数转换为罗马数字
发布时间:2023/04/26 浏览次数:87 分类:Python
-
本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
在 Python 中将罗马数字转换为整数
发布时间:2023/04/26 浏览次数:144 分类:Python
-
本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。
在 Python 中读取 gzip 文件
发布时间:2023/04/26 浏览次数:70 分类:Python
-
本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。
在 Python 中锁定文件
发布时间:2023/04/26 浏览次数:141 分类:Python
-
本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等
在 Python 中将 PDF 转换为文本
发布时间:2023/04/26 浏览次数:196 分类:Python
-
在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。
在 Python 中创建临时文件
发布时间:2023/04/26 浏览次数:53 分类:Python
-
本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。