AI PDF Scanner
Private, fully offline document scanner with OCR in English, Tamil and Hindi
An Android scanner that does everything on the device — capture, enhancement, OCR, searchable PDFs, encrypted storage and offline voice editing. The release build has no internet permission.
Status: Published on Google Play as com.vpailabs.aipdfscanner (from 8 Nov 2026). · Period: Nov 2026 – present · Source: Private repository. The privacy policy is public.
Screenshots are not published yet. The architecture is shown below.
01Overview
A scanner for people who do not want their documents in someone else’s cloud. The app captures pages, detects edges, enhances images, runs OCR, builds searchable PDFs and stores everything encrypted on the phone. It has no backend, no account and no network access.
02The problem
Popular scanner apps upload documents to remote servers and often handle Indian languages poorly. Many users scan IDs, financial and medical papers that should never leave the device.
03Who it is for
- Privacy-conscious Android users
- People scanning Tamil, Hindi and English documents
- Small offices handling sensitive paperwork
04My role
Requirements (BRD), architecture, the Flutter UI, the Kotlin native modules, testing on physical devices, and the Play release.
05Implemented features
- Camera capture with edge detection, perspective correction and filters.
- On-device OCR in English, Tamil and Hindi, with searchable PDF export.
- Encrypted document storage and encrypted backup and restore.
- Offline voice-controlled editing in the same three languages.
- Duplicate and near-duplicate detection, and sharing through the system share sheet.
- Release build ships without the INTERNET permission.
06System architecture
A Flutter UI sits over a Kotlin native core. Everything stays on the device and nothing crosses a network boundary.
07Engineering challenges and approaches
Shipping 630 MB of models through Play
The OCR and voice models go in an install-time asset pack, so Play installs them with the app. Nothing downloads at runtime and the app stays fully offline.
No plaintext on disk
Camera frames arrive in memory and are encrypted into a vault immediately. Records and the full-text index live in SQLCipher, and exports are built as temporary encrypted blobs.
Testable native core
The native ScannerCore has no Flutter dependency, so instrumentation tests call it directly. A typed channel contract keeps a future iOS port free of Dart changes.
08Outcomes and current status
- Published on Google Play.
- Automated suites pass on a physical test phone (Samsung Galaxy A33).
No usage or revenue numbers are published here unless I can verify them.
09Roadmap (not yet shipped)
- iOS version that implements the same channel contract in Swift.