Python – Extraer imágenes documento PDF
Vamos un ejemplo en Python para extraer imágenes de un documento PDF con la librería MyMuPDF.
Instalación librería PDF
Para poder trabajar con documentos PDF en Python hay varias librerías, nosotros hemos elegido PyMuPdf. Para instalarla, deberemos ejecutar la siguiente instrucción en consola:
pip install --upgrade pymupdf
Utilizamos PIP para instalar la librería. Podemos ver una captura como ejemplo:
Extraer imágenes de PDF
Al igual que hicimos en el ejemplo en Python para extraer el texto de un documento PDF, en éste veremos un ejemplo en Python para extraer imágenes de un documento PDF con la librería MyMuPDF
doc = fitz.open("test.pdf") # Abrimos documento
for page_index in range(len(doc)): # Miramos todas las páginas del PDF
page = doc[page_index] # Tratamos la página
image_list = page.get_images() # Miramos todas las imágenes de la página
# Mostramos el número de imágenes encontradas
if image_list:
print(f"Encontradas {len(image_list)} imágenes en página {page_index}")
else:
print("Esta página no contiene imágenes", page_index)
for image_index, img in enumerate(image_list, start=1): # Enumeramos páginas
xref = img[0] # XREF de la imagen
pix = fitz.Pixmap(doc, xref) # creamos Pixmap
if pix.n - pix.alpha > 3: # CMYK: convertimos a RGB
pix = fitz.Pixmap(fitz.csRGB, pix)
pix.save("page_%s-image_%s.png" % (page_index, image_index)) # guardamos
pix = None
Vamos leyendo todas las páginas del documento PDF, y página a página extraemos las imágenes y las vamos guardando como fichero PNG.
Puede optimizarse más y trabajar el almacenar las imágenes en otro formato de imágen, editarlas para cambiar las dimensiones…. pero eso lo trataremos en otro artículo.
Espero que os haya sido de utilidad. Y ya podéis completar el código Python para mostrar un menú por consola para ir creando un scrypt de utilidades para ficheros PDF.
Como empecé la casa por la ventana, me he apuntado el facilitar la herramienta básica para desarrollar en Python, el editor. En nuestro caso, hablaremos de PyCharm Community.
Més información