Skip to content
smyrna-pergamumPublic

About

ScanLens – private, offline document scanner and PDF reader for Android (no internet permission)

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

ScanLens icon

ScanLens

One photo. One clear document.

A private document scanner and PDF reader for Android that never touches the internet.

Latest release License: GPL-3.0 Android 10+ No internet permission


Document library Choose what to scan Corrected pages Appearance filters PDF and JPEG export

✨ Why ScanLens?

Most scanner apps upload your passport, bank card or contract to a server, show ads or lock features behind a subscription. ScanLens does none of that. Everything happens on your phone, nothing leaves it unless you share it, and every feature is free.

📷 Snap and done Edges are found, the page is straightened, shadows disappear and the background turns white, right after you take the photo.
🔒 Private by design No internet permission, no account, no ads, no analytics. Your documents are encrypted on the device.
🆓 Free and open No watermark, no page limit, no subscription. GPL-3.0 open source.
🌍 Speaks your language English, Türkçe, Deutsch, Français, Español, Italiano, Português, Русский.

🚀 Features

📷 Scan

  • Automatic correction: edge detection, perspective, deskew, lighting and contrast, applied right after capture
  • Made for every document: documents, ID cards, driving licences, passports, bank cards, certificates
  • Cards done right: front and back on one page, at true card size (85.6 mm)
  • Precise corners: drag corners by hand; a magnifier appears on the opposite side so your finger never hides the edge
  • Quality check: warns about blur, glare and darkness before you keep a photo

🎨 Edit

  • Five looks: Original · Colour · Grey · Black & White · Document
  • Light controls: brightness, contrast, exposure, shadow removal and sharpness, on one page or all pages
  • Rotate and straighten, crop, and reorder pages by dragging
  • Redaction: hide card numbers or IDs. The black box is burnt into the pixels, not laid on top
  • Signatures: draw with your finger or import a PNG, then move, resize and rotate it
  • Undo/redo, and the original photo is always kept

📤 Export and share

  • Multi-page PDF (A4, A5, Letter or original size) or one JPEG per page
  • Three quality profiles (High · Balanced · Small), with the real file size shown before saving
  • Clean files: no watermark, no location, no device information
  • Save to any folder or hand off to any app through the system share menu

🧰 Also included

  • QR reader from the camera or a photo. Links only open when you tap them.
  • PDF reader for any PDF on your phone. Use "Open with ScanLens" from mail, chat or file apps.
  • App lock with fingerprint, face or screen lock

🔒 Privacy by design

Your documents are yours. ScanLens is built so that it can't send them anywhere.

  • 🚫 No internet permission. It is removed from the app manifest, so the app cannot go online even if it wanted to.
  • 🔐 Encrypted storage. Originals, drafts, thumbnails and signatures are protected with AES-256-GCM and a key held by Android Keystore.
  • ☁️ No cloud backups. App data is excluded from backup and device transfer.
  • 🙈 Screen protection. Content is hidden from screenshots and the recent-apps preview (can be turned off).
  • 🧹 No leftovers. Temporary share files are deleted after 24 hours and on every launch.

The only permissions requested are camera (asked when you first scan) and biometrics (only if you turn on app lock).

📥 Download

Get the APK from the latest release:

File Choose this if…
ScanLens-x.y.z-arm64-v8a.apk ✅ You have a phone from roughly the last 8 years (most people)
ScanLens-x.y.z-armeabi-v7a.apk You have an older 32-bit phone
ScanLens-x.y.z-universal.apk You're not sure. It works everywhere but is a bigger download

Requires Android 10 or newer. Signing certificate SHA-256: 33:07:9B:90:1B:EF:47:69:46:22:FD:87:8E:57:BA:61:59:CD:B5:28:32:45:7F:5C:DF:4D:57:14:28:62:A5:2F


🛠️ For developers: build, architecture and dependencies

Build

gradlew assembleRelease

Requires JDK 17+ and Android SDK 36. Without signing/keystore.properties (not in version control) the build produces unsigned APKs. The build creates one universal APK plus per-architecture APKs.

Built with Kotlin, Jetpack Compose and CameraX. minSdk 29, targetSdk 36. Application ID: com.januam.scanlens.

Architecture

Package Responsibility
storage Encrypted vault: AES-256-GCM files, data key wrapped by an Android Keystore key. Library index, settings, temp-file cleanup
imaging OpenCV edge detection, perspective and rotation, filters, quality check. Pipeline is the single render path for preview and export
export Image-only PDF writer (DCTDecode, title metadata only) and JPEG export
qr ZXing QR decoding, offline with no model download
ui Compose screens and AppViewModel. PdfReaderScreen uses Android's PdfRenderer and reads files in place

Output profiles

Profile A4 pixel limit Density JPEG quality
High 2480 × 3508 300 dpi 90
Balanced 1654 × 2339 200 dpi 82
Small 1240 × 1754 150 dpi 70

Low-resolution sources are never upscaled.

Third-party components

Component Version License
OpenCV 4.12.0 Apache-2.0
ZXing core 3.5.3 Apache-2.0
AndroidX (Compose BOM 2025.10.01, CameraX 1.5.1, AppCompat, Biometric, ExifInterface, DocumentFile, Lifecycle) see app/build.gradle.kts Apache-2.0
kotlinx.serialization / coroutines 1.9.0 / 1.10.2 Apache-2.0

None are paid, rate-limited or send data anywhere.

📄 License

ScanLens is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License v3.0 or later. See LICENSE.

Made with care for people who'd rather keep their documents to themselves. 🔍

About

ScanLens – private, offline document scanner and PDF reader for Android (no internet permission)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages