数据存在于现代数字世界的所有领域,它有许多不同的形式。
最常见的数据格式之一是 PDF。企业和机构经常将发票、报告和其他表格存储在便携式文档格式(PDF)文件中。
从 PDF 文件中提取数据可能会很费力和费时。幸运的是,为了方便从 PDF 文件中提取数据,Python 提供了各种库。
本教程将解释如何使用 Python 从 PDF 文件中提取数据。你将学习如何安装必要的库,我将提供如何安装的例子。
有几个 Python 库,你可以用来读取和提取 PDF 文件中的数据。这些库包括 PDFMiner、PyPDF2、PDFQuery 和 PyMuPDF。这里,我们将使用 PDFQuery 从多个 PDF 文件中读取和提取数据。
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 创建一个结构化的数据集。我们将遵循以下步骤:
首先,我们需要安装 PDFQuery,同时安装 Pandas 以进行一些分析和数据展示。
pip install pdfquery
pip install pandas
import pandas as pd
import pdfquery
我们导入这两个库,以便能够在我们的项目中使用它们。
#读取 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 也可以查询包含一个给定字符串的标签。
我的职业生涯开始和大多数码农一样,刚开始接触都是最基础的软件测试、编程语法。那时候在B站CSDN到处找学习资源,在这个吃技术的IT行业来说
,不断学习是至关重要的。但是我之前做的是最基础的业务工作,随着时间的消磨,让我产生了对自我价值和岗位意义的困惑。
我的程序员之路,一路走来都离不开每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《python架构师
学习路线》,也整理了不少【网盘资源】,需要的朋友可以公众号【Python大本营】获取网盘链接。
希望会给你带来帮助和方向。
从 PDF 文件中提取数据是一项重要任务,因为这些文件经常被用于文档存储和共享。
Python 的 PDFQuery 是一个强大的工具,可用于从 PDF 文件中提取数据。任何想要从 PDF 文件中提取数据的人都会发现 PDFQuery 是一个很好的选择,因为它语法简单、文档全面,它也是开源的,可以修改以适应特定的用例。