Scanora é um app Android de digitalização de documentos com foco em processamento local, OCR no dispositivo e um fluxo direto entre captura, revisão e exportação.
Repositório: https://github.com/Soturine/scanora
Releases: https://github.com/Soturine/scanora/releases
Site: https://soturine.github.io/scanora/
- scanner próprio com
CameraX, detecção ao vivo, foco por toque, flash e lote multipágina como fluxo principal da Home; ML Kit Document Scannerpreservado como alternativa assistida;- importação de galeria pelo fluxo do Google quando suportada;
- captura e importação direta continuam editáveis com recorte manual acessível;
- Home minimalista sem escolha obrigatória de tipo antes do scan;
- onboarding arrastável, ícone do app e estados contextuais com a raposa mascote do Scanora;
- interface em 12 idiomas: English, Português do Brasil, Español, Français, Italiano, العربية, Deutsch, Bahasa Indonesia, हिन्दी, Türkçe, 日本語 e 한국어, com RTL real no árabe;
- cópia das imagens de entrada para armazenamento interno antes de criar o lote local;
- detector local perspectivo em três escalas, quatro lados independentes, perfis automáticos, confiança tipada,
NO_DOCUMENTe fallback conservador; - reajuste automático do crop e editor manual mais confortável para acertos finos;
- filtros locais recalibrados para documento, cinza, cor e recibo com menos risco de estourar a página;
- pipeline de imagem unificado para preview, filtros, OCR e exportação derivarem da mesma página lógica;
- OCR local automático com fallback limitado a dois reconhecedores, qualidade EMPTY/WEAK/PARTIAL/GOOD, seleção manual avançada, fingerprint e artefato persistido;
- busca local por título, tags e OCR via Room FTS;
- exportação em PDF pesquisável quando há OCR, JPG e PNG, com A4/Letter/Auto e escolha progressiva por formato;
- pós-exportação com nome, tipo, tamanho, local salvo, abrir e compartilhar;
- histórico local com título, tags, favoritos e busca.
- banco sem migration destrutiva, schema versionado e lifecycle explícito dos arquivos privados;
- importação parcial com contagem de falhas, rollback e preservação da ordem;
- cache visual descartável com fallback para a fonte canônica;
- backup automático desativado e compartilhamento restrito aos diretórios de export.
Scanora foi pensado para transformar páginas, contratos, cadernos e recibos em arquivos legíveis sem depender de upload obrigatório. A câmera própria é o caminho principal, sem exigir que o usuário escolha um perfil técnico antes de capturar, e o scanner assistido continua disponível como alternativa.
Capturas oficiais do app em aparelho real seguem em validação final.
Nesta rodada, o material público foi alinhado ao fluxo real do produto sem substituir essa etapa por mockups artificiais.
- Kotlin
- Android Gradle Plugin 9.1.1
- Jetpack Compose + Material 3
- Navigation Compose
- ViewModel + Coroutines + Flow
- Room
- DataStore
- WorkManager
- CameraX
- ML Kit Document Scanner
- ML Kit Text Recognition
app: bootstrap, navegação, onboarding e integração dos móduloscore-common: modelos, contratos e use casescore-data: Room, DataStore, OCR, exportação e processamento de imagemcore-ui: tema e componentes reutilizáveisfeature-*: telas e ViewModels por contexto funcional
Referências técnicas:
- docs/architecture.md
- docs/current-state.md
- docs/data-lifecycle.md
- docs/threat-model.md
- docs/decisions.md
- docs/setup.md
- docs/testing.md
- docs/publishing.md
- Abra o projeto no Android Studio com suporte a AGP 9.1.1.
- Use JDK 17 ou superior compatível com AGP 9.
- Instale Android SDK Platform 36 e Build Tools 36.0.0.
- Rode
./gradlew assembleDebugou execute o móduloapp.
Identidade do app:
applicationId:com.soturine.scanora- namespace base:
com.soturine.scanora
- O workflow Android CI roda
check, compila debug/release e executa os testes instrumentados de Room, busca e PDF em emulador API 35. - CodeQL analisa Java/Kotlin e o setup Gradle valida o wrapper; Dependabot acompanha Gradle e GitHub Actions.
- O site público é publicado a partir de
site/. - Para o GitHub Pages funcionar no repositório publicado, ative em
Settings > Pages > Source: GitHub Actions.
- processamento local por padrão;
- OCR e filtros executados no dispositivo sempre que possível;
- sem backend obrigatório, login ou sincronização no MVP.
- scans, Room, OCR e preferências excluídos de cloud backup e device transfer automáticos;
- excluir uma página ou lote remove os arquivos privados gerenciados, mas preserva fotos externas e exports do usuário.
Política completa em PRIVACY_POLICY.md.
0.3.1 leva o motor documental ao fluxo principal: captura própria assistida por detecção ao vivo, crop perspectivo mais robusto, revisão compacta, filtros automáticos, OCR automático limitado e exportação responsiva.
Consulte CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md e ROADMAP.md.