Improve README.md (#62)
This commit is contained in:
115
README.md
115
README.md
@@ -1,74 +1,107 @@
|
|||||||
# FairScan
|
<p align="center">
|
||||||
|
<img src="app/src/main/ic_launcher-playstore.png" alt="FairScan icon" width="120" />
|
||||||
|
</p>
|
||||||
|
|
||||||
FairScan is an Android app to scan documents. It aims to be simple and respectful to users.
|
<h1 align="center">FairScan</h1>
|
||||||
|
|
||||||
"Simple" means that users should get a clean PDF in seconds and without thinking:
|
<p align="center">
|
||||||
- The user interface should be super clear, with no distractions.
|
An Android app to scan your documents —
|
||||||
- The scanning process should be obvious.
|
<br/><b>simple</b> and <b>respectful</b>.
|
||||||
- The app should automatically handle all image processing and PDF generation tasks.
|
</p>
|
||||||
|
|
||||||
## Get FairScan
|
<p align="center">
|
||||||
- [F-Droid](https://f-droid.org/en/packages/org.fairscan.app/)
|
<a href="https://github.com/pynicolas/FairScan/releases"><img src="https://img.shields.io/github/v/release/pynicolas/FairScan?logo=github" /></a>
|
||||||
- [Google Play](https://play.google.com/store/apps/details?id=org.fairscan.app)
|
<a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/pynicolas/FairScan?color=blue"></a>
|
||||||
- [GitHub releases](https://github.com/pynicolas/FairScan/releases)
|
</p>
|
||||||
|
<h3 align="center">
|
||||||
|
<b>Get it on:</b>
|
||||||
|
<a href="https://f-droid.org/en/packages/org.fairscan.app/">F-Droid</a> ·
|
||||||
|
<a href="https://play.google.com/store/apps/details?id=org.fairscan.app">Play Store</a> ·
|
||||||
|
<a href="https://github.com/pynicolas/FairScan/releases">GitHub</a>
|
||||||
|
</h3>
|
||||||
|
|
||||||
See also:
|
---
|
||||||
- [fairscan.org](https://fairscan.org)
|
|
||||||
- [the blog](https://fairscan.org/blog/)
|
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.<br>
|
||||||
|
And **respectful**: open source, minimal permissions, no tracking, no ads.
|
||||||
|
|
||||||
|
- Website: https://fairscan.org
|
||||||
|
- Blog: https://fairscan.org/blog/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
| 1. Scan | 2. Preview | 3. Save & Share |
|
|
||||||
|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|
|
| Scan | Preview | Save & Share |
|
||||||
|
|------|---------|--------------|
|
||||||
|  |  |  |
|
|  |  |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Automatic document detection (using a [custom image segmentation model](https://github.com/pynicolas/fairscan-segmentation-model))
|
- **Clear, distraction-free interface**
|
||||||
- Automatic perspective correction
|
- **Easy scanning process**: scan → preview → share
|
||||||
- Automatic image enhancement
|
- **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
|
## Compatibility
|
||||||
|
|
||||||
FairScan should be compatible with all devices that:
|
FairScan works on any device that:
|
||||||
- run Android 8.0 or a more recent version
|
- runs **Android 8.0+**
|
||||||
- have a camera
|
- has a camera
|
||||||
|
|
||||||
## Privacy
|
---
|
||||||
|
|
||||||
- All data stays on the device. As of today, FairScan does not access the internet.
|
## Technical details
|
||||||
- Minimal permissions:
|
|
||||||
- Camera
|
|
||||||
- WRITE_EXTERNAL_STORAGE: only on Android 8 and 9 to save generated PDFs in the Download directory.
|
|
||||||
- Zero trackers.
|
|
||||||
|
|
||||||
## Main dependencies
|
FairScan uses:
|
||||||
|
|
||||||
- [Jetpack Compose](https://developer.android.com/compose) for the user interface
|
- [Jetpack Compose](https://developer.android.com/compose) for the UI
|
||||||
- [CameraX](https://developer.android.com/media/camera/camerax) to capture images from the camera
|
- [CameraX](https://developer.android.com/media/camera/camerax) for image capture
|
||||||
- [LiteRT](https://ai.google.dev/edge/litert) to run the segmentation model for automatic document detection
|
- [LiteRT](https://ai.google.dev/edge/litert) to run the custom segmentation model for automatic document detection
|
||||||
- [OpenCV](https://opencv.org/) for:
|
- [OpenCV](https://opencv.org/) for perspective correction and image enhancement
|
||||||
- perspective correction
|
|
||||||
- image enhancement
|
|
||||||
- [PDFBox-Android](https://github.com/TomRoush/PdfBox-Android) for PDF generation
|
- [PDFBox-Android](https://github.com/TomRoush/PdfBox-Android) for PDF generation
|
||||||
|
|
||||||
Kudos to the developers of those projects!
|
---
|
||||||
|
|
||||||
|
## The segmentation model
|
||||||
|
|
||||||
|
FairScan uses a custom-trained image segmentation model to detect documents:<br>
|
||||||
|
https://github.com/pynicolas/fairscan-segmentation-model
|
||||||
|
|
||||||
|
It's based on a fully public dataset that is available here:<br>
|
||||||
|
https://github.com/pynicolas/fairscan-dataset
|
||||||
|
|
||||||
|
The build system automatically downloads the model using
|
||||||
|
[`download-tflite.gradle.kts`](app/download-tflite.gradle.kts).
|
||||||
|
|
||||||
|
Related blog posts:
|
||||||
|
- [*Making document detection more reliable*](https://fairscan.org/blog/automatic-document-detection/)
|
||||||
|
- [*Building a public dataset for FairScan*](https://fairscan.org/blog/building_a_public_dataset/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
To build an APK:
|
To build an APK:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./gradlew clean check assembleRelease
|
./gradlew clean check assembleRelease
|
||||||
```
|
```
|
||||||
|
|
||||||
To build an Android App Bundle:
|
To build an Android App Bundle:
|
||||||
```bash
|
```bash
|
||||||
./gradlew clean check :app:bundleRelease
|
./gradlew clean check :app:bundleRelease
|
||||||
```
|
```
|
||||||
|
|
||||||
### Note on the segmentation model
|
|
||||||
The builds automatically downloads the segmentation model from
|
|
||||||
[fairscan-segmentation-model](https://github.com/pynicolas/fairscan-segmentation-model).
|
|
||||||
This is done in [`download-tflite.gradle.kts`](app/download-tflite.gradle.kts).
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
This project is licensed under the GNU GPLv3. See [LICENSE](LICENSE) for details.
|
This project is licensed under the GNU GPLv3. See [LICENSE](LICENSE) for details.
|
||||||
|
|||||||
Reference in New Issue
Block a user