Como Converter Extratos Bancários em PDF para SQLite com Python

Aprenda a extrair transações financeiras de extratos bancários em PDF e consolidá-las em um banco de dados SQLite estruturado usando Python.

Arquivos PDF continuam sendo o padrão de entrega para documentos fiscais e extratos financeiros. No entanto, quando surge a necessidade de auditar meses ou anos de movimentações financeiras, esse formato se transforma em um obstáculo. Extratos bancários em PDF frequentemente apresentam tabelas fragmentadas, quebras de linha irregulares e falta de padronização estrutural entre diferentes instituições bancárias. Realizar o processamento manual desses dados consome tempo e introduz margem crítica para erros de digitação.

A solução eficiente para esse problema é construir um pipeline automatizado em Python capaz de extrair dados textuais de múltiplos extratos bancários, normalizar as transações e armazená-las em uma base de dados relacional leve, como o SQLite.

O Desafio da Extração Tabular em PDFs Bancários

Documentos em PDF não armazenam tabelas de forma semântica; eles contêm coordenadas visuais onde caracteres e linhas são desenhados na tela. Para recuperar a lógica tabular de um extrato, ferramentas como pdfplumber ou PyMuPDF (fitz) são as mais recomendadas pela precisão na extração de texto posicional.

Um fluxo de trabalho típico exige identificar padrões como:

  • Data da transação (DD/MM/AAAA ou AAAA-MM-DD)
  • Descrição ou histórico do lançamento
  • Documento/número de controle
  • Valor (crédito ou débito)
  • Saldo acumulado

Estruturação do Pipeline de Dados

O processo de ponta a ponta pode ser dividido em quatro etapas técnicas essenciais:

  1. Leitura e Extração de Texto: O script varre o diretório com os extratos em lote. Para cada página, o conteúdo textual é extraído preservando o alinhamento espacial.

  2. Sanitização e Regex: Expressões regulares capturam os padrões monetários e temporais. Valores expressos no padrão brasileiro (ex: 1.250,50- ou 1.250,50 D) são convertidos para o formato numérico padrão (float ou decimal, ex: -1250.50), garantindo operações matemáticas confiáveis no banco.

  3. Modelagem do Banco SQLite: Cria-se um esquema relacional simples e indexado para permitir consultas rápidas por data, valor e banco de origem:

sql
CREATE TABLE IF NOT EXISTS transacoes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
hashtransacao TEXT UNIQUE,
data
movimentacao DATE,
descricao TEXT,
valor REAL,
tipotransacao TEXT,
saldo
aposmovimentacao REAL,
banco
origem TEXT,
arquivofonte TEXT
);
CREATE INDEX IF NOT EXISTS idx
transacoesdata ON transacoes(datamovimentacao);

  1. Prevenção de Duplicidades e Ingestão: Como especialista em automação de dados e IA, destaco a relevância de gerar um hash SHA-256 combinando data, descrição, valor e banco de origem para cada linha processada. Essa chave única impede que extratos sobrepostos gerem registros duplicados na base SQLite durante inserções recorrentes.

Vantagens do SQLite para Consolidação Financeira

O SQLite é autocontido, não requer configuração de servidor e oferece suporte a SQL padrão completo. Ao consolidar transações de vários bancos em um único arquivo .db, torna-se trivial executar relatórios analíticos, reconciliações contábeis e até alimentar dashboards ou modelos preditivos em Python.

Se sua operação lida rotineiramente com pilhas de documentos financeiros não estruturados ou necessita de pipelines robustos de processamento de dados e IA sob medida, entre em contato para estruturarmos uma consultoria técnica aplicada ao seu negócio.

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