Como automatizar conciliação financeira com Python e PDF
Passo a passo técnico para extrair dados de PDFs bancários, cruzar com planilhas Excel e gerar relatórios de conciliação automaticamente.
O problema: horas perdidas cruzando dados
Empresas que lidam com alto volume de transações enfrentam o mesmo gargalo toda semana: uma pessoa abre PDFs de extratos bancários, copia valores para uma planilha, cruza com o sistema interno e passa horas procurando divergências. É um trabalho repetitivo, propenso a erro humano e que não gera nenhum valor estratégico.
A abordagem técnica
A solução usa três componentes principais:
- pdfplumber para extrair tabelas de PDFs bancários com precisão, incluindo PDFs com layouts variáveis entre bancos
- openpyxl para ler e escrever planilhas Excel, mantendo formatação existente
- Lógica de conciliação em Python puro, com regras configuráveis por tipo de transação
Lidando com variação de layout nos PDFs
O maior desafio não é a extração em si — é a inconsistência. O mesmo banco muda o layout do extrato dependendo do período, do tipo de conta ou da agência. A solução: identificar cabeçalhos de tabela dinamicamente em vez de usar coordenadas fixas, e ter fallbacks para os padrões mais comuns.
import pdfplumber
def extract_transactions(pdf_path: str) -> list[dict]:
transactions = []
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
if is_transaction_table(table):
transactions.extend(parse_table(table))
return transactions
O resultado
O processo que levava 3 a 4 horas por semana passou a levar menos de 5 minutos. O sistema roda localmente, sem dependência de cloud, e gera um relatório Excel com divergências destacadas e campo de observação para o analista.
Na Chiarelli Labs
Esse é o tipo de automação que está no nosso Track 1: processo repetitivo, bem delimitado, entregável em 2 a 4 semanas. Se você tem um processo parecido, fale com a gente.