Extraia imagens de arquivos PDF usando Python

Lakshay Kapoor 10 outubro 2023
  1. Instale a biblioteca PyMuPDF em Python
  2. Extraia imagens de um arquivo PDF em Python
Extraia imagens de arquivos PDF usando Python

Você pode realizar muitas operações com arquivos externos e fontes usando Python. Uma das operações é extrair imagens de arquivos PDF em Python, o que é muito útil quando o PDF é muito longo e não pode ser gerenciado manualmente.

Este guia mostra como extrair imagens de arquivos PDF em Python.

Instale a biblioteca PyMuPDF em Python

Para realizar esta operação, deve-se instalar a biblioteca PyMuPDF em Python. Esta biblioteca ajuda o usuário a lidar com os arquivos nos formatos PDF, XPS, FB2, OpenXPS e EPUB. É uma biblioteca muito versátil, conhecida por seu alto desempenho e qualidade de renderização. No entanto, ele não vem pré-instalado em Python. Para instalar esta biblioteca, execute o seguinte comando.

pip install PyMuPDF Pillow

Extraia imagens de um arquivo PDF em Python

Agora, para extrair imagens de um arquivo PDF, há um procedimento passo a passo:

  • Primeiro, todas as bibliotecas necessárias são importadas.
import fitz
import io
from PIL import Image
  • Em seguida, é definido o caminho para o arquivo do qual as imagens devem ser extraídas. O arquivo é aberto usando a função open() do módulo fitz.
file_path = "randomfile.pdf"
open_file = fitz.open(file_path)
  • Depois disso, cada página do arquivo PDF é iterada e verificada se há imagens disponíveis em 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)

Nesta etapa, a função getImageList() é usada para extrair todas as imagens na forma de objetos de imagem, como uma lista de tuplas.

  • Então, todas as informações extras sobre a imagem, como o tamanho e a extensão da imagem, são retornadas usando a função extractImage(). Esta etapa é realizada como uma iteração dentro da própria primeira iteração.
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"]

Depois de combinar todas essas etapas em um único programa, você pode facilmente extrair todas as imagens de um arquivo PDF.

Agora, suponha que haja 5 páginas no arquivo randomfile.pdf. Nessas 5 páginas, existe apenas 1 imagem na última, por exemplo, a 5ª página. Portanto, a saída será semelhante a esta.

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

Artigo relacionado - Python PDF