Извлечение изображений из файлов PDF с помощью Python

  1. Установите библиотеку PyMuPDF на Python
  2. Извлечение изображений из файла PDF в Python

Вы можете выполнять множество операций с внешними файлами и источниками с помощью Python. Одна из операций - извлечение изображений из файлов PDF в Python, что очень полезно, когда PDF-файл слишком длинный и не может управляться вручную.

В этом руководстве показано, как извлекать изображения из файлов PDF в Python.

Установите библиотеку PyMuPDF на Python

Для выполнения этой операции необходимо установить библиотеку PyMuPDF на Python. Эта библиотека помогает пользователю работать с файлами в форматах PDF, XPS, FB2, OpenXPS и EPUB. Это очень универсальная библиотека, известная своей высокой производительностью и качеством рендеринга. Однако он не предустановлен в Python. Чтобы установить эту библиотеку, выполните следующую команду.

pip install PyMuPDF Pillow

Извлечение изображений из файла PDF в Python

Теперь для извлечения изображений из файла PDF существует пошаговая процедура:

  • Сначала импортируются все необходимые библиотеки.
import fitz
import io
from PIL import Image
  • Затем определяется путь к файлу, из которого должны быть извлечены изображения. Файл открывается с помощью функции open() из модуля fitz.
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • После этого каждая страница файла PDF повторяется и проверяется, есть ли изображения на каждой странице.
for page_number in range(len(open_file)):
        page = pdf_file[page_number]
    list_image = page.getImageList()
    
    if list_image:
        print(f"{len(list_image)} images found on page {page_number}")
    else:
        print("No images found on page", page_number)

На этом шаге функция getImageList() используется для извлечения всех изображений в виде объектов изображений в виде списка кортежей.

  • Затем вся дополнительная информация об изображении, такая как размер изображения и расширение изображения, возвращается с помощью функции extractImage(). Этот шаг выполняется как итерация внутри самой первой итерации.
        for image_number, img in enumerate(page.getImageList(), start=1):

        xref = img[0]

        image_base = pdf_file.extractImage(xref)
        bytes_image = image_base["image"]

        ext_image = base_image["ext"]

Объединив все эти шаги в одну программу, вы можете легко извлечь все изображения из файла PDF.

Теперь предположим, что в файле randomfile.pdf 5 страниц. На этих 5 страницах есть только 1 изображение на последней, например, на 5-й странице. Итак, результат будет выглядеть так.

0 images found on page 0
0 images found on page 1
0 images found on page 2
0 images found on page 3
0 images found on page 4
1 images found on page 5

Сопутствующая статья - Python PDF

  • Читать PDF на Python