# OpenScan: a Flutter document scanner with no OCR and no in-app ads claim

> OpenScan is an open source Android document scanner written in Flutter that turns camera captures into PDF or JPG and shares them. The README documents building an APK and lists three key features, as well as uploading scans to a cloud service of the user's choice.

**ethereal-developers/OpenScan** — Document Scanner that protects your privacy

- Repository: https://github.com/ethereal-developers/OpenScan
- Stars: 1,848 · Forks: 121
- Language: Dart
- License: BSD-3-Clause
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/ethereal-developers-openscan

## Three features, stated plainly

The KEY FEATURES section of the README is short enough to quote in full, which is unusual and useful:

- Scan your documents, notes, business cards.
- Simple and powerful cropping features.
- Share as PDF/JPGs.

That is the product. The README does not mention OCR, text search, accounts, in-app purchases or advertising SDKs, but it does describe uploading scans to a cloud service. For a scanner app in 2026 that is an unusually short list, and it is the honest description of what you get.

The use cases the README elaborates are all about capture and sharing rather than processing. Scanning official documents, notes, photos and business cards, converting them to a PDF file, and sharing via any messaging app that allows it. Receipts for tax filing, handwritten lecture notes, whiteboard and blackboard photos, and business cards saved so a contact is not lost.

One detail has real utility and is easy to miss. Under the educational section the README states that all documents are timestamped, so you can look up the date or time of the lecture to find the notes again. Document metadata that survives into the file is more useful than it sounds, because the failure mode of a scanner is losing track of which of forty photographs is which.

The privacy claim rests on two things the README lists as the ways it differs from other apps: open sourcing the app, and respecting data privacy. The elaboration before that is about not forcing ads on the screen. No technical claim about encryption, on-device processing or network behaviour is made in the README, so the argument rests on source availability rather than on stated architecture.

## Where the app actually ships

Two distribution channels are linked from the top of the README. The first is Google Play, under the package id `com.ethereal.openscan`. The second is IzzyOnDroid, an alternative Android app catalogue, at `apt.izzysoft.de/fdroid/index/apk/com.ethereal.openscan`.

Both are Android. The README does not present an iOS build as available. It contains an `ios/` directory, but the documented build instructions cover Android Studio and the terminal and produce an APK.

That combination is coherent. A Flutter project that ships to Android and Google Play, is also listed on IzzyOnDroid for people who avoid proprietary stores, and open sources its code so the privacy claim is checkable.

The package id is the same across both listings, so the two channels distribute the same application rather than a store edition and a FOSS edition. The repository layout supports this reading: there is a `fastlane/` directory holding the store metadata and screenshots, a separate `store_assets/` directory for assets distinct from the app, and a directory named `Privacy Policy for Google Play/` containing the policy document submitted to the store.

That last directory is the one to read first if you are evaluating the privacy claim, because it is the actual text shown to users, sitting in the repository rather than behind a link.

Internationalisation is set up as well, with an `l10n.yaml` at the top level alongside `lib/`, so the app is structured for translation rather than English only.

## Building an APK from source

The build section is one of the more complete ones in a Flutter app README. It assumes you have already set up Flutter locally, linking the official installation docs, and gives a clone command with a note that the repository URL differs from the path shown in the screenshot links:

```cmd
git clone https://github.com/Ethereal-Developers-Inc/OpenScan.git
```

Two routes are then documented.

Through Android Studio, the steps are deliberately specific in one place: open the project, make sure your cursor is focused on `lib/main.dart` or any other Dart file by clicking one, then use Build, Flutter, Build APK in the top menu bar. 

Through the terminal, run the build from the directory containing `pubspec.yaml`:

```cmd
flutter build apk
```

Both routes end at the same artifact path, which the README gives in full:

```
build > app > outputs > apk > release > app-release.apk
```

That file is what you install on a phone.

Two things follow from this that are worth planning around. First, the instructions produce a release APK, and the README does not mention a signing configuration, so a locally built APK is for your own device rather than for distribution. Second, the repository ships `pubspec.lock`, which pins the Dart package versions, so a build attempts to reproduce the same dependency set rather than resolve current versions.

The repository also has `integration_test/`, `test/`, an `analysis_options.yaml` and a `devtools_options.yaml`, so there is a test suite and static analysis configuration in place even though the README does not document how to run them.

## Release history says v3 was a long gap after v2

The version history is the most informative fact about the project and it deserves to be read as a schedule rather than as a health indicator.

v2.2.0 shipped on 2021-09-21 and v2.1.0 on 2021-06-21. Then v3.0.0 shipped on 2026-09-05, roughly five years later. The last push was on 2026-10-11, about a month after the v3 release.

The listed history shows v2.2.0 and v2.1.0 followed by v3.0.0 and a later push after that release. The screenshot links in the README point at a `dev_v3` branch, and the default branch is `master`, which suggests the 3.x work happened on a long lived development branch before landing.

For an adopter, the practical questions are about the v3 migration rather than about the gap. Anyone on v2 needs to know what changed, and the README does not describe the changes; the `CHANGELOG.md` at the top level is where that would be recorded. Anyone starting fresh is on v3 and the five year gap is irrelevant.

The privacy argument is also only as good as the current code. A scanner app's handling of images is determined by the version you run, so an audited old build tells you less than the source of the build you will actually install.

Licence is BSD-3-Clause with a LICENSE file at the top level, which permits redistribution of a modified build, so if the Google Play and IzzyOnDroid builds do not match your needs, forking and rebuilding is permitted without relicensing.

## How this compares, and where it stops

The comparison is with the scanner built into the operating system and with the general purpose document apps on the stores.

A built-in phone scanner gets you a capture and a PDF with no install step, and it is the right answer when capturing a page is all you need. The difference OpenScan offers is cropping control, which the README calls simple and powerful without quantifying it, and share targets that are any messaging app accepting the file.

A general document app with OCR gives you searchable text, which OpenScan does not offer at all. If your workflow is filing receipts and later finding "that invoice from March" by searching, a scanner without text recognition is the wrong tool and no amount of privacy argument changes that.

Where OpenScan is genuinely on firmer ground is the inspection question. The full application source is public, the privacy policy document is in the repository, and you can build the APK yourself and see what is in it. For an app whose entire input is images of your identity documents, receipts and contracts, being able to read the code path from camera to file is a reasonable basis for choosing it, and it is the claim the project actually makes.

The limits to state plainly. No OCR, no cloud sync, no desktop target, no documented iOS build, no batch processing of a multi-page document beyond what scanning implies, and no stated encryption. Anything beyond capture, crop and share is outside the documented feature set.

## Conclusion

Adopt OpenScan if you want a scanner whose source you can read before it touches camera data, and you are willing to accept a three feature application: scan, crop, share as PDF or JPG. Do not adopt it expecting searchable text, cloud sync, batch OCR or an iOS build you can produce, since none of those appear in the README. Verify first that the current master branch builds on your Flutter version, and read the Privacy Policy for Google Play file at the top level of the repository, since the privacy claim is the main reason to choose this over a store listing you cannot inspect.

## FAQ

### How do I build OpenScan from source?

Set up Flutter, clone the repository with git clone https://github.com/Ethereal-Developers-Inc/OpenScan.git, then run flutter build apk from the directory containing pubspec.yaml. The generated file is at build/app/outputs/apk/release/app-release.apk.

### Does OpenScan have OCR or text recognition?

No. The README lists three key features only: scanning documents, notes and business cards, cropping, and sharing as PDF or JPGs. OCR and searchable text are not part of the documented feature set.

### Where can I download OpenScan?

From Google Play and from IzzyOnDroid, both under the package id com.ethereal.openscan. The README also gives build instructions so you can produce an APK yourself.

### What licence is OpenScan released under?

BSD-3-Clause, with a LICENSE file at the top level of the repository. That permits redistribution of a modified build, which is relevant if you build your own APK rather than using the store version.

### What is the privacy policy for OpenScan?

The repository contains a directory named Privacy Policy for Google Play holding the policy document submitted to the store, which is the first place to check the privacy claim rather than the README summary.

## Sources

- [ethereal-developers/OpenScan on GitHub](https://github.com/ethereal-developers/OpenScan)
- [Issues](https://github.com/ethereal-developers/OpenScan/issues)
- [License: BSD-3-Clause](https://github.com/ethereal-developers/OpenScan/blob/master/LICENSE)
- [README](https://github.com/ethereal-developers/OpenScan/blob/master/README.md)
- [Releases](https://github.com/ethereal-developers/OpenScan/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ethereal-developers-openscan
