No mundo acelerado de hoje, controlar as finanças pessoais pode ser uma tarefa árdua. A maioria dos aplicativos de orçamento depende da inserção manual de dados, o que muitas vezes leva a informações incompletas e, consequentemente, a um controle financeiro ineficiente. Imagine poder simplesmente escanear um recibo de supermercado e ter todos os dados relevantes automaticamente inseridos no seu aplicativo de orçamento. Essa é a proposta que vamos explorar neste artigo, utilizando o poder do Amazon Bedrock e outros serviços da AWS.
O Desafio da Inserção Manual de Despesas
Acompanhar despesas manualmente é uma tarefa demorada e propensa a erros. Recibos de supermercado contêm informações valiosas – nomes de itens, preços, categorias, totais – mas esses dados estão geralmente presos em formatos não estruturados, como imagens ou PDFs. Extrair e organizar essas informações manualmente representa um desafio significativo, limitando tanto a precisão do controle orçamentário quanto a análise aprofundada dos gastos. À medida que o volume de transações aumenta, a necessidade de uma solução de processamento de recibos automatizada e escalável se torna essencial.
A Solução: Scan de Recibos Automatizado
A funcionalidade de scan de recibos permite que os usuários capturem fotos de recibos de supermercado e os convertam automaticamente em dados de despesas estruturados dentro do aplicativo de orçamento. Do ponto de vista do usuário, o fluxo de trabalho é simples:
- O usuário envia uma foto de um recibo de supermercado.
- O aplicativo processa a imagem e extrai detalhes importantes da compra, como nome da loja, itens, preços, valor total e data da compra.
- Os dados extraídos são então categorizados e armazenados, tornando-os imediatamente disponíveis para controle orçamentário e análise de gastos.
Ao automatizar esse processo, a funcionalidade elimina a necessidade de entrada manual de despesas, ao mesmo tempo em que permite insights mais precisos e detalhados sobre os padrões de gastos do consumidor.
Arquitetura da Solução: Um Passo a Passo Detalhado
A arquitetura que apresentaremos a seguir utiliza diversos serviços da AWS para criar um fluxo de trabalho eficiente e escalável. O objetivo é manter o sistema orientado a eventos, simples e com responsabilidades bem definidas entre as etapas de OCR (Optical Character Recognition), raciocínio de IA e armazenamento de dados.
1. Ingestão: Upload de Recibos para o Amazon S3
O fluxo de trabalho começa quando um usuário envia uma imagem de recibo usando um aplicativo móvel ou uma interface web. Todas as imagens de recibo são armazenadas em um bucket do Amazon S3 chamado "receipts".
O S3 atua como um ponto de entrada durável e econômico para dados não estruturados (imagens). O bucket é configurado com uma notificação de evento que dispara o processamento assim que um novo objeto é carregado. Usar o S3 para ingestão elimina a necessidade de uma camada de API dedicada apenas para aceitar imagens e garante que os uploads sejam escalados automaticamente com o uso.
2. Evento Disparador: AWS Lambda (receipt-analyzer)
Quando uma nova imagem de recibo é carregada, o S3 dispara uma função AWS Lambda chamada "receipt-analyzer". Esta função Lambda atua como o orquestrador para todo o pipeline:
- Lê os metadados do evento S3.
- Coordena as chamadas para serviços downstream.
- Normaliza e persiste a saída final.
Como o Lambda é orientado a eventos e serverless, o sistema só executa computação quando um recibo realmente chega. Isso otimiza os custos e garante a escalabilidade.
3. Extração de Texto: Amazon Textract
O primeiro passo de processamento dentro do Lambda é o reconhecimento óptico de caracteres (OCR) usando o Amazon Textract. O Textract extrai o texto bruto da imagem do recibo. Todos os blocos LINE detectados são concatenados em uma única representação de texto. Nenhuma suposição é feita sobre o layout ou formatação do recibo. Nesta fase, os dados ainda não estão estruturados – apenas texto simples – mas fornecem uma base confiável para análise semântica.
4. Análise Semântica: Amazon Bedrock (Claude 3 Sonnet)
Uma vez que o texto bruto é extraído, o Lambda invoca o Amazon Bedrock usando o modelo anthropic.claude-3-sonnet. Em vez de tentar analisar manualmente os recibos com regras ou regex, o modelo é solicitado a raciocinar sobre o texto e retornar uma estrutura JSON limpa contendo:
- Nome do supermercado
- Localização da loja
- Lista de itens (nome e preço)
- Valor total
- Data da compra
O prompt instrui explicitamente o modelo a:
- Retornar apenas JSON
- Seguir um esquema fixo
Essa abordagem simplifica drasticamente o processamento downstream e torna a saída previsível o suficiente para o armazenamento em banco de dados.
5. Persistência: Amazon DynamoDB
Após a extração bem-sucedida, o resultado estruturado é armazenado no Amazon DynamoDB, em uma tabela chamada "receipt-processing-results". Cada recibo é salvo como um único item com os seguintes atributos:
- document_id (String, chave primária)
- bucket_name
- extracted_data (JSON estruturado)
- processed_timestamp
- raw_text (saída OCR original)
O DynamoDB foi escolhido porque:
- Escala automaticamente com o volume de recibos
- Fornece acesso de baixa latência para dashboards e consultas
- Funciona bem para padrões de acesso centrados em itens (um recibo por item)
Armazenar tanto dados estruturados quanto texto bruto permite o reprocessamento futuro se a lógica de extração ou os prompts melhorarem.
As Vantagens da Arquitetura
Este design apresenta diversas vantagens importantes:
- Totalmente serverless: sem servidores para gerenciar ou escalar.
- Orientado a eventos: o processamento ocorre apenas quando novos dados chegam.
- Separação de preocupações: OCR, raciocínio e armazenamento são isolados de forma limpa.
- Extensível: fácil de adicionar IDs de usuário, GSIs ou pipelines de análise posteriormente.
Além disso, o sistema permanece flexível: o Textract pode ser substituído ou aprimorado, os prompts podem evoluir e os esquemas do DynamoDB podem crescer sem interromper o fluxo de ingestão.
Conclusão
Esta funcionalidade demonstra como um fluxo de trabalho focado e de propósito único pode oferecer valor significativo quando construído com os serviços AWS certos. Ao combinar Amazon S3, AWS Lambda, Amazon Textract, Amazon Bedrock (Claude 3 Sonnet) e Amazon DynamoDB, imagens de recibos não estruturadas são transformadas em dados estruturados e consultáveis com complexidade operacional mínima.
O design orientado a eventos e serverless escala automaticamente com o uso e mantém os custos alinhados com a demanda. Separar o OCR do raciocínio baseado em IA também torna a solução flexível – modelos, prompts ou lógica de extração podem evoluir ao longo do tempo sem exigir alterações arquitetônicas.
Mais importante, essa abordagem remove o esforço manual para os usuários, ao mesmo tempo em que cria uma base sólida para recursos futuros, como análise de gastos, insights orçamentários e recomendações personalizadas. Com pequenas extensões incrementais, essa mesma arquitetura pode suportar casos de uso de inteligência financeira mais avançados sem sacrificar a simplicidade ou a escalabilidade. A capacidade de automatizar tarefas como o scan de recibos não apenas simplifica a vida dos usuários, mas também abre portas para um futuro onde a tecnologia e a inteligência artificial trabalham juntas para oferecer soluções financeiras mais inteligentes e personalizadas.