处理 PDF 文件,我们会用到PyPDF2
库来提取文本内容,difflib
库(Python 标准库)进行文本对比。首先通过pip install PyPDF2
安装PyPDF2
库,安装好后,就可以开始编写代码了。
import PyPDF2
import difflib
def extract_text_from_pdf(pdf_path):
text = ""
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
num_pages = len(reader.pages)
for page_num in range(num_pages):
page = reader.pages[page_num]
text += page.extract_text()
return text
pdf1_path = "pdf1.pdf"
pdf2_path = "pdf2.pdf"
text1 = extract_text_from_pdf(pdf1_path)
text2 = extract_text_from_pdf(pdf2_path)
d = difflib.Differ()
diff = list(d.compare(text1.splitlines(), text2.splitlines()))
for line in diff:
if line.startswith('+ '):
print(f'新增内容: {line[2:]}')
elif line.startswith('- '):
print(f'删除内容: {line[2:]}')
elif line.startswith('? '):
print(f'变动细节: {line[2:]}')
else:
print(f'相同内容: {line}')
在上述代码里,extract_text_from_pdf
函数是核心,它以二进制模式打开 PDF 文件,借助PyPDF2.PdfReader
逐页读取 PDF 内容,再将每页提取到的文本拼接起来。获取到两个 PDF 文件的文本内容后,和对比 Word 文件一样,使用difflib.Differ
按行对比文本,根据不同的对比标识输出差异与相同部分。
不过要注意,由于 PDF 格式的复杂性,PyPDF2
库提取的文本可能存在格式错乱、缺失特殊符号等情况。这时可以尝试使用pdfplumber
库等替代,或者对提取后的文本进行进一步清洗处理。有了这个基础代码,后续还能拓展功能,比如将对比结果生成报告,方便更直观地查看 PDF 文件间的差异。