这个工具通过将每页转换为图像并使用 OpenCV 进行比较,来视觉比较 PDF 文件。特别适用于识别仅通过文本比较可能无法发现的 PDF 文件差异。
- 逐页视觉比较 PDF 文件
- 支持多页 PDF 文件
- 报告 PDF 文件之间的差异,指定页码和源文件
- 支持多种差异显示模式:并排显示和差异图像
- 强健的错误处理和路径验证
- 支持中文界面
- Python 3.7+
- PyMuPDF (
fitz) 库 - OpenCV (
cv2) 库 - NumPy
-
克隆仓库:
git clone https://github.com/Formartha/compare-pdf.git cd compare-pdf -
安装依赖:
pip install -r requirements.txt
pip install compare-pdfcompare_pdf --pdf <PDF文件路径1> --pdf <PDF文件路径2> ... [--showdiffs={diffimage|outline|sidebysidecircled}]- 将
<PDF文件路径1>,<PDF文件路径2>等替换为要比较的 PDF 文件路径。至少需要两个 PDF 文件进行比较。 --showdiffs选项用于在发现差异页面时在窗口中显示差异。按任意键关闭差异窗口继续处理
- diffimage: 在差异窗口中显示差异图像,用红色高亮标记差异
- outline: 显示轮廓差异图像,用红色轮廓标记差异边界
- sidebysidecircled: 并排显示两个PDF,用红色和蓝色圆圈精确标记差异(推荐)
程序在没有差异时返回 0,否则返回 -1
from compare_pdf import ComparePDF, ShowDiffsStyle
with ComparePDF(['文件1.pdf', '文件2.pdf'], ShowDiffsStyle.SideBySideCircled) as compare:
is_same = compare.compare()
if is_same:
print("文件相同")
else:
print("文件不同")compare_pdf --pdf old.pdf --pdf new.pdfcompare_pdf --pdf old.pdf --pdf new.pdf --showdiffs sidebysidecircledcompare_pdf --pdf old.pdf --pdf new.pdf --showdiffs diffimage运行测试脚本验证功能:
python test_compare.py- 依赖清理: 移除了不必要的医学影像处理依赖(nipype、nibabel等)
- 路径验证: 添加了文件存在性和格式验证
- 错误处理: 增强了异常处理和资源管理
- 中文化: 添加了中文日志消息和界面
- 资源管理: 使用上下文管理器确保 PDF 文档正确关闭
- 页数处理: 改进了不同页数 PDF 的处理逻辑
- 支持相对路径和绝对路径
- 文件格式验证
- 更好的错误消息
- 资源自动清理
- 页数不匹配的警告
简化的 requirements.txt 现在只包含必要的依赖:
PyMuPDF==1.25.5
opencv-python==4.11.0.86
numpy>=1.21.0
此项目基于 MIT 许可证 - 详情请查看 LICENSE 文件。