Update README: live overlay, upload confirmation, languages, roadmap

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 20:11:28 +02:00
parent e02e69052d
commit f6bb68b962

View File

@@ -12,12 +12,16 @@ Paperless server you configure yourself. There is no AI or cloud processing.
## Features ## Features
- 📷 Camera preview with multi-page capture (add pages one by one) - 📷 Camera preview with multi-page capture (add pages one by one)
- 🟢 Live edge-detection overlay while aiming — see the document outline before you capture
- ✂️ Automatic edge detection + perspective correction (OpenCV), with manual corner adjustment - ✂️ Automatic edge detection + perspective correction (OpenCV), with manual corner adjustment
- 🎨 Per-page filters: color, grayscale, black & white (document mode) - 🎨 Per-page filters: color, grayscale, black & white (document mode)
- 🔄 Rotate, reorder and delete pages - 🔄 Rotate, reorder and delete pages
- 📄 Export to a multi-page PDF (A4 or original size) - 📄 Export to a multi-page PDF (A4 or original size)
- ☁️ Direct upload to Paperless-ngx **or** share via the Android share sheet - ☁️ Direct upload to Paperless-ngx **or** share via the Android share sheet
- ✅ Real upload feedback — the app waits for Paperless to consume the document and reports
**Added / Duplicate / Failed** (with a *Don't wait* option to skip the wait)
- 🔊 Capture feedback: shutter sound (only when the ringer isn't silenced) + a brief flash - 🔊 Capture feedback: shutter sound (only when the ringer isn't silenced) + a brief flash
- 🌍 Localized UI (see [Languages](#languages))
- 🔐 API token stored encrypted (Android Keystore / EncryptedSharedPreferences) - 🔐 API token stored encrypted (Android Keystore / EncryptedSharedPreferences)
## Tech ## Tech
@@ -91,6 +95,16 @@ The build uses env vars, so nothing sensitive ends up in the repo.
Prefer **https**; with `http://` the app warns that the token and documents travel over the Prefer **https**; with `http://` the app warns that the token and documents travel over the
network unencrypted. network unencrypted.
## Languages
The UI ships in **English** (default), **Dutch**, **German**, **French**, **Spanish**,
**Italian** and **Portuguese**. The app follows your device language automatically.
All strings live in `app/src/main/res/values/strings.xml` (English base). Contributing a
language is just adding a `values-<code>/strings.xml` with the same keys — e.g.
`values-pl/strings.xml` for Polish. Every string must be present in every locale (the release
lint enforces this).
## Project layout ## Project layout
``` ```
@@ -99,19 +113,20 @@ app/src/main/java/eu/geyskens/pdfscan/
├── MainActivity.kt # Compose host + navigation ├── MainActivity.kt # Compose host + navigation
├── ScanViewModel.kt # scan session, rendering, export, upload ├── ScanViewModel.kt # scan session, rendering, export, upload
├── data/ # Page model, ScanFilter, SettingsRepository ├── data/ # Page model, ScanFilter, SettingsRepository
├── scan/ # EdgeDetector, ImageProcessor, BitmapIo (OpenCV) ├── scan/ # EdgeDetector, DocumentAnalyzer (live), ImageProcessor, BitmapIo
├── pdf/ # PdfBuilder (multi-page PDF) ├── pdf/ # PdfBuilder (multi-page PDF)
├── paperless/ # PaperlessClient (OkHttp REST + task polling) ├── paperless/ # PaperlessClient (OkHttp REST + task polling)
└── ui/screens/ # Camera, Pages, Crop, Export, Settings └── ui/screens/ # Camera, Pages, Crop, Export, Settings
``` ```
UI strings are in `res/values*/strings.xml` (one file per language).
## Roadmap ## Roadmap
Tracked as issues in the repository: Tracked as issues in the repository:
- Live edge-detection overlay while aiming (like Microsoft Lens) - Batch import scans from the gallery (import existing photos as pages)
- Internationalization: extract UI strings to resources + add translations - More UI languages (contributions welcome)
- Batch import scans from the gallery
> OCR is intentionally **not** done on-device: Paperless-ngx already runs OCR (via > OCR is intentionally **not** done on-device: Paperless-ngx already runs OCR (via
> OCRmyPDF/Tesseract) when it consumes the uploaded document. > OCRmyPDF/Tesseract) when it consumes the uploaded document.