Executando verificação de segurança...
7

Pitch: Como cheguei a 99.8% de acerto extraindo dados de PDFs usando FastAPI, OCR e LLMs

Fala pessoal, tudo bem?

Se tem uma coisa que sempre me sugou a alma como desenvolvedor foi precisar fazer parseamento de documentos (PDFs, imagens, extratos). Tentar criar regras do zero consumia um tempo absurdo e, a cada layout novo, o código quebrava.

A solução moderna óbvia seria jogar tudo num LLM, certo? Foi o que eu tentei. Mas plugar um LLM direto na extração gerou outro pesadelo: eu gastava dezenas de linhas só para fazer engenharia de prompt, pedir para o JSON vir formatado e, no fim das contas, a IA ainda alucinava dados ou quebrava a estrutura. O resultado é que eu voltava a escrever Regex para consertar o JSON que o LLM cuspia torto.

Para resolver minha própria dor, passei os últimos tempos construindo o Structura. O conceito é simples: entra documento (PDF, Imagem), sai dado estruturado (JSON ou XLSX) validado.

A abordagem que funcionou (OCR + LLM)

Para fugir das alucinações e bater a casa dos 99.8% de assertividade, a estratégia foi não deixar o LLM "ler e interpretar" solto. O backend faz a ancoragem do texto via OCR tradicional e usa o LLM estritamente como um motor de formatação semântica e tipagem (devolvendo exatamente as chaves que você pedir na API).

Para ilustrar, peguei um extrato sujo do Nubank:

O Documento original:

Extrato Nubank
O Resultado em JSON:

JSON Estruturado

O que roda por baixo do capô?

Sei que a galera aqui curte arquitetura. A topologia a que cheguei foi essa:

  • Backend / Core: Python com FastAPI.
  • Frontend: Next.js.
  • Mensageria / Cache: Redis (rodando os workers para processamento assíncrono).
  • Autenticação: Appwrite. Foi minha primeira vez usando a sério e me salvou semanas de código boilerplate para eu poder focar no produto. Recomendo muito.
  • Infra: Railway. Subir o Postgres, o Redis e os serviços por lá foi uma experiência absurdamente lisa.

Aqui está um pedaço da topologia no Railway (Frontend, Backend, WorkerRedis e Redis):

Arquitetura no Railway

O Desafio para a Comunidade

Eu acabei de liberar a versão inicial e criei um Free Tier com 30 créditos/mês.

Meu pedido aqui é um feedback técnico honesto. Queria desafiar vocês a entrarem no structura.com.br, criarem um esquema de extração e jogarem os piores e mais desformatados PDFs ou extratos que tiverem aí para ver se a ferramenta quebra.

A documentação da API faz sentido para vocês? A stack aguenta bem o tranco inicial?

Valeu pelo espaço e qualquer dúvida sobre a implementação (FastAPI, Appwrite, OCR, etc), manda aí nos comentários que eu detalho!

Carregando publicação patrocinada...
2
1

Boa tarde Erick, Obrigado pelo feedback, vi a mesma reclamação de outras pessoas.

Pode me confirmar se está usando alguma ferramenta de anti-tracking ou bloqueador de anuncio?

Fiz o Teste e a Brave nao deixou logar sem desligar a proteção, mas assim que eu ajustar te notifico.

aguardo seu retorno, obrigado!

2
1
2

Caramba cara otimo trabalho, não cheguei a usar o serviço mas muito bom o site da structura e bem clara a forma como tudo foi organizado! Parabéns e sucesso com o seu projeto!

1

Obrigado, tentei mostrar de cara o ganho com o app na landing page, mas tive um pouco de dificuldade já que minha ideia é atingir 2 públicos desenvolvedores e via web para pessoas fria.

Se quiser e puder, poderia dar um feedback da usabilidade da ferramenta.

Abraços.

2

Tenho um app windows que extrai dados de certos tipos de arquivos usando expressões regulares.
Agora estou montando um modelo especialista nos arquivos pra não precisar de LLMs. Pelo menos ele consegue se adaptar a pequenas mudanças de layout, coisa que as regex falham silenciosamente.
Muito boa sua ideia. As LLMs tem um índice de acerto muito baixo, no meu caso, pois os documentos tem as informações bem espalhadas. É preciso analisar, por exemplo, 60 páginas pra recolher uma única linha de tabela final. E quando você multiplica por 200 arquivos de uma vez, aí o negócio desanda.

1

Sim, trabalhei em uma empresa de investimento pegávamos extratos e documentos de muitos bancos cada um com sua particularidade. A ideia do app é ter suporte para multiplas páginas, já fiz extração com PDF de 30/40 páginas e o resultado foi extremamente satisfatório. Ter o dado já em json sem escrever 2k linhas de código para consumir facilita mt a vida.

2

