Skip to content

这是一个 Python 脚本,用于自动识别并删除 PDF 文件中重复或高度相似的页面。它通过将页面转换为图像并比较它们的感知哈希值来实现,非常适合清理扫描的文档、报告或任何可能包含冗余页面的 PDF 文件。

License

Notifications You must be signed in to change notification settings

VANvonZHANG/PDF-Duplicate-Page-Remover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

PDF 重复页面删除工具 (PDF Duplicate Page Remover)

这是一个 Python 脚本,用于自动识别并删除 PDF 文件中重复或高度相似的页面。它通过将页面转换为图像并比较它们的感知哈希值来实现,非常适合清理扫描的文档、报告或任何可能包含冗余页面的 PDF 文件。

✨ 主要功能

  • 精确去重:基于图像感知哈希算法 (pHash),能够识别内容相似但并非完全相同的页面。
  • 可调相似度:可以自定义相似度阈值,灵活控制“重复”的判断标准。
  • 单个文件处理:快速处理单个指定的 PDF 文件。
  • 批量处理:支持处理整个文件夹内的所有 PDF 文件,或通过通配符匹配特定文件,并将结果保存到指定输出目录。
  • 跨平台:基于 Python,可在 Windows, macOS, 和 Linux 上运行。
  • 开源:代码完全开源,您可以根据需要自由修改和使用。

⚙️ 工作原理

脚本的核心思想是“眼见为实”。它不会去比较页面的底层代码或文本,而是:

  1. 逐页渲染:使用 PyMuPDF 库将 PDF 的每一页都渲染成一张图片。
  2. 生成指纹:使用 imagehash 库为每张图片计算一个“感知哈希值”。这个哈希值可以看作是图片内容的“视觉指纹”。
  3. 比较指纹:通过计算两个哈希值之间的“汉明距离”来判断它们的相似程度。距离越小,图片越相似。
  4. 剔除重复:如果一个页面的“指纹”与之前某个唯一页面的“指纹”足够相似(汉明距离小于等于设定的阈值),则将其标记为重复页面。
  5. 生成新文件:最后,脚本将所有被判断为“唯一”的页面整合到一个新的 PDF 文件中。

🚀 安装

在开始之前,请确保您已经安装了 Python 3.6 或更高版本。

  1. 克隆或下载本项目。

  2. 打开终端或命令行,进入项目目录,然后使用 pip 安装所需的依赖库:

    pip install PyMuPDF imagehash Pillow
    

📖 使用方法

本脚本通过命令行运行,支持多种操作模式。

1. 处理单个文件

这是最基本的功能。指定输入文件和输出文件的路径即可。

命令格式:

python remove_duplicates.py <输入文件路径> <输出文件路径>

示例:

python remove_duplicates.py "my_document.pdf" "my_document_cleaned.pdf"

2. 批量处理文件夹

处理一个文件夹内的所有 PDF 文件,并将去重后的文件保存到另一个文件夹。

命令格式:

python remove_duplicates.py <输入文件夹路径> <输出文件夹路径>

示例:

python remove_duplicates.py "./scanned_docs" "./cleaned_docs"

脚本会自动在 ./cleaned_docs 文件夹中创建名为 deduplicated_... 的新文件。

3. 高级选项

您可以通过一些可选参数来微调脚本的行为。

  • --threshold-t: 相似度阈值 设置一个整数来定义页面相似度的判断标准。默认值为 5

    • 0: 只有完全一模一样的图片才算重复。
    • 1-5: 比较严格,适用于页面内容几乎没有变化的情况。
    • > 5: 比较宽松,可以容忍页面上的一些轻微差异(如页眉页脚的微小变动)。

    示例 (使用更严格的阈值):

    python remove_duplicates.py "report.pdf" "report_strict.pdf" --threshold 2
  • --pattern-p: 文件匹配模式 在批量处理模式下,使用通配符来筛选需要处理的文件。默认值为 *.pdf (所有pdf文件)。

    示例 (只处理文件名以 'chapter_' 开头的文件):

    python remove_duplicates.py "./my_book" "./my_book_cleaned" --pattern "chapter_*.pdf"

📄 许可证

本项目采用 MIT 许可证

About

这是一个 Python 脚本,用于自动识别并删除 PDF 文件中重复或高度相似的页面。它通过将页面转换为图像并比较它们的感知哈希值来实现,非常适合清理扫描的文档、报告或任何可能包含冗余页面的 PDF 文件。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages