利用Python获取PDF文件的文本
利用Python获取PDF文件的文本
ytkz虽然PDF文件对文本布局非常好,容易打印并阅读,但软件要将它们解析为纯文本并不容易,Python目前解析PDF的扩展包有很多。
通过查询资料,建议使用pdfplumber扩展包来解析PDF文档的文本和表格。本文介绍如何通过pdfplumber获取PDF的文本。
准备工作
确保安装了以下库:
- pdfplumber
若没安装,请在命令行使用以下语句进行安装:
pip install pdfplumber
pdfplumber
pdfplumber中有两个基础类,PDF和Page。PDF用来处理整个文档,Page用来处理整个页面。
1.1 pdfplumber.PDF类
- .metadata: 获取pdf基础信息,返回字典
- pages 一个包含pdfplumber.Page实例的列表,每一个实例代表pdf每一页的信息。
1.2 pdfplumber.Page类
pdfplumber核心功能,对PDF的大部分操作都是基于这个类,包括提取文本、表格、尺寸等。
pdfplumber的使用指南
使用 pdfplumber 库解析 PDF 的分步指南。
步骤 1:安装 pdfplumber 库 首先,您需要安装 pdfplumber 库。这可以通过运行以下命令使用 pip 来完成:
pip install pdfplumber
步骤 2:导入库 安装库后,可以使用以下命令将其导入到 Python 脚本中:
import pdfplumber
步骤 3:打开 PDF 要打开 PDF,需要通过将 PDF 文件的路径传递给 open() 函数来创建 pdfplumber.PDF 对象。例如:
with pdfplumber.open("path/to/pdf") as pdf:
步骤 4:提取文本 pdfplumber 提供了多种从 PDF 中提取文本的方法。最简单的方法是 extract_text()
方法,它返回一个包含 PDF 中所有文本的字符串。例如:
text = pdf.extract_text()
print(text)
步骤 5:提取数据 pdfplumber 还提供了多种从 PDF 中提取数据的方法。其中一种方法是 extract_table()
方法,它返回包含 PDF 表格中数据的列表列表。例如:
tables = pdf.extract_table()
print(tables)
步骤 6:提取图像 pdfplumber 还允许您从 PDF 中提取图像。这可以使用 get_image()
方法来完成,该方法返回包含图像数据和元数据的对象。例如:
images = pdf.get_image()
print(images)
完整代码
import pdfplumber
# 打开 PDF
with pdfplumber.open("path/to/pdf") as pdf:
# 提取文本
text = pdf.extract_text()
print(text)
# 提取表格
tables = pdf.extract_table()
for table in tables:
print(table)
# 提取图像
images = pdf.get_images()
for image in images:
print(image["page_number"])
with open(f"image_{image['page_number']}.jpg", "wb") as f:
f.write(image["data"])
只提取全部文本的代码
按页进行文本提取。
import pdfplumber
def read_pdf(pdf_path):
with pdfplumber.open(pdf_path) as pdf:
content = ''
for i in range(len(pdf.pages)):
# 读取PDF文档第i+1页
page = pdf.pages[i]
# page.extract_text()函数即读取文本内容,下面这步是去掉文档最下面的页码
page_content = '\n'.join(page.extract_text().split('\n')[:-1])
content = content + page_content
return content
if __name__ == '__main__':
a = read_pdf(r'2011.pdf')
print()
小结
在本文中,我们介绍了使用 pdfplumber 库在 Python 中解析 PDF 的基础知识。使用 pdfplumber,可以轻松地从 PDF 中提取文本、数据和图像。