Bacana a ideia!
Corri pra validar e ver o resultado e... os créditos grátis não chegaram :(
Tenho um desafio desse tipo no momento e queria ver como o seu esta se comportando comparado ao que obtivemos de resultado aqui até então.

1
1

Boa tarde, passando para avisar que ajustei os erros de creditos.

Obrigado pelo feedback, havia testado mutias coisas com os planos mas esqueci de dar os créditos iniciais quando o user cria a conta..

Espero que goste dos testes

0
2
1
1
2

Olá, tenho uma dúvida em relação ao tratamento de informações sensíveis e à conformidade com a LGPD.

Considerando que sua aplicação pode ter acesso a recibos de pagamento, contratos, notas fiscais e outros documentos altamente sensíveis, como é feito o gerenciamento dessas informações?

Como funciona esse processo internamente?
Os arquivos são armazenados por vocês?
Existe acesso direto a esses documentos?

Quais medidas de segurança e mitigações são adotadas para prevenir vazamento ou uso indevido de dados?

1

Bom dia, excelente pergunta e de fato muito importante!

Como funciona internamente? Os documentos são enviados via HTTPS para nosso backend, processados pela por sistemas proprios de parsing e extração dos dados e correção com IA (com politica de restritiva ao acesso do documento para treinamento) e os resultados são armazenados. Os arquivos temporários no servidor são deletados imediatamente após o processamento.

Os arquivos são armazenados? Sim, uma cópia fica no Appwrite Cloud Storage para que o usuário possa re-baixar, re-processar. Estamos implementando políticas de retenção com auto-exclusão.

Existe acesso direto? Apenas o dono do documento pode acessá-lo, validado por autenticação JWT. Links de compartilhamento são temporários e expiram.

Medidas de segurança: Autenticação multi-camada, rate limiting, criptografia em trânsito (HTTPS), validação de arquivos, isolamento de dados por usuário. Estamos implementando criptografia at-rest e compliance total com LGPD.

1
1

Agradeço pelo interesse, meu desejo é realmente colocar essa plataforma para rodar, espero que possamos fazer boas parcerias no futuro!

Qualquer coisa, pode entrar em contato.

2
1

Vou conferir obrigado pelo feedback, poderia me dar mais detalhe? como criou sua conta email e senha? google ou github? no meu banco de dados creio que sua conta foi criada e talvez já esteja logado deve estar dando um erro de session already open consegue ir para https://structura.com.br/dashboard diretamente?.

#Edit: usa algum bloqueador de anuncio ou ferradamenta de privacidade?

Pode verificar esses pontos e retornar por favor?

2

Que massa! Já trabalhei num projeto semelhante, voltado mais pra notas fiscais, infelizmente apanhei pro OCR e o sistema acabou mudando de escopo. Mas a sua infraestrutura e tecnologias estão de parabéns, amigo!

2

Entendo, quando trabalhava numa empresa financeira, fiz um monstro de parsing para extrair dados de extrato, um para cada banco haha, infelizmente não havia acesso a tantos recursos como hoje.

2

Legal a ideia.
Tentei ocerizar um arquivo, mas deu créditos insuficientes. Tudo bem, tinha 50 páginas. Daí selecionei duas páginas e deu certo.
Feedbacks:
Numa próxima versão, pensa em criar algo mobile first. Acessei do celular e o site nao está responsivo;
A acuracia está muito boa. Acertou muito, parabéns. Errou bem pouco, basicamente o que errou foi idiossincrasias do arquivo;
Pensa em disponibilizar uma API? Seria bacana pensar nisso, e já que está usando FastAPI, seria mamão com açúcar a adaptação.
Parabéns pelo trabalho, mandou bem de mais!

1

Que bom que gostou, ainda estou trabalhando na versão mobile, como tenho o paineis acho que ficaria melhor acessar o hub pelo computador mas ter a responsividade é realmente importante!

Já temos api, como falei, a ideia é ajudar pessoas que mexem muito com documentos e ter uma interface fácil de extracao mas tmb ajudar em processos para outros softwares e sites.

Caso tenha curiosidade: https://structura.com.br/docs

No hub tem toda parte de criação de webhook e tmb das credenciais.

2

entrei no sistema e achei interessante, pois, estamos testando algumas soluções para integração com nosso ERP. Fiz o teste enviando 2 docs um extrato e outro um boleto e ambos funcionou bem porém demorou muito e nos causou receio devido ao volume de docs recebidos e processados. Outra. coisa foi a falta de contato no app. Mas nos interessou por já ter todas as funcionalidades para integração por api. Vou testar mais um pouco e ver se nos atende. mas ficou muito bom.

1

Que bom receber esse feedback, fico mt grato, realmente coloquei o contato apenas na landing page, suporte@structura.com.br, irei colocar em outros lugares para ficar mais fácil.

Sobre a demora, deixei um forma balanceada de extração, Qualidade x Rapidez, mas para documentos já digitalizados, seria bom uma extração mais rapidas pois os caracteres são bem mais fácil de extrair sem erro.

Obrigado pelo feedback, Ainda estamos no MVP e esses comentários nos ajuda a construir uma ferramenta mais robusta, qualquer coisa entra em contato!

2

Cara parabéns pelo projeto, eu presto consultoria para uma empresa que presta consultoria aduaneira, eles tem invoices em PDF que são uma loucura, em outras linguas, totalmente despadronizado etc.
Fico a disposição sua caso queira, para aprimorar seu motor, e no futuro tenho interesse em plugar uma aplicação na sua API e tentar solucionar uma dor enorme deles lá que é ter que ler todos esses PDFS.
Tenho vários modelos aqui totalmente loucura, se tiver afim e disposto te envio pra vc dar uma olhada, tenta treinar ai e vamos se falando.
alexandre.choski@gmail.com
me da um toque que falamos!

1
1
1

Hoje pelos preços que estou praticando, 60% dos meus custo é puramente pela IA, minha margem é bem baixa para conseguir disponibilizar bons preços.

Tenho planos de 69,90 para 600 páginas e 119,90 para 1200 páginas, além de fazer planos personalizados para maiores demandas

1
1

Salve, usei o Docling + LLM, tu vai conseguir uma performance muito boa.. Dependendo do tipo do documento existe OCR melhores para escritas como o PaddleOCR.

0