Ein Open-Source-OCR-SDK für Android und iOS wählen
Für ein Android-OCR-SDK mit einer Open-Source-Engine und Kontrolle über Sprachmodelle beginnen Sie mit Tesseract4Android. Unter iOS scheitert der native Build des älteren TesseractOCRiOS-Schnellstarts in der hier geprüften Konfiguration. Dieser Leitfaden hilft Ihnen, einen Integrationsweg zu wählen, dessen Modell- und Plattformanforderungen zu verstehen und die passende Implementierungsanleitung zu finden.
Entscheiden Sie, was Open Source sein muss
OCR wandelt Text aus Bildern in Zeichenfolgen um, die Ihre App anzeigen oder verarbeiten kann. Unterscheiden Sie vor der SDK-Auswahl zwischen der Kontrolle über die Erkennungs-Engine und der Möglichkeit, Bilder auf dem Gerät zu verarbeiten. Wenn Sie eine Engine benötigen, deren Quellcode Sie einsehen, ändern und selbst kompilieren können, erfüllt Tesseract diese Anforderung. Eine API, die auf dem Gerät arbeitet, gewährt diese Rechte nicht automatisch.
Google ML Kit und Apple Vision sind proprietäre Alternativen, für die die ML Kit-Nutzungsbedingungen von Google und die SDK-Lizenzbedingungen von Apple gelten. Sie sind keine Open-Source-Alternativen zu Tesseract. ML Kit verarbeitet Eingabebilder auf dem Gerät, doch seine Bedingungen beschreiben auch die Übermittlung von Nutzungs- und Leistungsmetriken an Google. Lokale Erkennung bedeutet nicht, dass das SDK niemals über das Netzwerk kommuniziert.
Überblick über Open-Source-OCR-SDKs
| Option | Engine und Lizenz | Einstieg |
|---|---|---|
| Tesseract4Android 4.8.0 | Apache-2.0-Wrapper für Tesseract 5.5.0 | Android-Java-Integration mit eigenen mitgelieferten Sprachdaten |
| TesseractOCRiOS 4.0.0 | MIT-Wrapper für Tesseract 3.03-rc1 | Referenz zur Wartung älterer Integrationen; Einschränkung beim nativen Build siehe unten |
| Google ML Kit | Proprietäres Google-SDK | Fotoerkennung unter Android, wenn eine Open-Source-Engine optional ist |
| Apple Vision | Proprietäres Apple-Framework | Einzelbilderkennung unter iOS, wenn eine Open-Source-Engine optional ist |
Tesseract selbst verwendet Apache-2.0.
Die Wrapper-Lizenz deckt nicht alles ab, was mitgeliefert wird: Native Abhängigkeiten und Sprachmodelle
haben eigene Lizenzen. Das englische Modell der Android-Anleitung stammt aus
tessdata 4.0.0, dessen Daten unter Apache-2.0 lizenziert sind.
Prüfen Sie Herkunft und Lizenz jedes Ersatzmodells separat.
Voraussetzungen
Wählen Sie eine Anleitung, die zu Ihrer Eingabe und Entwicklungsumgebung passt:
- Android-Kamera-OCR mit Tesseract: Java, Android Studio, SDK Platform 36 und JDK 21. Das verlinkte Projekt benötigt wegen seiner CameraX-Abhängigkeit API 23 oder höher. Die eigene Mindestanforderung von Tesseract4Android, API 21, senkt die Anforderung der vollständigen App nicht; siehe die Änderung der CameraX-Mindest-SDK-Version.
- Android-Foto-OCR mit ML Kit: Kotlin, SDK Platform 36, JDK 21 und API 23 oder höher, gemäß den Einrichtungsanforderungen von Google.
- iOS-Bild-OCR mit Vision: ein Mac mit Xcode, Swift-Kenntnisse und ein iOS-Simulator oder Gerät. Die verlinkte App verwendet die Swift-native Vision-API, die ab iOS 18 verfügbar ist.
Die Implementierungsanleitungen enthalten vollständige Projekteinstellungen und die getesteten Toolchains. Ihre Prüfungen im Android-16-Emulator und iOS-27-Simulator belegen nicht das Verhalten auf jedem unterstützten Betriebssystem oder mit jeder physischen Kamera. Wählen Sie repräsentative Dokumente in den benötigten Sprachen aus, bevor Sie die Erkennungsqualität bewerten.
Tesseract OCR unter Android einrichten
Folgen Sie der Projekteinrichtung für Android Tesseract
von Anfang an. Sie legt die Versionen Tesseract4Android 4.8.0, OpenCV 4.13.0 und CameraX 1.6.2
als Kombination fest und konfiguriert JitPack für die Tesseract-Abhängigkeit. Behalten Sie diese
Versionen für die Anleitung bei, bevor Sie Upgrades ausprobieren.
Die Einrichtung liefert das englische Modell aus tessdata 4.0.0
unter app/src/main/assets/tessdata/eng.traineddata mit. Der Manager kopiert das Asset vor der Initialisierung in den
app-privaten Speicher. Tesseract benötigt ein lesbares Dateisystemverzeichnis, das
tessdata enthält; ein Asset innerhalb der APK ist kein solches Verzeichnis.
Das mitgelieferte Modell macht einen Modelldownload beim ersten Start überflüssig. Dafür müssen
sowohl das gepackte Asset als auch seine private Kopie gespeichert bleiben.
Stimmen Sie die Modellfamilie auf den Engine-Modus ab. Die
Dokumentation zu trainierten Daten von Tesseract unterscheidet
tessdata, tessdata_fast und tessdata_best;
die beiden letzteren benötigen die LSTM-Engine. Eine Wrapper-Version wie
4.8.0 ist weder die Version der mitgelieferten Engine noch die Modellversion.
OCR in einer Android-App implementieren
Die vollständige Klasse OCRManager.java
installiert das Modell, erkennt Text in einer Bitmap und gibt native Ressourcen frei. Führen Sie
Initialisierung, Erkennung und Bereinigung auf einem einzigen seriellen Hintergrund-Worker aus.
Die umgebende Activity übernimmt Kameraberechtigungen, Frame-Rotation und eine begrenzte
Analysewarteschlange. Den Manager allein zu kopieren, ergibt noch keinen Kamerascanner.
Nutzen Sie die Schritte zur Fehlerbehebung in dieser Anleitung, um ein fehlendes oder beschädigtes Modell von einem leeren Erkennungsergebnis zu unterscheiden. Für eine App, die Sie veröffentlichen möchten, befolgen Sie das Android-Prüfverfahren für Seitengrößen von 16 KB für die vollständige APK und ihre nativen Bibliotheken.
Wenn Sie eine Dateiauswahl oder eine einzelne Fotoaufnahme benötigen und ein proprietäres SDK verwenden können, folgen Sie der Anleitung zur Fotoerkennung mit Kotlin und ML Kit. Sie verwendet das mitgelieferte Modell für lateinische Schrift, zeigt Ergebnisse für leere und unlesbare Bilder an und behandelt abgebrochene Auswahl- oder Aufnahmevorgänge. Die alternative Play-services-Abhängigkeit von Google lädt ihr Modell herunter; sie kann erst Erkennungsergebnisse liefern, wenn dieses Modell bereit ist.
Das ältere Tesseract-OCR-SDK für iOS bewerten
Übernehmen Sie den alten CocoaPods-Schnellstart nicht als funktionierende Einrichtung für modernes
iOS. Bei der Prüfung am 23. September 2026 verwies die
podspec für TesseractOCRiOS 5.0.1
auf einen Tag namens 5.0.1, der unter den
Upstream-Tags fehlt. Die Registrierung bei CocoaPods belegt nicht,
dass sich der Quellcode abrufen lässt.
Das Quellarchiv für 4.0.0 lässt sich abrufen. Das Verlinken der unveränderten
Bibliothek libtesseract_all.a für einen arm64-iOS-Simulator mit Xcode 27.0 und dem
iOS Simulator 27.0 SDK scheitert jedoch mit der Diagnose „64-bit mach-o not 8-byte aligned“.
Ein Kontrollprogramm lässt sich ohne diese Bibliothek verlinken. In dieser Konfiguration blockiert
dies den nativen Build. Daher gibt es hier keinen erfolgreichen iOS-OCR-Lauf, auf dessen Grundlage
sich dieses Paket empfehlen ließe. Das belegt nicht, dass jede Tesseract-Portierung oder ältere
Gerätekonfiguration scheitert.
Die README des Tags nennt zudem
Tesseract 3.03-rc1 als mitgelieferte Engine. Deren ältere Modellanforderungen
unterscheiden sich von den trainierten Daten aus 4.0.0 in der
Android-Anleitung. Eine andere Version im Podfile oder das Kopieren des Android-Modells löst das
Problem beim nativen Build nicht.
OCR in einer iOS-App implementieren
Wenn eine Open-Source-Engine zwingend erforderlich ist, planen Sie Aufwand für die Validierung und Wartung einer iOS-Tesseract-Integration ein. Verlangen Sie einen erfolgreichen Build aus dem gewählten Quellcode oder Paket, kompatible Binärdateien für Geräte und Simulatoren sowie die Erkennung mit Ihren tatsächlichen Sprachmodellen, bevor Sie sich festlegen. SwiftyTesseract ist archiviert, und laut seinem Maintainer wird es keine weiteren Updates erhalten. Ein bloßer Wechsel des Wrappers klärt weder Wartung noch Kompatibilität.
Wenn ein proprietäres Apple-Framework Ihre Anforderungen erfüllt, folgen Sie der
Anleitung zur Einzelbild-OCR mit SwiftUI.
Sie verwendet RecognizeTextRequest, um lokale PNG- und JPEG-Bilder zu lesen, die in der
App „Dateien“ ausgewählt wurden, die Bildausrichtung beizubehalten und auswählbaren englischen Text
anzuzeigen. Sie enthält die App-Dateien, Schritte zur Eingabe im Simulator, Fehlermeldungen und die
Behandlung von Abbrüchen, ohne eine OCR-Binärdatei eines Drittanbieters oder ein Verzeichnis namens
tessdata. Die App hält den erkannten Text im Arbeitsspeicher, statt einen
Scanverlauf zu speichern.
Das ist ein Workflow für Einzelbilder. Für einen Live-Kamerascanner erläutert dieselbe Anleitung die separate VisionKit-Integration und Prüfungen auf physischen Geräten. Ein Bildtest im Simulator belegt weder die Wiederherstellung nach Problemen mit Kameraberechtigungen noch Fokus oder Erkennungsqualität auf einem echten Smartphone.
Tipps zur Optimierung der OCR-Leistung
Beginnen Sie mit scharfem, aufrechtem Text und genügend Pixeln, um Zeichen zu unterscheiden. Schneiden Sie störenden Hintergrund weg, lassen Sie aber einen kleinen Rand stehen. Tesseract binarisiert Bilder bereits intern. Vergleichen Sie Ihre Vorverarbeitung mit dem Original, bevor Sie Schwellwertverfahren oder Weichzeichnung hinzufügen. Die Anleitung zur Bildqualität erläutert das Begradigen, Ränder und die Auswahl der Seitensegmentierung für eine Zeile, einen Block oder eine Seite.
Verarbeiten Sie vor der Wahl einer Engine denselben kleinen Dokumentensatz mit den infrage kommenden Integrationen. Nehmen Sie ein Bild mit bekanntem Text, ein leeres Bild, ein gedrehtes JPEG mit Ausrichtungsmetadaten und eine beschädigte oder fehlende Datei auf. Prüfen Sie, ob sich leerer Text von einem Fehler unterscheiden lässt und ob abgebrochene oder veraltete Vorgänge kein neueres Ergebnis ersetzen können. Testen Sie eine Neuinstallation offline, falls das für Ihre App relevant ist, und verwenden Sie dafür bereits lokal gespeicherte Bilder. Messen Sie anschließend Fehler in den Feldern, die Sie tatsächlich benötigen, etwa Rechnungsnummern, statt ein einzelnes sauberes Beispiel als Maßstab für die Genauigkeit zu betrachten.
