场景还原:扫描版PDF、电子书、合同归档……很多时候你只想把里面的高清图片抽出来,但导出来的PDF满屏水印也是真烦人。 |
这个脚本会逐页扫描 PDF,找出每页像素面积最大的 JPG 图片,然后把这些图片重新拼成一份新的 PDF。水印?直接被“过滤”掉了!
✅ 自动识别每页最大图片✅ 按原图分辨率输出,画质无损✅ 本地运行,数据不出机器✅ 批量处理当前目录所有 PDF |
📂 正在解析: 扫描文档.pdf ✅ 第1页最大JPG xref=5 (2480×3508) → 已添加 ✅ 第2页最大JPG xref=12 (2480×3508) → 已添加 ✅ 第3页最大JPG xref=19 (2480×3508) → 已添加 ℹ️ 第4页未找到JPG图像,已跳过 🎉 完成! 共提取 3 张JPG 📄 输出文件: 扫描文档_最大JPG提取_20260121_143022.pdf |
基于 PyMuPDF (fitz),几十行代码搞定:
# 每页提取像素面积最大的JPG for page_num in range(len(src_doc)): page = src_doc[page_num] images = page.get_images(full=True) largest_image = None max_area = 0 for img_info in images: xref = img_info[0] base_image = src_doc.extract_image(xref) ext = base_image.get("ext", "").lower() if ext not in ("jpg", "jpeg"): continue width = base_image["width"] height = base_image["height"] area = width * height if area > max_area: max_area = area largest_image = base_image # 插入新PDF页面 if largest_image: new_page = new_doc.new_page( width=width*72/150, height=height*72/150 ) new_page.insert_image( new_page.rect, stream=largest_image["image"] ) |
💡 小细节:像素转 PDF 单位时需要除以参考 DPI(这里用的 150),不然页面尺寸会大得离谱。 |
① 安装依赖:pip install pymupdf② 把脚本和 PDF 放同一目录③ 运行脚本,自动批量处理④ 生成的文件带时间戳,不会覆盖原文件 |
#PDF去水印#办公效率#Python干货#职场技能#扫描全能王平替#黑科技#程序员日常#打工人必备
完整源码已整理好 关注后回复关键词 PDF提取 获取 本地运行 · 无需上传 · 永久免费 |
—— End ——
每周分享一个实用小工具 · 让重复工作自动化