在日常工作中,小李经常需要从大量的PDF文档中提取图片。这些PDF可能是项目报告、设计稿或者扫描件,而手动提取图片显然是一项耗时又低效的工作。于是,他决定借助Python来解决这个问题。今天,我们就跟随小李的脚步,一起学习如何用Python批量提取PDF中的图片,并将其存储到指定文件夹。
准备工作
首先,小李安装了两个关键的库:PyPDF2 和 PIL(Pillow)。这两个库分别用于解析PDF文件和处理图片。如果尚未安装,可以通过以下命令快速完成:
pip install PyPDF2 Pillow代码实现
接下来,小李编写了一个简单的脚本,用于遍历PDF文件中的所有页面,提取其中的图片并保存到指定目录。以下是完整的代码:
import os
from PyPDF2 import PdfReader
from PIL import Image
import io
def extract_images_from_pdf(pdf_path, output_folder):
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
pdf = PdfReader(pdf_path)
page_count = len(pdf.pages)
image_count = 0
for page_num in range(page_count):
page = pdf.pages[page_num]
if '/XObject' in page['/Resources']:
xObject = page['/Resources']['/XObject'].get_object()
for obj in xObject:
if xObject[obj]['/Subtype'] == '/Image':
size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
data = xObject[obj].get_data()
image = Image.open(io.BytesIO(data))
image_path = os.path.join(output_folder, f"image_{image_count}.png")
image.save(image_path)
image_count += 1
if __name__ == "__main__":
pdf_file = 'example.pdf' # PDF文件路径
output_dir = 'extracted_images' # 输出文件夹
extract_images_from_pdf(pdf_file, output_dir)运行效果
小李将上述代码保存为一个Python脚本,并运行它。很快,所有的图片都被成功提取出来,并整齐地存放在指定的文件夹中。这一过程不仅节省了大量的时间,还避免了人为操作可能带来的错误。
进一步优化
虽然这个脚本已经非常实用,但小李还想让它更加智能。例如,支持批量处理多个PDF文件,或者根据图片类型自动命名。经过一番努力,他成功实现了这些功能,并将代码分享到了GitHub上,供更多人使用。
总结
通过这次实践,小李深刻体会到了Python的强大与灵活。无论是数据处理还是自动化任务,Python都能轻松胜任。如果你也遇到类似的需求,不妨试试这种方法,相信你会有同样的惊喜!
发表评论 取消回复