Skip to content

pynicolas/FairScan

Repository files navigation

FairScan icon

FairScan

An Android app to scan your documents —
simple and respectful.

License

Get it on: F-Droid · Google Play · GitHub


FairScan is an Android app to scan documents quickly, easily and privately.

It's designed to be simple: users get a clean, shareable PDF in seconds, with no manual adjustments.
And respectful: open source, minimal permissions, no tracking, no ads.


Screenshots

Scan Preview Save & Share

Features

  • Clear, distraction-free interface
  • Easy scanning process: scan → preview → share
  • Automatic document detection using a custom segmentation model
  • Automatic perspective correction
  • Automatic image enhancement
  • Fast PDF generation with no manual adjustments
  • Fully offline – the app has no internet permission
  • Minimal permissions
  • Open source, GPLv3

Compatibility

FairScan works on any device that:

  • runs Android 8.0+
  • has a camera

Experimental: Scan to PDF via intent

FairScan can be invoked by other Android applications to perform a document scan and return a generated PDF.

This feature is experimental and intended for developers who want to rely on FairScan as a simple, privacy-respecting scanning tool. The intent contract and behavior may change between versions, and backward compatibility is not guaranteed at this stage.

Intent action: org.fairscan.app.action.SCAN_TO_PDF

This is an implicit intent that launches FairScan in a dedicated external mode.

When started via this intent:

  • FairScan opens directly in scan mode
  • the user scans one or more pages
  • FairScan generates a single PDF
  • the resulting PDF is returned to the calling application as a URI with a limited lifetime
  • the calling application should immediately copy the content of the URI as FairScan deletes it later

See an example app: fairscan-intent-sample


Technical details

FairScan uses:


The segmentation model

FairScan uses a custom-trained image segmentation model to detect documents:
https://github.com/pynicolas/fairscan-segmentation-model

It's based on a fully public dataset that is available here:
https://github.com/pynicolas/fairscan-dataset

The build system automatically downloads the model using
download-tflite.gradle.kts.

Related blog posts:


Build

To build an APK:

./gradlew clean check assembleRelease

To build an Android App Bundle:

./gradlew clean check :app:bundleRelease

License

This project is licensed under the GNU GPLv3. See LICENSE for details.