Extraer imágenes de archivos PDF con Python

Lakshay Kapoor 10 octubre 2023
  1. Instale la biblioteca PyMuPDF en Python
  2. Extraer imágenes de un archivo PDF en Python
Extraer imágenes de archivos PDF con Python

Puede realizar muchas operaciones con archivos y fuentes externos usando Python. Una de las operaciones es extraer imágenes de archivos PDF en Python, lo cual es muy útil cuando el PDF es demasiado largo y no se puede administrar manualmente.

Esta guía le muestra cómo extraer imágenes de archivos PDF en Python.

Instale la biblioteca PyMuPDF en Python

Para realizar esta operación, es necesario instalar la biblioteca PyMuPDF en Python. Esta biblioteca ayuda al usuario a tratar los archivos en formatos PDF, XPS, FB2, OpenXPS y EPUB. Es una biblioteca muy versátil conocida por su alto rendimiento y calidad de renderizado. Sin embargo, no viene preinstalado en Python. Para instalar esta biblioteca, ejecute el siguiente comando.

pip install PyMuPDF Pillow

Extraer imágenes de un archivo PDF en Python

Ahora, para extraer imágenes de un archivo PDF, existe un procedimiento paso a paso:

  • Primero, se importan todas las bibliotecas necesarias.
import fitz
import io
from PIL import Image
  • A continuación, se define la ruta al archivo del que se deben extraer las imágenes. El archivo se abre usando la función open() del módulo fitz.
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • Después de eso, cada página del archivo PDF se itera y se verifica si hay imágenes disponibles en cada página.
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)

En este paso, la función getImageList() se utiliza para extraer todas las imágenes en forma de objetos de imagen, como una lista de tuplas.

  • Luego, toda la información adicional sobre la imagen, como el tamaño de la imagen y la extensión de la imagen, se devuelve utilizando la función extractImage(). Este paso se lleva a cabo como una iteración dentro de la primera iteración en sí.
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"]

Después de combinar todos estos pasos en un solo programa, puede extraer fácilmente todas las imágenes de un archivo PDF.

Ahora, suponga que hay 5 páginas en el archivo randomfile.pdf. En esas 5 páginas, solo hay 1 imagen en la última, por ejemplo, la quinta página. Entonces, la salida se verá así.

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

Artículo relacionado - Python PDF