Python 获取PDF中的图片

在处理PDF文件时,我们经常需要从PDF中提取图片。这在许多场景中都非常有用,例如在数据分析、机器学习或简单的文档处理中。Python提供了许多库来帮助我们实现这一目标。本文将介绍如何使用Python从PDF文件中提取图片。

环境准备

在开始之前,我们需要安装一些必要的库。我们主要使用PyMuPDF(也称为fitz)和Pillow(PIL的更新版)来实现提取图片的功能。

pip install PyMuPDF Pillow
  • 1.

基本思路

从PDF中提取图片的基本思路如下:

  1. 使用PyMuPDF打开PDF文件。
  2. 遍历PDF的每一页。
  3. 获取每一页中的图片信息。
  4. 使用Pillow将图片保存到本地。

代码示例

下面是一个简单的代码示例,展示如何从PDF文件中提取图片。

import fitz  # PyMuPDF
from PIL import Image
import os

def extract_images_from_pdf(pdf_path, output_dir):
    # 确保输出目录存在
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 打开PDF文件
    doc = fitz.open(pdf_path)
    page_count = doc.page_count

    for page_num in range(page_count):
        page = doc.load_page(page_num)

        # 获取页面中的图片
        image_list = page.get_images(full=True)

        for image_index, img_info in enumerate(image_list):
            xref = img_info[0]
            base_image = doc.extract_image(xref)
            image_bytes = base_image["image"]
            
            # 使用Pillow打开图片
            image = Image.open(io.BytesIO(image_bytes))
            
            # 保存图片
            image_path = os.path.join(output_dir, f"image_{page_num+1}_{image_index+1}.png")
            image.save(image_path)
            print(f"Saved: {image_path}")

    doc.close()

# 使用示例
pdf_path = "example.pdf"
output_dir = "extracted_images"
extract_images_from_pdf(pdf_path, output_dir)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.

表格示例

以下是提取图片的步骤的表格示例:

步骤描述
1使用PyMuPDF打开PDF文件
2遍历PDF的每一页
3获取每一页中的图片信息
4使用Pillow将图片保存到本地
| 步骤 | 描述 |
| ---- | ---- |
| 1    | 使用`PyMuPDF`打开PDF文件 |
| 2    | 遍历PDF的每一页 |
| 3    | 获取每一页中的图片信息 |
| 4    | 使用`Pillow`将图片保存到本地 |
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

甘特图

以下是提取图片的步骤的甘特图:

gantt
    title 提取PDF中的图片
    dateFormat  YYYY-MM-DD
    section 步骤1: 打开PDF文件
    打开PDF文件 :done, des1, 2023-03-01,2023-03-02
    
    section 步骤2: 遍历PDF的每一页
    遍历PDF的每一页 :active, des2, 2023-03-03, 3d
    
    section 步骤3: 获取每一页中的图片信息
    获取图片信息 : des3, after des2, 1d
    
    section 步骤4: 保存图片
    保存图片 : des4, after des3, 1d

结尾

通过本文,我们学习了如何使用Python从PDF文件中提取图片。这个过程涉及到使用PyMuPDFPillow库。我们提供了一个简单的代码示例,以及一个表格和甘特图来展示提取图片的步骤。希望本文能帮助你更好地理解和实现从PDF中提取图片的需求。如果你有任何问题或建议,请随时联系我们。