Por que o extrato em PDF é tão difícil de ler por máquina
Um PDF não guarda uma tabela — guarda desenhos: cada texto é um glifo com uma coordenada. Seu olho reconstrói as colunas Data, Histórico e Valor sozinho; um programa recebe fragmentos soltos e precisa remontar tudo — onde acaba o histórico, onde começa o valor, se o número é crédito ou débito.
E vem a parte que quase ninguém conta: um banco não tem "um layout". App, internet banking, conta PJ, relatório de pagamentos, conta vinculada — cada canal muda colunas, cabeçalho e a forma de marcar o sinal.
No nosso código, o Banco do Brasil tem 18 leitores de layout distintos. Caixa, Santander e Bradesco, 15 cada. Sicoob e Itaú, 14. Sicredi, 11. Até o Nubank já rendeu 7. É por isso que um conversor genérico acerta o extrato de demonstração e erra o seu.
Quando o PDF é uma imagem disfarçada de texto
Você abre o PDF, o texto está lá — mas tenta selecionar com o mouse e não seleciona nada. O arquivo passou por "Microsoft: Print To PDF" ou por um scanner, e o que parece texto é desenho vetorial: para qualquer leitor de PDF o documento está vazio. É a origem silenciosa do "o conversor não achou nenhum lançamento".
Aí o extrato não é lido, é enxergado: cada página é rasterizada a 300 dpi e passa por reconhecimento óptico em português. É mais lento — escaneados grandes vão para uma fila com tela de progresso —, mas o OFX sai igual.
Parte deles ainda vem girada 90°: a planilha em paisagem que alguém mandou imprimir. Na tela você inclina a cabeça e lê; o OCR, deitado, devolve ruído de grade. O tratamento é literal — rasterizar, girar, reconhecer de novo. Como não dá para saber se o giro é horário ou anti-horário, uma sonda na primeira página tenta as duas e vê qual produziu algo parecido com um extrato. Se nenhuma produzir, o sistema para em vez de inventar transações.
Quando o OCR troca um número (e por que conferimos contra o saldo)
É aqui que um conversor mal-feito falha em silêncio. OCR não erra só apagando texto: ele troca dígito por dígito, e o resultado continua parecendo um número perfeitamente válido.
Medimos isso em extratos reais: o modelo de português tenta "corrigir" números como se fossem palavras. Ele lê o débito -2.752,73 como -2.152,13, o saldo 760,53 como 160,53 e o ano 2026 como 2028. Nada dispara alarme — o valor entra bonito no arquivo e você só descobre quando a conciliação não fecha.
Daí duas defesas. A primeira: cada coluna numérica é reconhecida separadamente, com o alfabeto restrito a dígitos, vírgula, ponto e sinal — sem palavras para "corrigir", o modelo para de alucinar. Ler por faixa de coluna também separa linhas que o OCR funde numa tabela larga: num extrato que testamos, isso levou o leitor de 0 para 26 transações corretas de 26.
A segunda fecha a conta: quando há coluna Saldo, o documento carrega a própria prova — cada saldo é o anterior mais o lançamento da linha. Se o valor lido e a diferença entre saldos divergem, um dos dois está errado, e dá para saber qual. É o documento conferindo a si mesmo, e é o que faz nossos testes fecharem exatamente no total do rodapé. Ainda assim: prefira o PDF original ao escaneado, e confira o total abrindo o OFX em Excel.
Como o banco certo é escolhido
Você escolhe o banco na lista, mas o arquivo tem a palavra final: todo extrato passa por um reconhecimento de assinatura — padrões do cabeçalho e da estrutura do documento, não do nome do banco. "Nubank" aparece no histórico de um Pix recebido no Itaú, e usar isso como pista rotearia o PDF errado.
Quando dois bancos empatam na pontuação, o resultado é "não sei", não um chute: melhor cair num leitor de reserva do que entregar com confiança um extrato lido pelo parser errado. E se você escolher errado, a detecção corrige — o campo é uma dica, não uma ordem.
O que sai do outro lado
O arquivo gerado é OFX 1.0 no dialeto SGML — OFXHEADER:100, DATA:OFXSGML, VERSION:102. Não é nostalgia: é o dialeto que os ERPs e sistemas contábeis brasileiros de fato aceitam. O OFX 2.0, em XML puro, é mais rígido e recusado por boa parte deles.
Cada lançamento sai com tipo, data, valor, histórico e um FITID, o identificador único que impede a mesma transação de entrar duas vezes num período reimportado. O guia o que é OFX destrincha a estrutura.
Bancos, cooperativas e fintechs suportados
47 instituições com leitor dedicado — bancos de varejo, cooperativas, adquirentes e carteiras digitais —, mais um leitor genérico para o resto. Cada uma tem página própria, com instruções de download e exemplos anonimizados.
Os mais procurados: Itaú, Banco do Brasil, Bradesco, Caixa, Santander, Nubank, Inter, Sicoob, Sicredi, C6 Bank, Mercado Pago e PagBank.
Não achou o seu? Envie assim mesmo: o leitor genérico costuma dar conta, e é assim que descobrimos os layouts que faltam.