Skip to content
This repository was archived by the owner on Feb 24, 2026. It is now read-only.

TheSoulGiver/compare-pdf

Repository files navigation


License PyPI PyPI - Downloads

PDF 视觉比较工具

这个工具通过将每页转换为图像并使用 OpenCV 进行比较,来视觉比较 PDF 文件。特别适用于识别仅通过文本比较可能无法发现的 PDF 文件差异。

特性

  • 逐页视觉比较 PDF 文件
  • 支持多页 PDF 文件
  • 报告 PDF 文件之间的差异,指定页码和源文件
  • 支持多种差异显示模式:并排显示和差异图像
  • 强健的错误处理和路径验证
  • 支持中文界面

系统要求

  • Python 3.7+
  • PyMuPDF (fitz) 库
  • OpenCV (cv2) 库
  • NumPy

本地开发安装

  1. 克隆仓库:

    git clone https://github.com/Formartha/compare-pdf.git
    cd compare-pdf
  2. 安装依赖:

    pip install -r requirements.txt

作为包安装

pip install compare-pdf

使用方法

命令行使用

compare_pdf --pdf <PDF文件路径1> --pdf <PDF文件路径2> ... [--showdiffs={diffimage|outline|sidebysidecircled}]
  • <PDF文件路径1>, <PDF文件路径2> 等替换为要比较的 PDF 文件路径。至少需要两个 PDF 文件进行比较。
  • --showdiffs 选项用于在发现差异页面时在窗口中显示差异。按任意键关闭差异窗口继续处理

显示选项

  • diffimage: 在差异窗口中显示差异图像,用红色高亮标记差异
  • outline: 显示轮廓差异图像,用红色轮廓标记差异边界
  • sidebysidecircled: 并排显示两个PDF,用红色和蓝色圆圈精确标记差异(推荐)

程序在没有差异时返回 0,否则返回 -1

Python 代码使用

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.pdf

显示差异(并排)

compare_pdf --pdf old.pdf --pdf new.pdf --showdiffs sidebysidecircled

显示差异图像

compare_pdf --pdf old.pdf --pdf new.pdf --showdiffs diffimage

测试

运行测试脚本验证功能:

python test_compare.py

改进说明

修复的问题

  1. 依赖清理: 移除了不必要的医学影像处理依赖(nipype、nibabel等)
  2. 路径验证: 添加了文件存在性和格式验证
  3. 错误处理: 增强了异常处理和资源管理
  4. 中文化: 添加了中文日志消息和界面
  5. 资源管理: 使用上下文管理器确保 PDF 文档正确关闭
  6. 页数处理: 改进了不同页数 PDF 的处理逻辑

新增功能

  • 支持相对路径和绝对路径
  • 文件格式验证
  • 更好的错误消息
  • 资源自动清理
  • 页数不匹配的警告

依赖文件

简化的 requirements.txt 现在只包含必要的依赖:

PyMuPDF==1.25.5
opencv-python==4.11.0.86
numpy>=1.21.0

许可证

此项目基于 MIT 许可证 - 详情请查看 LICENSE 文件。

有用的参考

About

This is a PDF visual comparison tool that converts pages to images and uses OpenCV for visual difference detection. It supports multi-page PDFs, various display modes, and offers both command-line and web interfaces.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors