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 modulofitz
.
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 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