Extraire des images de fichiers PDF à l'aide de Python

Lakshay Kapoor 10 octobre 2023
  1. Installez la bibliothèque PyMuPDF en Python
  2. Extraire des images d’un fichier PDF en Python
Extraire des images de fichiers PDF à l'aide de Python

Vous pouvez effectuer de nombreuses opérations avec des fichiers et des sources externes à l’aide de Python. L’une des opérations consiste à extraire des images de fichiers PDF en Python, ce qui est très utile lorsque le PDF est trop long et ne peut pas être géré manuellement.

Ce guide vous montre comment extraire des images de fichiers PDF en Python.

Installez la bibliothèque PyMuPDF en Python

Pour effectuer cette opération, il faut installer la librairie PyMuPDF en Python. Cette bibliothèque aide l’utilisateur à traiter les fichiers aux formats PDF, XPS, FB2, OpenXPS et EPUB. C’est une bibliothèque très polyvalente connue pour ses hautes performances et sa qualité de rendu. Cependant, il n’est pas pré-installé dans Python. Pour installer cette bibliothèque, exécutez la commande suivante.

pip install PyMuPDF Pillow

Extraire des images d’un fichier PDF en Python

Maintenant, pour extraire des images d’un fichier PDF, il existe une procédure par étapes :

  • Tout d’abord, toutes les bibliothèques nécessaires sont importées.
import fitz
import io
from PIL import Image
  • Ensuite, le chemin vers le fichier à partir duquel les images doivent être extraites est défini. Le fichier est ouvert à l’aide de la fonction open() du module fitz.
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • Après cela, chaque page du fichier PDF est itérée et vérifiée s’il y a des images disponibles sur chaque page.
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)

Dans cette étape, la fonction getImageList() permet d’extraire toutes les images sous forme d’objets image, sous forme de liste de tuples.

  • Ensuite, toutes les informations supplémentaires sur l’image, comme la taille de l’image et l’extension de l’image, sont renvoyées en utilisant la fonction extractImage(). Cette étape est réalisée comme une itération à l’intérieur de la première itération elle-même.
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"]

Après avoir combiné toutes ces étapes en un seul programme, vous pouvez facilement extraire toutes les images d’un fichier PDF.

Maintenant, supposons qu’il y ait 5 pages dans le fichier randomfile.pdf. Dans ces 5 pages, il n’y a qu’une seule image dans la dernière, par exemple, la 5ème page. Ainsi, la sortie ressemblera à ceci.

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
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

Article connexe - Python PDF