Voltar para Projetos
OCR & Document Automation

DocuExtract

Extrai automaticamente os dados fiscais principais de faturas e recibos.

O Problema

A captura manual de dados de faturas para a contabilidade é lenta e propensa a erros humanos, e as empresas precisam de um fluxo confiável mesmo quando o OCR não tem certeza do resultado.

A Solução

O DocuExtract permite enviar uma fatura ou recibo e usa OCR para extrair os dados fiscais principais, deixando-os prontos para a contabilidade. Quando a confiança do reconhecimento é baixa, o documento segue para um fluxo de revisão humana em vez de salvar dados pouco confiáveis.

Arquitetura / Engineering

  • Projetei o pipeline de processamento (envio → OCR/extração → parsing → persistência), separando o processamento no servidor da UI.
  • Integrei o Tesseract.js (espanhol + inglês) para OCR em imagens, e extração da camada de texto nativa de PDFs com pdf-parse.
  • Construí um sistema de confiança combinando a confiabilidade do OCR e os campos fiscais detectados, que encaminha automaticamente para revisão humana abaixo de um limiar configurável.
  • Implementei regex especializadas para identificar identificadores fiscais (NIT/RIF/CUIT/RFC/RUC), datas (numéricas e por extenso) e valores com base em palavras-chave contábeis.
  • Isolei os dados por empresa com Row Level Security do Supabase, e servi os documentos originais por meio de URLs assinadas de curta duração a partir de um bucket de Storage privado.
  • Mantive a `service_role key` do Supabase exclusivamente em Route Handlers no servidor, nunca exposta ao navegador.

Funcionalidades Principais

  • Envio de faturas/recibos com validação de tipo e tamanho de arquivo.
  • OCR em imagens (Tesseract.js) e extração de texto nativo em PDFs.
  • Extração e normalização de campos fiscais: identificação fiscal, datas, valores e itens.
  • Pontuação de confiança com encaminhamento automático para revisão humana.
  • Revisão e validação manual do documento antes de marcá-lo como concluído.
  • Exportação de faturas em CSV.

Desafios Técnicos

  • Separar o processamento no servidor (OCR, parsing, acesso ao Storage) da UI, para que a `service_role key` nunca chegue ao cliente.
  • Projetar o cálculo de confiança combinando a confiabilidade do OCR com a quantidade de campos-chave detectados, em vez de um limiar arbitrário único.
  • Isolar os dados por empresa com RLS para que nenhum usuário consiga ler ou escrever faturas de outra empresa mesmo conhecendo seu ID.

Resultado / Estado Atual

Publicado na Vercel. O fluxo completo — envio, OCR/parsing, persistência e revisão humana — funciona de ponta a ponta em imagens e PDFs com camada de texto nativa.

Limitação conhecida

PDFs escaneados sem camada de texto nativa não são rasterizados em imagem para aplicar OCR, já que essa conversão costuma exigir dependências nativas (poppler-utils) que complicam o deploy serverless. Esses documentos são marcados automaticamente como pendentes de revisão manual; adicionar um worker dedicado para rasterizá-los é a melhoria documentada para uma próxima iteração.

Stack

Next.jsTypeScriptNode.jsTesseract.jsTailwind CSSSupabase
Ao VivoGitHubVer todos os projetos →