A mobile document scanner application built with Flutter that allows users to capture, enhance, and manage scanned documents with OCR, translation, and document export capabilities.
- Document Scanner: Full-screen document scanning with Google ML Kit Document Scanner
- Edge Detection: Automatic edge detection and perspective correction
- Batch Scanning: Scan multiple pages into a single document in one session
- Single Page Scan: Quick single-page document capture
- Smart Filters: Apply various filters to enhance scanned documents
- Original (no filter)
- Grayscale
- Black & White (high contrast)
- Color Enhancement
- Image Editor: Edit scanned pages with filters and enhancements
- Thumbnail Generation: Automatic thumbnail creation for quick preview
- Folder Organization: Create custom folders with smart icons and color coding
- 13 category-based smart icons (Financial, Legal, Medical, Personal, Work, School, Travel, Shopping, Home, Insurance, Important, Archive)
- 35+ custom icon options
- Color customization for visual organization
- Tag System: Tag documents with custom labels for easy categorization
- Smart Naming: Automatic document naming based on content analysis
- Detects document types (Invoice, Receipt, Contract, Medical Record, ID Card)
- Extracts and includes dates from document content
- Suggests folder categories automatically
- Search: Full-text search across document names
- Filter by Tags: Quick filtering by tags
- Document Details: View creation/modification dates and page counts
- Locked Folders: Secure sensitive documents with biometric authentication
- Encryption: AES-256 encryption for locked folder contents
- Platform Keystore: Secure key storage using Android Keystore
- Biometric Authentication: Fingerprint/Face unlock support
- Text Extraction: Accurate OCR using Google ML Kit
- Multi-language Support: Extract text in multiple languages
- Translation: Translate extracted text to various languages
- Text Editing: Edit and refine extracted text
- Text Export: Export text to DOCX format
- PDF Export: Generate high-quality PDFs with optional OCR text layer
- Include/exclude OCR text
- Select specific pages to export
- Image Export: Share original scanned images
- DOCX Export: Export extracted text as Word documents
- Share Integration: Native Android share functionality
- Multi-language UI: Support for 10 languages
- English
- Hindi (हिंदी)
- Bengali (বাংলা)
- Telugu (తెలుగు)
- Marathi (मराठी)
- Tamil (தமிழ்)
- Gujarati (ગુજરાતી)
- Kannada (ಕನ್ನಡ)
- Malayalam (മലയാളം)
- Punjabi (ਪੰਜਾਬੀ)
- System Language Detection: Automatically uses device language
- Material Design 3: Modern and clean interface following Material You guidelines
- Dynamic Color: Adapts to Android 12+ dynamic color themes
- Dark Mode: Full dark theme support
- Smooth Animations: Flutter Animate for delightful micro-interactions
- Glass Navigation: Premium glassmorphism bottom navigation bar
- Responsive Layout: Grid and list view options
- Theme Selection: Light, Dark, or System theme
- Language Selection: Choose from 10 supported languages
- Storage Management: View storage usage and free up space
- Custom Storage: Select custom storage directory
- Flutter: ^3.6.2 - Cross-platform mobile development framework
- Dart: SDK >=3.6.0 <4.0.0
- flutter_riverpod: ^2.6.1 - Reactive state management
- riverpod_annotation: ^2.6.1 - Code generation for providers
- Material 3: Built-in Flutter Material Design 3
- flutter_animate: ^4.5.0 - Smooth animations and transitions
- Dynamic Color: Adaptive theming
- google_mlkit_document_scanner: ^0.2.1 - Document scanning
- google_mlkit_text_recognition: ^0.14.1 - OCR capabilities
- image_picker: ^1.1.2 - Image selection from gallery/camera
- image: ^4.3.0 - Image manipulation
- flutter_image_compress: ^2.3.0 - Image compression
- pdf: ^3.12.0 - PDF generation
- printing: ^5.14.0 - Print and share PDFs
- syncfusion_flutter_pdf: ^28.1.36 - Advanced PDF features
- syncfusion_flutter_officechart: ^28.1.36 - Chart support
- docx_template: ^0.6.0 - DOCX generation
- sqflite: ^2.4.1 - Local SQLite database
- path_provider: ^2.1.5 - File system paths
- path: ^1.9.1 - Path manipulation
- local_auth: ^2.3.0 - Biometric authentication
- flutter_secure_storage: ^9.2.2 - Secure key storage
- encrypt: ^5.0.3 - AES encryption
- intl: ^0.20.1 - Internationalization and formatting
- flutter_localizations: Built-in - Localization support
- go_router: ^14.6.2 - Declarative routing
- share_plus: ^10.1.3 - Native sharing
- permission_handler: ^11.3.1 - Runtime permissions
- freezed: ^2.5.7 + freezed_annotation: ^2.4.4 - Immutable models
- json_serializable: ^6.8.0 - JSON serialization
- uuid: ^4.5.1 - Unique ID generation
- build_runner: ^2.4.13 - Code generation
- riverpod_generator: ^2.6.2 - Provider code generation
- flutter_lints: ^5.0.0 - Linting rules
- Android:
- Minimum SDK: 29 (Android 10)
- Target SDK: 36 (Android 14+)
- Compile SDK: 36
- iOS: Not currently supported (Android-only app)
- Flutter SDK: >=3.6.2
- Dart SDK: >=3.6.0 <4.0.0
- Android Studio or VS Code with Flutter plugins
- Java: JDK 17 or higher (for Android builds)
- RAM: Minimum 2GB recommended
- Storage: At least 100MB free space for app installation
- Camera: Required for document scanning
- Biometric Hardware (optional): For locked folder feature
The app requires the following permissions to function properly:
<uses-permission android:name="android.permission.CAMERA"/>- Purpose: Capture document scans
- Usage: Used by Google ML Kit Document Scanner for document capture
- When Requested: When user taps "Scan" button
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>- Purpose: Save and retrieve scanned documents
- Usage: Store scanned images, PDFs, and document data
- When Requested: On first app launch
<uses-permission android:name="android.permission.INTERNET"/>- Purpose: OCR and translation services
- Usage: Google ML Kit requires internet for some features
- Note: No user data is sent to external servers
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>- Purpose: Secure locked folders
- Usage: Authenticate access to encrypted folders
- When Requested: When enabling locked folder feature
- All permissions are requested at runtime following Android best practices
- Users can deny permissions; app will gracefully handle missing permissions
- Storage permission is essential for core functionality
- Camera permission is required for scanning features
- Biometric permission is optional for enhanced security features
- Alucard Stormbringer
MIT License