项目概述
这是一个基于 PyQt5 开发的 PDF 文档内容比较工具,专门用于对比两个 PDF 文件(原稿和成稿)之间的差异。该工具采用图像处理技术,将 PDF 页面转换为栅格图像进行像素级比较,并生成包含多个可视化图层的比较结果 PDF。
主要功能
📄 文件比较
双 PDF 输入:支持选择原稿(文件A)和成稿(文件B)进行比较
自动页面处理:智能处理页数不同的 PDF 文件,自动填充空白页面
高质量栅格化:支持 72-1200 DPI 的可调分辨率进行 PDF 栅格化
🎨 多图层可视化输出
生成的比较结果 PDF 包含 5 个独立的可控图层:
图层1:原稿内容(文件A)- 默认隐藏
图层2:成稿内容(文件B)- 默认显示
图层3:A独有/差异内容(绿色标记)- 默认隐藏
图层4:B独有/差异内容(黄色标记)- 默认隐藏
图层5:所有差异高亮(红色差异+灰色背景)- 默认显示
⚙️ 高级参数调整
核心比较参数:
栅格化 DPI(72-1200)
像素差异阈值(0-254)
内容/背景识别阈值(0-254)
图像处理优化:
去噪处理(可调核大小和迭代次数)
形态学闭运算(填充空洞,可调参数)
视觉效果定制:
各图层独立的透明度控制(Alpha 值 0-255)
绿色、黄色、灰色、红色标记的透明度可调
🛠️ 用户体验
图形化界面:基于 PyQt5 的直观操作界面
实时进度显示:页面级和总体进度条,实时状态日志
多线程处理:后台处理不阻塞界面响应
智能参数验证:自动调整参数确保合理性
临时文件管理:可选择是否保留调试用的临时图像文件
技术架构
核心技术栈
GUI框架:PyQt5
PDF处理:PyMuPDF (fitz)
图像处理:OpenCV, PIL/Pillow
数值计算:NumPy
处理流程
PDF栅格化:将PDF页面转换为高分辨率位图
图像对齐:处理尺寸不匹配的页面
差异检测:基于像素灰度值进行差异识别
内容分析:区分文档内容和背景区域
形态学处理:去噪和空洞填充优化
图层生成:创建不同类型的差异标记图层
PDF输出:将所有图层组合为带OCG的PDF文件
适用场景
文档版本对比:检查文档修订前后的变化
印刷品质检:对比设计稿与印刷样品
合同审核:识别法律文件的修改内容
学术校对:论文或教材的版本差异分析
品质控制:产品说明书等技术文档的变更追踪