The best open-source Android OCR

November 05, 2025
laurens@ente.io

Ente Photos now comes with text recognition on both iOS and Android. Open any photo with text, tap the new text icon, and the app will surface the words it sees. Everything happens on your device, so nothing about that receipt, passport or love letter ever leaves your control.

For more information on how to use it, please check our docs.

Bringing OCR to mobile

For iOS, we could lean on Apple's excellent Vision framework. It ships with the OS and all of the work stays local, hence private. Most importantly, it actually works well. Using such a mature system API meant the iOS implementation was very straightforward.

Android is where we needed to build something new. Until now, most open-source implementations were aging Tesseract ports with lackluster accuracy. Google's ML Kit was the only available implementation with good results, but its dependence on Google Play Services and closed nature made it a non-starter for us.

We eventually found PaddleOCR. It was built for large-scale document ingestion, not consumer phones, but the models looked exactly like what we needed.

PaddleOCR provided the architecture we wanted to mirror, and RapidOCR confirmed conversion to ONNX was possible, so we rolled up our sleeves and brought PaddleOCR v5 over to ONNX Runtime on Android.

This meant exporting the DB detector, angle classifier, and SVTR recognizer to ONNX. We then rebuilt all the pre- and post-processing in Kotlin, covering polygon extraction, angle fixes, CTC decoding, and the rest, so we preserve the exact behavior of the original PaddleOCR pipeline. We wrapped everything inside a Flutter plugin powered by ONNX Runtime Mobile, and added a lightweight text check so the app can scan a gallery during scrolls and only run full recognition when a photo actually needs it.

The payoff is high-accuracy OCR that comfortably runs on all phones, locally and privately. It handles rotated documents, street signs, and multi-language receipts with the same fidelity as PaddleOCR, only now it happens entirely on your device. To the best of our knowledge, this is the first fully open-source OCR solution available on Android that actually works well.

Try it

Update to the latest Ente Photos release, open a photo, and tap the text icon to select and copy the words. We'd love to hear the workflows this unlocks for you - drop by Discord and tell us what you're reading next.