- 实时图传:WebSocket JPEG 帧发送 + 帧率控制 + PC 浏览器预览 - PDF 上传与处理:上传/处理分离,支持 ocrpdf 和 markdown 两种类型 - MinerU 真实接入:markdown 处理 + images ZIP 打包 - OCRmyPDF 接入:ocrpdf 生成可搜索双层 PDF - 手机端任务管理面板:轮询状态 + SAF 目录选择下载 - PC 管理面板:/dashboard 文件与任务管理 - 网络层:OkHttp 客户端、WebSocket 图传、局域网发现占位 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
FairScan
An Android app to scan your documents —
simple and respectful.
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.
- Website: https://fairscan.org
- Blog: https://fairscan.org/blog/
Contributing
Contributions are welcome, but please read the guidelines first: CONTRIBUTING.md
Screenshots
| Scan | Preview | Save & Share |
|---|---|---|
![]() |
![]() |
![]() |
Features
- Clear, distraction-free interface
- Easy flow: scan, review if needed, save or 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
What FairScan is not
FairScan is not intended to:
- provide fine-grained manual control over document processing
- replicate all features found in other scanning apps
- optimize for highly specific use cases at the expense of simplicity
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:
- Jetpack Compose for the UI
- CameraX for image capture
- LiteRT to run the custom segmentation model for automatic document detection
- OpenCV for perspective correction and image enhancement
- PDFBox-Android for PDF generation
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.


