【免费下载链接】FairScan
An Android app to scan your documents — simple and respectful
FairScan 是一款注重隐私的 Android 文档扫描应用:拍照自动检测纸张边缘、校正透视、增强图像,几秒内生成干净的 PDF,全程本地处理,无广告、无追踪。作为 GPL v3 开源项目,它欢迎各类贡献——本文将带你走通源码构建 APK、参与界面翻译和提交高质量 Issue三条最易上手的贡献路径,零基础也能跟着做。
先认识 FairScan:一个“简单且有分寸”的扫描 App
FairScan 的设计哲学写在 README.md 里:追求simple(扫描即用、无需手动调整)和respectful(最小权限、无水印、无追踪)。核心能力包括:
- 基于自研图像分割模型的自动文档检测
- 自动透视校正与图像增强
- 快速生成 PDF,全部处理在设备本地完成
- Jetpack Compose + CameraX + LiteRT + OpenCV + Tesseract 技术栈
下面这张是仓库调试资源中的一次真实手机拍摄,FairScan 会自动识别纸张四角并完成裁切:
经过自动裁剪、透视校正和增强处理后,最终得到干净规整的文档页面效果:
源码构建 FairScan APK:完整步骤
1️⃣ 克隆仓库
git clone https://gitcode.com/gh_mirrors/fa/FairScan.git项目由三个 Gradle 模块组成,定义在 settings.gradle.kts 中:
| 模块 | 路径 | 职责 |
|---|---|---|
:app | app/ | Android 应用主体(UI、相机、导出) |
:imageprocessing | imageprocessing/ | 纯 Kotlin 图像处理库:分割、透视校正、OCR |
:evaluation | evaluation/ | 模型评估工具(检测精度、导出质量对比) |
2️⃣ 环境准备
- 安装JDK 17和Android SDK(推荐通过 Android Studio 自动配置)
- 无需手动下载任何模型:自研分割模型由构建脚本自动拉取,见 README.md 的 Build 部分说明
3️⃣ 一条命令完成测试与构建
./gradlew clean check assembleReleasecheck:先跑全部单元测试(各模块的src/test/目录都配有测试)assembleRelease:编译 Release 版 APK,产物位于app/build/outputs/apk/release/
若需构建 Android App Bundle(供应用商店发布的形式):
./gradlew clean check :app:bundleRelease依赖版本统一收敛在 gradle/libs.versions.toml(Version Catalog),例如 Kotlin2.3.10、Compose BOM2026.03.00、OpenCV4.12.0。想读懂核心算法,可直接阅读 imageprocessing/src/main/java/org/fairscan/imageprocessing/ 下的Perspective.kt(透视校正)、Ocr.kt(文字识别)、PostProcessing.kt(图像增强)等文件——它们都是纯 Kotlin 实现,不依赖 Android API,非常适合学习。
参与翻译协作:让 FairScan 说你的语言
翻译是门槛最低的贡献方式。FairScan 的界面字符串集中管理,目前 app/src/main/res/values/ 下已有 16 个语言的翻译目录,简体中文位于 app/src/main/res/values-zh/strings.xml——对照源文件 app/src/main/res/values/strings.xml 可以看到,每个字符串上方都有注释说明它出现在哪个界面,翻译时非常友好。
官方翻译托管在Weblate平台(见 README.md 的 Translations 部分),注册后选择语言、认领条目并提交即可。建议:
- 优先翻译高置信度的短句(按钮、标题),长句可先标记
- 保留注释中提示的品牌含义,例如 “respectful” 被刻意要求保留“有分寸/尊重”的广义色彩
- 提交前在本地跑一次
./gradlew :app:assembleDebug,安装后切到中文环境实际看一眼效果
其他贡献方式:Issue 与小型 PR
CONTRIBUTING.md 明确了项目协作边界,值得细读:
- 报 Bug 最有价值的方式:描述问题场景而非指定解法;自动处理效果不佳时,从「关于」页面导出原始图像附上(截图通常帮不上忙)
- PR 原则:动手前先讨论;小而聚焦的 PR 更容易被合并;核心架构变更通常由维护者本人实现
- 许可合规:新增 Kotlin 文件需保留 LICENSE_HEADER 中的 GPL v3 头部声明
常见问题:新手第一次贡献选哪条路?
- 不会写代码→ 去 Weblate 参与翻译,收益直接可见
- 会一点 Kotlin→ 从
imageprocessing模块的单元测试入手,imageprocessing/src/test/ 里的测试能帮你快速定位算法逻辑 - 想提功能建议→ 先描述“我遇到的问题”(✅),而不是“请加一个按钮”(❌)
FairScan 的价值主张只有一句话:让扫描文档这件事,简单且被尊重。无论是构建出第一个 APK,还是补全一条中文翻译,你都在让这份简单走得更远。
参考文件:CONTRIBUTING.md · README.md · LICENSE · gradle/libs.versions.toml
【免费下载链接】FairScan
An Android app to scan your documents — simple and respectful
相关推荐
参与Shrimply开源项目:从界面翻译到贡献代码的完整路线图
参与Shrimply开源项目:从界面翻译到贡献代码的完整路线图 Shrimply 是一款用 Rust 编写的开源视频编辑器,支持 GPU 加速渲染、多轨时间线和
QOwnNotes 翻译与本地化贡献指南:从 Crowdin 协作到源码落地的完整流程
QOwnNotes 翻译与本地化贡献指南:从 Crowdin 协作到源码落地的完整流程 QOwnNotes 是一款支持 Markdown、并与 Nextclou
桌面应用Vue-Touch核心功能详解:从点击到滑动的完整手势支持
Vue Touch核心功能详解:从点击到滑动的完整手势支持 Vue Touch是Vue.js官方推出的触摸手势插件,基于强大的Hammer.js库,为Vue应用
前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考