Como Extrair Dados Numéricos de Formulários PDF para Excel com Python

Como Extrair Dados Numéricos de Formulários PDF para Excel com Python

Digitar manualmente dados numéricos contidos em dezenas de formulários PDF diretamente em planilhas do Excel é uma tarefa lenta, repetitiva e altamente suscetível a falhas humanas. Um único dígito digitado incorretamente em um relatório financeiro ou formulário operacional pode comprometer análises inteiras.

Quando lidamos com lotes de 10, 50 ou centenas de documentos PDF padronizados, a solução mais eficiente envolve o desenvolvimento de um pipeline automatizado com Python. A seguir, você entenderá a arquitetura e o passo a passo técnico para ler formulários em lote, identificar campos numéricos e estruturá-los perfeitamente em arquivos Excel.


O Desafio da Extração Numérica em PDFs

Documentos em PDF foram concebidos para visualização e impressão, não para manipulação estruturada de dados. Em formulários preenchidos, existem duas situações comuns:

  1. Campos de formulário interativos (AcroForms): os valores estão associados a chaves de formulário específicas na estrutura interna do PDF.
  2. Texto impresso padronizado: o texto está distribuído por coordenadas visuais, exigindo leitura espacial ou busca por padrões textuais (Regex).

Para garantir que apenas valores numéricos válidos sejam capturados (como valores monetários, quantidades, códigos e porcentagens), a sanitização e validação dos dados antes da escrita na planilha são cruciais.


A Pilha Tecnológica Recomendada

Para atingir alto desempenho e confiabilidade, utilizamos a seguinte combinação:

  • pdfplumber / pypdf: para leitura e extração cirúrgica de texto e campos de formulário.
  • re (Expressões Regulares): para isolar números, tratando vírgulas, pontos decimais e símbolos monetários.
  • pandas: para estruturação em matriz tabular e exportação direta para .xlsx via openpyxl.

Passo a Passo Técnico da Automação

1. Mapeamento e Leitura em Lote

O primeiro passo consiste em iterar pelo diretório de arquivos e acessar o conteúdo de cada PDF de forma programática.

2. Sanitização Numérica

Campos que representam dinheiro ou quantidades podem conter caracteres como R$, $, % ou espaços em branco. O pipeline deve normalizar esses valores para tipos numéricos nativos (float ou int), garantindo que fórmulas continuem funcionando no Excel.

3. Exemplo Prático de Implementação

Veja um exemplo simplificado de extração de campos em lote utilizando pdfplumber e pandas:

python
import os
import re
import pdfplumber
import pandas as pd

def extrairnumerosdopdf(caminhopdf):
dados = {“arquivo”: os.path.basename(caminho_pdf)}

with pdfplumber.open(caminho_pdf) as pdf:
    texto_completo = "n".join([pagina.extract_text() or "" for pagina in pdf.pages])

# Exemplos de padrões: capturar valores precedidos de rótulos específicos
padrao_valor_total = r"Valor Total:s*R?$?s*([d.,]+)"
padrao_quantidade = r"Quantidade:s*(d+)"

match_valor = re.search(padrao_valor_total, texto_completo)
match_qtd = re.search(padrao_quantidade, texto_completo)

# Tratamento de formato numérico brasileiro para float padrão
if match_valor:
    valor_str = match_valor.group(1).replace(".", "").replace(",", ".")
    dados["valor_total"] = float(valor_str)
else:
    dados["valor_total"] = None

dados["quantidade"] = int(match_qtd.group(1)) if match_qtd else None

return dados

def processarloteparaexcel(pastaorigem, caminhosaidaexcel):
registros = [] for arquivo in os.listdir(pastaorigem):
if arquivo.lower().endswith(“.pdf”):
caminho
completo = os.path.join(pastaorigem, arquivo)
registros.append(extrair
numerosdopdf(caminho_completo))

df = pd.DataFrame(registros)
df.to_excel(caminho_saida_excel, index=False)
print(f"Processamento concluído. {len(registros)} formulários salvos em {caminho_saida_excel}.")

Execução

processarloteparaexcel(“./formularios”, “relatorioconsolidado.xlsx”)


Tratamento de Inconsistências e Casos Especiais

Como especialista em IA e engenharia de dados, frequentemente encontro lotes onde o layout varia sutilmente entre versões de formulários ou onde alguns documentos foram digitalizados como imagens. Nesses cenários, a estratégia deve evoluir:

  • Formulários Digitalizados (Imagens): O uso de OCR com Tesseract ou modelos de visão computacional torna-se obrigatório para recuperar a camada de texto antes da extração.
  • Validação de Esquema: Regras de integridade (por exemplo, garantir que quantidade > 0 e valor_total bate com a soma de subitens) evitam que dados incompletos cheguem à planilha final.

Conclusão e Próximos Passos

Transformar formulários PDF estáticos em planilhas Excel consolidadas reduz custos operacionais e elimina retrabalho nas organizações. Com poucas linhas de Python bem estruturadas, processos que levariam dias são finalizados em segundos com máxima acurácia.

Se a sua empresa precisa estruturar fluxos complexos de extração de dados, lidar com formatos variáveis de documentos ou integrar processamento inteligente de PDFs aos seus sistemas internos, entre em contato para uma consultoria especializada em automação e engenharia de dados.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.