You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pdfminer.six从PDF文件中提取内嵌图片

用pdfminer.six提取PDF中图片的实现方法

你当前使用的TextConverter仅用于提取文本内容,无法捕获PDF中的图片元素。要提取图片需要改用PDFPageAggregator获取完整的页面布局结构,筛选识别其中的LTImage类型的图片对象,导出其二进制流即可。

实现步骤

  1. 导入所需依赖,将原来的TextConverter替换为PDFPageAggregator,同时引入LTImage类型判断
  2. 遍历每一页的布局元素,筛选出图片元素后将其二进制数据写入本地文件
  3. 按页码和序号对提取的图片进行命名,避免重名覆盖

完整实现代码

import os
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTImage
from pdfminer.pdfpage import PDFPage

def extract_images_from_pdf(pdf_path, output_dir='extracted_images'):
    # 自动创建图片输出目录
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    rsrcmgr = PDFResourceManager()
    laparams = LAParams()
    # 聚合器用于获取页面完整布局对象
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    
    fp = open(pdf_path, 'rb')
    img_total = 0

    # 遍历PDF每一页
    for page_idx, page in enumerate(PDFPage.get_pages(fp, check_extractable=True)):
        interpreter.process_page(page)
        layout = device.get_result()
        
        # 遍历页面所有元素,筛选图片
        for elem in layout:
            if isinstance(elem, LTImage):
                img_total += 1
                # 自动获取图片格式,默认取jpeg
                img_format = elem.attrs.get("Subtype", "jpeg").lower()
                save_path = os.path.join(output_dir, f"第{page_idx+1}页_图片{img_total}.{img_format}")
                # 写入图片二进制数据
                with open(save_path, 'wb') as img_f:
                    img_f.write(elem.stream.get_data())

    fp.close()
    device.close()
    print(f"提取结束,共提取到{img_total}张图片,已保存至{output_dir}目录")

# 调用示例,和你原有路径保持一致
os.chdir('C:\\Users\\zone_\\Desktop')
extract_images_from_pdf('example.pdf')

注意事项

  • 部分PDF中的图片可能是由多个矢量图形元素拼接而成,不会被识别为LTImage对象,这种情况无法用该方法提取
  • 如果导出的图片无法正常打开,可以手动修改文件后缀为jpg、png、tiff等常见图片格式测试

内容的提问来源于stack exchange,提问作者user15235239

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:09:04