Skip to content

brunomous/ExpenseCam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExpenseCam

Aplicativo Android para controle de despesas com leitura de recibos via câmera e OCR.

Descrição do Problema

O controle financeiro pessoal é um desafio recorrente. Muitas pessoas acumulam recibos físicos sem registrar as despesas, perdendo o controle dos gastos. O ExpenseCam resolve isso permitindo que o usuário simplesmente fotografe um recibo e tenha as informações extraídas automaticamente.

Funcionalidades

  • Captura de recibos via câmera — utiliza o sensor de câmera do dispositivo para fotografar recibos e notas fiscais
  • OCR (Reconhecimento Óptico de Caracteres) — extrai automaticamente o valor e descrição do recibo usando Google ML Kit Text Recognition
  • Seleção de imagem da galeria — alternativa para usar fotos já existentes
  • Cadastro manual — permite editar/corrigir os dados extraídos ou cadastrar despesas manualmente
  • Categorização — organiza despesas por categorias (Alimentação, Transporte, Saúde, etc.)
  • Lista de despesas — exibe todas as despesas registradas com total acumulado
  • Detalhes da despesa — visualiza informações completas, imagem do recibo e texto OCR reconhecido
  • Exclusão por swipe — remove despesas deslizando o card para a esquerda
  • Armazenamento local — persiste dados usando Room Database (SQLite)
  • Material Design 3 — interface moderna seguindo as diretrizes do Material Design

Arquitetura

O projeto segue o padrão MVVM (Model-View-ViewModel) com as seguintes camadas:

com.example.expensecam/
├── data/                  # Camada de dados
│   ├── Expense.kt         # Entidade Room (modelo de dados)
│   ├── ExpenseDao.kt      # Data Access Object (consultas SQL)
│   ├── ExpenseDatabase.kt # Banco de dados Room (SQLite)
│   └── ExpenseRepository.kt # Repositório (abstração de acesso a dados)
├── navigation/            # Navegação
│   ├── NavRoutes.kt       # Definição das rotas
│   └── ExpenseCamNavGraph.kt # Grafo de navegação Compose
├── ocr/                   # Processamento OCR
│   └── OcrParser.kt       # Parser de texto OCR para extrair valores e descrições
├── ui/
│   ├── screens/           # Telas do aplicativo
│   │   ├── ExpenseListScreen.kt   # Lista de despesas (tela principal)
│   │   ├── AddExpenseScreen.kt    # Adicionar nova despesa + câmera
│   │   └── ExpenseDetailScreen.kt # Detalhes de uma despesa
│   └── theme/             # Tema Material Design
│       ├── Color.kt
│       ├── Theme.kt
│       └── Type.kt
├── viewmodel/             # ViewModels
│   ├── ExpenseListViewModel.kt
│   ├── AddExpenseViewModel.kt
│   └── ExpenseDetailViewModel.kt
├── ExpenseCamApplication.kt # Application class
└── MainActivity.kt          # Activity principal

Requisitos Funcionais

  1. O app deve permitir capturar fotos de recibos usando a câmera do dispositivo
  2. O app deve processar a imagem capturada com OCR para extrair texto
  3. O app deve identificar automaticamente valores monetários no texto extraído
  4. O app deve permitir editar os dados extraídos antes de salvar
  5. O app deve salvar despesas com descrição, valor, categoria, data e imagem
  6. O app deve exibir a lista de todas as despesas registradas
  7. O app deve exibir o valor total das despesas
  8. O app deve permitir excluir despesas
  9. O app deve permitir visualizar detalhes de cada despesa

Requisitos Não Funcionais

  1. Interface seguindo Material Design 3
  2. Armazenamento local com Room Database
  3. Compatível com Android 7.0+ (API 24)
  4. Tempo de resposta do OCR inferior a 5 segundos
  5. Suporte a formatos monetários brasileiro (R$ 1.234,56) e americano ($1,234.56)

Tecnologias Utilizadas

Tecnologia Finalidade
Kotlin Linguagem de programação
Jetpack Compose Framework de UI declarativa
Material Design 3 Sistema de design
Room Database Persistência local (SQLite)
CameraX Acesso à câmera do dispositivo
Google ML Kit Reconhecimento de texto (OCR)
Jetpack Navigation Navegação entre telas
Coil Carregamento de imagens
Kotlin Coroutines + Flow Programação assíncrona e reativa

Sensor Utilizado

Câmera — O app utiliza o sensor de câmera do dispositivo Android através da API CameraX para capturar imagens de recibos. A imagem é então processada localmente pelo Google ML Kit Text Recognition para extrair o texto via OCR.

Como Executar

  1. Clone o repositório
  2. Abra o projeto no Android Studio (Ladybug ou superior)
  3. Conecte um dispositivo Android ou use um emulador (API 24+)
  4. Execute o app (Run > Run 'app')

Requisitos do Ambiente

  • Android Studio Ladybug ou superior
  • JDK 11+
  • Android SDK 36
  • Dispositivo/emulador com Android 7.0+ (API 24)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages