Extrair dados de arquivos PDF com Python é uma tarefa bastante útil para automatizar relatórios, documentos, notas fiscais, contratos, tabelas e grandes volumes de informação.
Entre as bibliotecas mais utilizadas atualmente estão PyMuPDF, pypdf e pdfplumber. O PyMuPDF, em particular, oferece extração de texto, tabelas, imagens, metadados e até OCR para PDFs digitalizados.
Neste tutorial, vamos mostrar como criar um pequeno projeto Python para extrair informações de um PDF e colocar o código no GitHub.
1. Instale o Python
Primeiro, tenha o Python instalado no computador.
Depois, abra o terminal ou Prompt de Comando e verifique:
python --version
Em alguns sistemas, pode ser necessário utilizar:
python3 --version
2. Crie uma pasta para o projeto
Crie uma pasta para o programa:
extrator-pdf
Dentro dela, podemos organizar o projeto assim:
extrator-pdf/
├── main.py
├── documento.pdf
├── resultado.txt
└── requirements.txt
O arquivo main.py será responsável pela extração.
3. Instale o PyMuPDF
Uma das opções mais práticas atualmente é o PyMuPDF.
Instale utilizando:
pip install pymupdf
O projeto oficial disponibiliza o pacote para instalação pelo pip e possui suporte para extração de texto, tabelas, imagens e OCR.
4. Extraindo texto do PDF
Crie o arquivo:
main.py
Coloque:
import pymupdf
pdf = pymupdf.open("documento.pdf")
for pagina in pdf:
texto = pagina.get_text()
print(texto)
pdf.close()
Agora execute:
python main.py
O programa abrirá o PDF e imprimirá no terminal o texto encontrado em cada página.
5. Salvar o texto em um arquivo
Em vez de apenas mostrar o conteúdo no terminal, podemos salvar tudo em um arquivo .txt.
import pymupdf
pdf = pymupdf.open("documento.pdf")
with open("resultado.txt", "w", encoding="utf-8") as arquivo:
for numero, pagina in enumerate(pdf, start=1):
texto = pagina.get_text()
arquivo.write(f"\n===== PÁGINA {numero} =====\n\n")
arquivo.write(texto)
pdf.close()
print("Extração concluída!")
Depois de executar:
python main.py
será criado:
resultado.txt
6. Extrair apenas uma página
Também é possível trabalhar somente com uma página específica.
Por exemplo, a primeira página:
import pymupdf
pdf = pymupdf.open("documento.pdf")
pagina = pdf[0]
texto = pagina.get_text()
print(texto)
pdf.close()
No Python, a primeira página corresponde ao índice 0.
Portanto:
pdf[0]
representa a primeira página.
7. Extrair uma página específica
Para extrair, por exemplo, a página 5:
import pymupdf
pdf = pymupdf.open("documento.pdf")
pagina = pdf[4]
print(pagina.get_text())
pdf.close()
Isso acontece porque a numeração começa em zero:
Índice 0 → Página 1
Índice 1 → Página 2
Índice 2 → Página 3
Índice 3 → Página 4
Índice 4 → Página 5
8. Descobrir quantas páginas existem
Você também pode descobrir automaticamente o número de páginas:
import pymupdf
pdf = pymupdf.open("documento.pdf")
print("Número de páginas:", len(pdf))
pdf.close()
Isso é útil para criar programas que processam documentos de qualquer tamanho.
9. Extrair dados de uma tabela
O PyMuPDF também possui recursos para localizar tabelas dentro das páginas.
Um exemplo:
import pymupdf
pdf = pymupdf.open("documento.pdf")
for numero, pagina in enumerate(pdf, start=1):
tabelas = pagina.find_tables()
if tabelas.tables:
print(f"Tabelas encontradas na página {numero}")
for tabela in tabelas.tables:
print(tabela.extract())
pdf.close()
Isso é especialmente interessante para PDFs contendo:
- Tabelas financeiras;
- Listas de produtos;
- Relatórios;
- Notas;
- Dados estatísticos;
- Planilhas exportadas para PDF.
10. Transformar uma tabela em DataFrame
Se você trabalha com análise de dados, pode transformar uma tabela encontrada no PDF em um DataFrame do Pandas.
import pymupdf
pdf = pymupdf.open("documento.pdf")
pagina = pdf[0]
tabelas = pagina.find_tables()
if tabelas.tables:
tabela = tabelas.tables[0]
df = tabela.to_pandas()
print(df)
pdf.close()
A partir daí, você pode utilizar normalmente o Pandas para:
df.head()
df.describe()
df.to_csv("dados.csv", index=False)
11. Extrair informações específicas
Imagine que o PDF contenha:
Nome: Alexandre
Idade: 35
Cidade: Rio de Janeiro
Você pode extrair todo o texto e depois procurar determinados termos.
import pymupdf
pdf = pymupdf.open("documento.pdf")
texto_completo = ""
for pagina in pdf:
texto_completo += pagina.get_text()
if "Nome:" in texto_completo:
print("O documento possui informação de nome.")
if "Cidade:" in texto_completo:
print("O documento possui informação de cidade.")
pdf.close()
Isso permite criar sistemas automatizados para localizar informações dentro de documentos.
12. Utilizando expressões regulares
Para extrair informações estruturadas, o módulo re do Python pode ser muito útil.
Por exemplo:
import pymupdf
import re
pdf = pymupdf.open("documento.pdf")
texto = ""
for pagina in pdf:
texto += pagina.get_text()
cpf = re.search(r"\d{3}\.\d{3}\.\d{3}-\d{2}", texto)
if cpf:
print("CPF encontrado:", cpf.group())
pdf.close()
Você pode adaptar as expressões regulares para procurar:
- CPF;
- CNPJ;
- CEP;
- datas;
- valores;
- números de documentos;
- códigos;
- e-mails;
- telefones.
13. Extrair e-mails do PDF
Por exemplo:
import pymupdf
import re
pdf = pymupdf.open("documento.pdf")
texto = ""
for pagina in pdf:
texto += pagina.get_text()
emails = re.findall(
r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}",
texto
)
for email in emails:
print(email)
pdf.close()
Assim, o programa procura automaticamente todos os endereços de e-mail encontrados no documento.
14. Extrair imagens do PDF
O PyMuPDF também permite acessar imagens incorporadas no PDF.
Exemplo:
import pymupdf
import os
pdf = pymupdf.open("documento.pdf")
os.makedirs("imagens", exist_ok=True)
for numero_pagina, pagina in enumerate(pdf):
imagens = pagina.get_images()
for numero_imagem, imagem in enumerate(imagens):
xref = imagem[0]
pix = pymupdf.Pixmap(pdf, xref)
if pix.n > 4:
pix = pymupdf.Pixmap(pymupdf.csRGB, pix)
nome = f"imagens/pagina_{numero_pagina + 1}_imagem_{numero_imagem + 1}.png"
pix.save(nome)
pdf.close()
O resultado será uma pasta:
imagens/
├── pagina_1_imagem_1.png
├── pagina_1_imagem_2.png
├── pagina_2_imagem_1.png
└── ...
15. Quando o PDF é escaneado
Existe uma diferença importante entre dois tipos de PDF.
Um PDF pode conter texto real:
PDF
↓
Texto selecionável
↓
Python consegue extrair
Ou pode ser simplesmente uma imagem digitalizada:
PDF
↓
Imagem
↓
Nenhum texto real
Nesse segundo caso, get_text() pode retornar pouco ou nenhum conteúdo.
É necessário utilizar OCR, reconhecimento óptico de caracteres. O PyMuPDF possui suporte a OCR através do Tesseract.
Um exemplo básico:
import pymupdf
pdf = pymupdf.open("documento-escaneado.pdf")
for pagina in pdf:
pagina_texto = pagina.get_textpage_ocr()
texto = pagina.get_text(textpage=pagina_texto)
print(texto)
pdf.close()
Para esse recurso, o ambiente precisa ter os dados necessários do Tesseract disponíveis.
16. Outra opção: pypdf
Outra biblioteca bastante conhecida é o pypdf.
Instalação:
pip install pypdf
Uso básico:
from pypdf import PdfReader
reader = PdfReader("documento.pdf")
for pagina in reader.pages:
texto = pagina.extract_text()
print(texto)
O pypdf é uma biblioteca Python voltada para manipulação de PDF e também oferece extração de texto e metadados.
17. PyMuPDF ou pypdf?
Para uma tarefa simples de extração de texto, ambas podem funcionar.
| Biblioteca | Melhor utilização |
|---|---|
| PyMuPDF | Texto, tabelas, imagens, OCR e processamento geral |
| pypdf | Extração de texto e manipulação de PDFs |
| pdfplumber | Texto, estrutura e tabelas |
O PyMuPDF é uma escolha particularmente interessante quando o projeto precisa trabalhar com diferentes elementos do PDF, não apenas texto.
18. Usando pdfplumber
O pdfplumber também é bastante utilizado para extração detalhada de texto e tabelas.
Instale:
pip install pdfplumber
Depois:
import pdfplumber
with pdfplumber.open("documento.pdf") as pdf:
for pagina in pdf.pages:
texto = pagina.extract_text()
print(texto)
Para tabelas:
import pdfplumber
with pdfplumber.open("documento.pdf") as pdf:
for pagina in pdf.pages:
tabelas = pagina.extract_tables()
for tabela in tabelas:
for linha in tabela:
print(linha)
19. Criando o requirements.txt
Para colocar o projeto no GitHub, é interessante criar:
requirements.txt
Por exemplo:
pymupdf
Se utilizar Pandas:
pymupdf
pandas
Assim, outra pessoa poderá instalar as dependências com:
pip install -r requirements.txt
20. Criando o .gitignore
Não é uma boa ideia enviar todos os PDFs para o GitHub, especialmente se forem documentos particulares.
Crie:
.gitignore
E coloque:
*.pdf
*.txt
__pycache__/
.venv/
venv/
Dessa maneira, os documentos utilizados localmente não serão adicionados acidentalmente ao repositório.
21. Criando o repositório no GitHub
Depois de criar o projeto, inicialize o Git:
git init
Adicione os arquivos:
git add .
Faça o primeiro commit:
git commit -m "Criar extrator de dados de PDF"
Depois associe o projeto ao seu repositório GitHub e envie os arquivos:
git branch -M main
git push -u origin main
O repositório poderá conter:
extrator-pdf/
├── main.py
├── requirements.txt
├── .gitignore
└── README.md
22. Crie um README.md
Um projeto no GitHub fica muito mais fácil de entender quando possui um README.
Exemplo:
# Extrator de Dados de PDF
Projeto em Python para extrair texto e dados de arquivos PDF.
## Instalação
```bash
pip install -r requirements.txt
```
## Utilização
Coloque o PDF na pasta do projeto com o nome:
documento.pdf
Depois execute:
```bash
python main.py
```
O texto extraído será exibido no terminal.
23. Um extrator completo simples
Podemos juntar tudo em um programa mais organizado:
import pymupdf
import sys
from pathlib import Path
def extrair_pdf(caminho):
arquivo = Path(caminho)
if not arquivo.exists():
print("Arquivo não encontrado.")
return
if arquivo.suffix.lower() != ".pdf":
print("O arquivo precisa ser um PDF.")
return
pdf = pymupdf.open(arquivo)
texto_total = []
for numero, pagina in enumerate(pdf, start=1):
texto = pagina.get_text()
texto_total.append(
f"\n===== PÁGINA {numero} =====\n\n{texto}"
)
pdf.close()
resultado = "\n".join(texto_total)
saida = arquivo.with_suffix(".txt")
with open(saida, "w", encoding="utf-8") as arquivo_saida:
arquivo_saida.write(resultado)
print(f"Extração concluída: {saida}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Uso: python main.py documento.pdf")
sys.exit(1)
extrair_pdf(sys.argv[1])
Agora você pode executar:
python main.py documento.pdf
E o programa criará automaticamente:
documento.txt
24. Transformando o projeto em uma ferramenta
A partir desse código, dá para evoluir bastante o projeto.
Por exemplo:
PDF
↓
Python
↓
Extração de texto
↓
Identificação de dados
↓
Banco de dados
↓
CSV / Excel
↓
API
↓
Inteligência artificial
Você pode criar um sistema que recebe centenas de PDFs, identifica informações específicas e transforma tudo em dados estruturados.
Conclusão
Extrair dados de PDF usando Python não precisa ser complicado.
Para começar, o PyMuPDF oferece uma solução bastante completa para trabalhar com texto, tabelas, imagens e OCR.
O fluxo básico é:
Python
↓
PyMuPDF
↓
Abrir PDF
↓
Ler páginas
↓
Extrair texto
↓
Identificar informações
↓
Salvar os dados
↓
Enviar o código para o GitHub
Para PDFs simples, poucas linhas de Python já são suficientes. Para documentos complexos, é possível avançar para extração de tabelas, OCR, expressões regulares, Pandas, bancos de dados e processamento automático de centenas ou milhares de documentos.
Por: Alexandre lavrador. Opinião do Blogueiro.
Por favor, não esqueça de colocar este link como Referência Bibliográfica em sua Publicação:
Assistir Online Grátis Como Extrair Dados de PDF Usando Python e GitHub, Ver Online de Graça Como Extrair Dados de PDF Usando Python e GitHub, Filme Online Grátis Como Extrair Dados de PDF Usando Python e GitHub, Assistir Online de Graça Como Extrair Dados de PDF Usando Python e GitHub, Filme Completo de Graça Como Extrair Dados de PDF Usando Python e GitHub, Assista o que é Como Extrair Dados de PDF Usando Python e GitHub? Entenda a notícia sobre o que aconteceu sobre Como Extrair Dados de PDF Usando Python e GitHub.
Caso o título Como Extrair Dados de PDF Usando Python e GitHub esteja protegido por direitos autorais, você assistirá, neste artigo, a um filme gratuito disponível no YouTube que seja o mais parecido, sem ferir os direitos autorais de Como Extrair Dados de PDF Usando Python e GitHub. Aqui no Flogão, funciona de forma semelhante à banca de sucos do Chaves: “-O que parece de limão é de groselha e tem gosto de tamarindo. -Isso isso isso isso...”