引言
我们手头有一个 PDF 文件,并希望将其中的文本提取为简单的 .txt 格式。我们的想法是将这个过程自动化,以便内容稍后可以被轻松读取、编辑或处理。例如,一个包含文章或报告的 PDF 可以通过几行 Python 代码转换为纯文本。在本文中,我们将使用一个示例 file.pdf 文件来探索实现这一目标的不同库和方法。
File.pdf 文件
使用 pdfplumber
pdfplumber 是一个 Python 库,它提供了从 PDF 文件中提取文本、表格和元数据的高级功能。它在处理具有复杂布局或包含表格等结构化数据的 PDF 时特别有用。
import pdfplumber
with pdfplumber.open("file.pdf") as pdf, open("output.txt", "w", encoding="utf-8") as f:
for page in pdf.pages:
t = page.extract_text()
if t:
f.write(t + ‘
‘)
输出示例
Output.txt 文件
代码解释: 这段代码使用 pdfplumber 同时打开 "file.pdf" 和 "output.txt"。它使用 pdf.pages 遍历 PDF 的每一页,利用 extract_text() 提取文本;如果文本存在,则将其写入输出文件,并在末尾添加换行符以分隔每一页的内容。
使用 PyPDF2
PyPDF2 是一个纯 Python 库,用于读取和写入 PDF 文件。它广泛用于基本的 PDF 操作,包括文本提取、合并、拆分和旋转页面。然而,在处理复杂布局或结构化数据时,它可能无法像 pdfplumber 那样精确。
from PyPDF2 import PdfReader
reader = PdfReader("file.pdf")
with open("output.txt", "w", encoding="utf-8") as f:
for page in reader.pages:
t = page.extract_text()
if t:
f.write(t + ‘
‘)
输出示例
代码解释: 这段代码创建了一个 PdfReader 对象来读取 "file.pdf",并以写入模式(采用 UTF-8 编码)打开 "output.txt"。然后它遍历每一页,使用 extract_text() 提取文本。如果找到文本,就会将其写入输出文件,并用换行符进行分隔。
使用 fitz
fitz 是 PyMuPDF 库的接口,允许进行高性能的 PDF 和电子书操作。它以文本提取的速度和准确性而闻名,特别是对于具有复杂图形布局或嵌入字体的 PDF。
import fitz # PyMuPDF
doc = fitz.open("file.pdf")
with open("output.txt", "w", encoding="utf-8") as f:
for page in doc:
f.write(page.get_text() + ‘
‘)
代码解释: 这段代码使用 fitz (PyMuPDF) 打开 "file.pdf" 并逐页读取。对于每一页,它使用 get_text() 提取文本并将其写入 "output.txt",在每页内容后添加一个换行符以保持内容分离。