Como Extrair Todas as Imagens de um PDF com Python
Como Extrair Todas as Imagens de um PDF com Python
A extração de imagens embutidas em arquivos PDF costuma exigir o parsing de objetos gráficos complexos do formato. Utilizando a biblioteca
PyMuPDF (módulo fitz), é possível localizar os contêineres de imagem em cada página e salvar os arquivos brutos diretamente no disco sem perder a qualidade original. Essa abordagem resolve a necessidade de automatizar a raspagem de ativos visuais em relatórios, livros e documentos digitalizados.Python
import os
import fitz # PyMuPDF
def extrair_imagens_pdf(caminho_pdf, pasta_destino="imagens_extraidas"):
# Garante que a pasta de destino exista
os.makedirs(pasta_destino, exist_ok=True)
# Abre o arquivo PDF
documento = fitz.open(caminho_pdf)
contador = 0
# Percorre cada página do documento
for num_pagina in range(len(documento)):
pagina = documento[num_pagina]
lista_imagens = pagina.get_images(full=True)
# Itera sobre todas as imagens encontradas na página atual
for idx, img in enumerate(lista_imagens):
xref = img[0] # Referência do objeto de imagem no PDF
# Extrai os dados brutos da imagem
imagem_base = documento.extract_image(xref)
bytes_imagem = imagem_base["image"]
extensao = imagem_base["ext"] # Extensão original (png, jpeg, etc.)
# Define o nome e salva o arquivo no disco
nome_arquivo = f"pag_{num_pagina + 1}_img_{idx + 1}.{extensao}"
caminho_completo = os.path.join(pasta_destino, nome_arquivo)
with open(caminho_completo, "wb") as f:
f.write(bytes_imagem)
contador += 1
documento.close()
print(f"Extração concluída! {contador} imagem(ns) salva(s) em '{pasta_destino}'.")
# Exemplo prático de execução
if __name__ == "__main__":
# Substitua pelo caminho do seu arquivo PDF
extrair_imagens_pdf("documento_exemplo.pdf")
- Desempenho com C (
PyMuPDF): A bibliotecafitzé um wrapper sobre o motor C MuPDF, tornando o processo de leitura e renderização drasticamente mais rápido que outras bibliotecas puramente em Python. - Preservação de Formato Nativo: O método
extract_image(xref)obtém os bytes nativos da imagem e sua extensão original (png,jpeg,tiff), sem a necessidade de reprocessar ou recompactar a imagem. - Referência
xref: Trata-se do número identificador do objeto dentro da estrutura do PDF. Usar oxrefgarante que você está acessando a imagem exata do catálogo do arquivo. - Instalação do Pacote: O módulo é instalado via terminal executando
pip install PyMuPDF(embora seja importado no código com a instruçãoimport fitz).

Comentários
Postar um comentário