如何提取多份PDF文件中包含图片的完整页面?
提取PDF中包含图片的完整页面方法
命令行工具方案(适合快速单文件处理)
- 组合
pdfgrep和pdftk工具,先定位含图片的页码,再提取对应页面- 安装工具:
- Ubuntu/Debian:
sudo apt install pdfgrep pdftk - macOS:
brew install pdfgrep pdftk-java
- Ubuntu/Debian:
- 检测含图片的页码:
执行命令:pdfgrep -n "/Subtype /Image" input.pdf
输出会显示所有包含图片的页码(格式类似2:/Subtype /Image),手动整理出页码列表(比如2,5,7) - 提取目标页面:
pdftk input.pdf cat 2 5 7 output pages_with_images.pdf
- 安装工具:
Python脚本方案(适合批量自动化处理)
用pdfplumber检测页面内的图片,结合PyPDF2提取对应页面,代码示例:
import pdfplumber from PyPDF2 import PdfWriter, PdfReader import os # 批量处理指定目录下的所有PDF input_dir = "./your_pdf_dir" output_dir = "./output_images_pages" os.makedirs(output_dir, exist_ok=True) for filename in os.listdir(input_dir): if not filename.endswith(".pdf"): continue input_path = os.path.join(input_dir, filename) output_path = os.path.join(output_dir, f"img_pages_{filename}") writer = PdfWriter() reader = PdfReader(input_path) for page_idx in range(len(reader.pages)): with pdfplumber.open(input_path) as pdf: pdf_page = pdf.pages[page_idx] # 判断当前页面是否包含图片 if len(pdf_page.images) > 0: writer.add_page(reader.pages[page_idx]) with open(output_path, "wb") as out_file: writer.write(out_file) print(f"处理完成:{filename}")
使用前先安装依赖:pip install pdfplumber PyPDF2
注意事项
- 加密PDF需要先解密才能进行检测和提取
- 扫描版PDF(整页是图片的PDF)无法用上述方法检测,这类PDF本身就是图片载体,若需要提取可直接导出所有页面
内容的提问来源于stack exchange,提问作者xxgaryxx
相关产品推荐
相关产品推荐

