用Python玩转PDF:批量提取图片并存储到指定文件夹的高效方法

在日常工作中,小李经常需要从大量的PDF文档中提取图片。这些PDF可能是项目报告、设计稿或者扫描件,而手动提取图片显然是一项耗时又低效的工作。于是,他决定借助Python来解决这个问题。今天,我们就跟随小李的脚步,一起学习如何用Python批量提取PDF中的图片,并将其存储到指定文件夹。


准备工作


首先,小李安装了两个关键的库:PyPDF2PIL(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都能轻松胜任。如果你也遇到类似的需求,不妨试试这种方法,相信你会有同样的惊喜!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部