PDF对比工具

拖拽 2 个PDF文档到这里 或者

处理 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 文件间的差异。