Estrai immagini da file PDF usando Python

Lakshay Kapoor 10 ottobre 2023
  1. Installa la libreria PyMuPDF in Python
  2. Estrai immagini da un file PDF in Python
Estrai immagini da file PDF usando Python

Puoi eseguire molte operazioni con file e sorgenti esterni usando Python. Una delle operazioni è l’estrazione di immagini da file PDF in Python, cosa molto utile ogni volta che il PDF è troppo lungo e non può essere gestito manualmente.

Questa guida ti mostra come estrarre immagini da file PDF in Python.

Installa la libreria PyMuPDF in Python

Per eseguire questa operazione è necessario installare la libreria PyMuPDF in Python. Questa libreria aiuta l’utente a gestire i file nei formati PDF, XPS, FB2, OpenXPS e EPUB. È una libreria molto versatile nota per le sue alte prestazioni e qualità di rendering. Tuttavia, non è preinstallato in Python. Per installare questa libreria, eseguire il comando seguente.

pip install PyMuPDF Pillow

Estrai immagini da un file PDF in Python

Ora, per estrarre le immagini da un file PDF, esiste una procedura graduale:

  • Innanzitutto, vengono importate tutte le librerie necessarie.
import fitz
import io
from PIL import Image
  • Successivamente viene definito il percorso del file da cui estrarre le immagini. Il file viene aperto utilizzando la funzione open() del modulo fitz.
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • Successivamente, ogni pagina del file PDF viene iterata e verificata se sono disponibili immagini su ciascuna pagina.
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)

In questo passaggio, la funzione getImageList() viene utilizzata per estrarre tutte le immagini sotto forma di oggetti immagine, come un elenco di tuple.

  • Quindi, tutte le informazioni extra sull’immagine, come la dimensione dell’immagine e l’estensione dell’immagine, vengono restituite utilizzando la funzione extractImage(). Questo passaggio viene eseguito come un’iterazione all’interno della prima iterazione stessa.
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"]

Dopo aver combinato tutti questi passaggi in un unico programma, puoi estrarre facilmente tutte le immagini da un file PDF.

Supponiamo ora che ci siano 5 pagine nel file randomfile.pdf. In quelle 5 pagine, c’è solo 1 immagine nell’ultima, ad esempio la 5a pagina. Quindi, l’output sarà simile a questo.

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

Articolo correlato - Python PDF