Escáner de documentos para Android hecho con Flutter. Toma fotos de hojas, credenciales o tarjetas, las endereza, las limpia, reconoce el texto y las exporta a PDF. Todo se procesa en el teléfono: no hay servidor, cuentas ni anuncios.
Más capturas en docs/capturas.
⬇️ Descargar AppScanner para Android (44 MB, Android 7.0 o superior, teléfonos de 64 bits).
No necesitas saber programar: abre ese enlace desde tu teléfono, toca el archivo .apk y sigue los pasos de instalación que vienen en la página. Como la app no viene de la Play Store, Android te pedirá permitir la instalación desde tu navegador.
Captura
- Cámara con marco guía y modos Docs, ID, Tarjeta y Diapositivas.
- Modo ID: captura frente y reverso y los acomoda en una sola hoja A4.
- Disparo automático: detecta la hoja y dispara solo cuando está quieta, con el contorno dibujado en vivo.
- Modo lote: recorta y aplica el filtro automáticamente para escanear muchas hojas seguidas.
- Importa fotos de la galería y PDFs existentes.
Edición
- Recorte con corrección de perspectiva, esquinas arrastrables y lupa.
- Filtros: Original, Mejorar, Grises, B y N, Aclarar, Invertir, Sin sombra.
- Rotar, anotar (texto, resaltado, lápiz, firma) y deshacer.
- Visor con deslizamiento entre páginas y zoom.
Documentos
- Historial persistente, renombrar, buscar por el texto reconocido.
- Reordenar, duplicar, mover, copiar, extraer y eliminar páginas.
- OCR en el dispositivo (ML Kit, alfabeto latino) con texto copiable.
- PDF A4 multipágina con capa de texto invisible alineada palabra por palabra, así el PDF se puede buscar y seleccionar.
- Opciones: compresión, marca de agua y protección con contraseña (AES-256).
- Compartir, guardar en el teléfono o compartir las páginas como imágenes.
Requisitos: Flutter 3.47 o superior, Android SDK 36 y JDK 17 o superior.
flutter pub get
flutter analyze
flutter build apk --debug --target-platform android-arm64Usa siempre --target-platform android-arm64 mientras desarrollas. Sin ese flag Flutter compila OpenCV para cuatro arquitecturas y el build tarda más de 45 minutos.
Instalar en un teléfono conectado por USB:
adb install -r build/app/outputs/flutter-apk/app-debug.apkflutter test necesita un compilador de C++ en la PC (en Windows, Visual Studio Build Tools con "Desarrollo de escritorio con C++"), porque opencv_dart compila código nativo para el host.
- Crea tu propia clave de firma, fuera del repositorio:
keytool -genkeypair -v -keystore mi-clave.jks -alias mi-alias -keyalg RSA -keysize 2048 -validity 10000
- Copia
android/key.properties.exampleaandroid/key.propertiesy llena las rutas y contraseñas. Ese archivo está en.gitignorey nunca debe subirse. - Compila:
flutter build appbundle --release --target-platform android-arm64
Si no existe key.properties, el release se firma con la clave de debug para que el build no se rompa.
Para el APK que se publica en GitHub Releases:
flutter build apk --release --target-platform android-arm64 --split-per-abi --android-project-arg=force-version-code-ignoring-abi=true--split-per-abi hace que el APK traiga solo las librerías de arm64; sin él, algunos plugins meten librerías de 32 bits y un teléfono de 32 bits podría instalar la app y cerrarse al abrirla. force-version-code-ignoring-abi conserva el número de versión del pubspec.yaml, para que una versión posterior de Play Store pueda actualizar encima. El archivo sale en build/app/outputs/flutter-apk/app-arm64-v8a-release.apk.
lib/
models/ sesiones, páginas, anotaciones, opciones del PDF
screens/ cámara, recorte, filtros, páginas, visor, anotar, OCR, inicio
services/ detección de bordes, filtros, OCR, PDF, almacenamiento, importación
widgets/ pintores del marco guía, lupa, diálogos
tool/ script para verificar la capa de texto del PDF
docs/ plan de implementación y bitácora de pruebas
assets/icon/ ícono y splash, con el script que los genera
El detalle de la arquitectura, el formato de almacenamiento (session.json) y lo que se probó en dispositivo está en docs/PLAN-IMPLEMENTACION.md.
La mayoría de las dependencias son libres. Dos tienen condiciones propias:
syncfusion_flutter_pdf(protección con contraseña): usa la licencia Community de Syncfusion, gratis para personas y empresas pequeñas. Una empresa grande que distribuya la app necesita una licencia de Syncfusion.- Google ML Kit (OCR): SDK gratuito de Google sujeto a sus propios términos de uso.
MIT. Ver LICENSE. Puedes usar, modificar y redistribuir el código; solo conserva el aviso de copyright.



