Choisir un SDK OCR open source pour Android et iOS
Si vous cherchez un SDK OCR pour Android avec un moteur open source et un contrôle sur les modèles linguistiques, commencez par Tesseract4Android. Sur iOS, l’ancien guide de démarrage rapide de TesseractOCRiOS se heurte à un blocage de compilation native dans la configuration vérifiée ici. Utilisez ce guide pour choisir une approche d’intégration, comprendre ses exigences en matière de modèles et de plateformes, et trouver le guide d’implémentation correspondant.
Déterminer ce qui doit être open source
L’OCR convertit le texte d’une image en chaînes que votre application peut afficher ou traiter. Avant de choisir un SDK, distinguez le contrôle du moteur de reconnaissance de la capacité à traiter les images sur l’appareil. Si vous avez besoin d’un moteur que vous pouvez inspecter, modifier et compiler, Tesseract répond à cette exigence. Une API sur l’appareil ne vous accorde pas à elle seule ces droits.
Google ML Kit et Apple Vision sont des alternatives propriétaires, régies par les conditions d’utilisation de ML Kit de Google et les conditions de licence du SDK d’Apple. Ce ne sont pas des remplaçants open source de Tesseract. ML Kit traite les images d’entrée sur l’appareil, mais ses conditions décrivent aussi l’envoi de métriques d’utilisation et de performances à Google. Une reconnaissance locale ne signifie donc pas que le SDK ne communique jamais sur le réseau.
Aperçu des SDK OCR open source
| Option | Moteur et licence | Point de départ |
|---|---|---|
| Tesseract4Android 4.8.0 | Wrapper Apache-2.0 autour de Tesseract 5.5.0 | Intégration Java pour Android avec vos propres données linguistiques intégrées |
| TesseractOCRiOS 4.0.0 | Wrapper MIT autour de Tesseract 3.03-rc1 | Référence de maintenance historique ; voir la limitation de compilation native ci-dessous |
| Google ML Kit | SDK Google propriétaire | Reconnaissance de photos sur Android lorsqu’un moteur open source est facultatif |
| Apple Vision | Framework Apple propriétaire | Reconnaissance d’images fixes sur iOS lorsqu’un moteur open source est facultatif |
Tesseract lui-même est sous licence Apache-2.0.
La licence du wrapper ne couvre pas tout ce qui est livré avec lui : les dépendances natives et les
modèles linguistiques ont leurs propres licences. Le modèle anglais du guide Android provient de
tessdata 4.0.0, dont la licence des données est Apache-2.0.
Vérifiez séparément la provenance et la licence de tout modèle de remplacement.
Prérequis
Choisissez un guide adapté à vos entrées et à votre environnement de développement :
- OCR par caméra sur Android avec Tesseract : Java, Android Studio, SDK Platform 36 et JDK 21. Le projet lié exige l’API 23 ou une version ultérieure en raison de sa dépendance à CameraX. Le minimum de l’API 21 propre à Tesseract4Android n’abaisse pas l’exigence de l’application complète ; consultez le changement du SDK minimum de CameraX.
- OCR de photos sur Android avec ML Kit : Kotlin, SDK Platform 36, JDK 21 et l’API 23 ou une version ultérieure, conformément aux exigences de configuration de Google.
- OCR d’images sur iOS avec Vision : un Mac avec Xcode, une bonne connaissance de Swift et un simulateur ou appareil iOS. L’application liée utilise l’API Vision native en Swift, disponible à partir d’iOS 18.
Les guides d’implémentation fournissent les paramètres de projet complets et les chaînes d’outils testées. Leurs vérifications sur l’émulateur Android 16 et le simulateur iOS 27 ne garantissent pas le comportement sur chaque version d’OS prise en charge ni avec chaque caméra physique. Choisissez des documents représentatifs dans les langues dont vous avez besoin avant d’évaluer la qualité de la reconnaissance.
Configuration de Tesseract OCR sur Android
Suivez la configuration du projet Tesseract pour Android
depuis le début. Elle épingle ensemble Tesseract4Android 4.8.0, OpenCV 4.13.0 et CameraX 1.6.2,
et configure JitPack pour la dépendance Tesseract. Conservez ces versions épinglées pendant le
tutoriel avant d’essayer des mises à niveau.
La configuration intègre le modèle anglais de tessdata 4.0.0
dans app/src/main/assets/tessdata/eng.traineddata. Son gestionnaire copie l’asset dans le stockage privé de
l’application avant l’initialisation. Tesseract a besoin d’un répertoire lisible du système de
fichiers contenant tessdata ; un asset à l’intérieur de l’APK n’est pas un tel répertoire. Intégrer le
modèle évite de le télécharger au premier lancement, au prix de la conservation à la fois de l’asset
empaqueté et de sa copie privée.
Faites correspondre la famille de modèles au mode du moteur. La
documentation de Tesseract sur les données entraînées distingue
tessdata, tessdata_fast et tessdata_best ; ces deux derniers nécessitent le moteur LSTM. Une
version de wrapper comme 4.8.0 n’est ni la version du moteur intégré ni celle de la publication du modèle.
Implémentation de l’OCR dans une application Android
La classe OCRManager.java complète
installe le modèle, reconnaît un bitmap et libère les ressources natives. Exécutez l’initialisation,
la reconnaissance et le nettoyage sur un seul worker d’arrière-plan sériel. L’activité environnante
gère l’autorisation d’accès à la caméra, la rotation des images et une file d’analyse bornée : copier
uniquement le gestionnaire ne suffit pas à créer un scanner par caméra.
Utilisez les étapes de dépannage de ce guide pour distinguer un modèle manquant ou corrompu d’un résultat de reconnaissance vide. Pour une application que vous comptez distribuer, suivez la procédure de vérification de la taille de page de 16 KB d’Android pour l’APK complet et ses bibliothèques natives.
Si vous avez besoin d’un sélecteur de fichiers ou d’une capture photo unique, et que vous pouvez utiliser un SDK propriétaire, suivez le guide de reconnaissance de photos avec ML Kit en Kotlin. Il utilise le modèle latin intégré, affiche un résultat ou un message d’état adapté lorsque la reconnaissance ne renvoie aucun texte ou lorsque l’image est illisible, et gère l’annulation de la sélection ou de la capture. La dépendance alternative de Google via les services Play télécharge son modèle ; elle ne peut pas renvoyer de résultats de reconnaissance avant que ce modèle soit prêt.
Évaluer l’ancien SDK OCR Tesseract pour iOS
N’adoptez pas l’ancien guide de démarrage rapide CocoaPods comme configuration iOS moderne
fonctionnelle. D’après la vérification du 23 septembre 2026, le
podspec TesseractOCRiOS 5.0.1
pointe vers un tag 5.0.1 absent des
tags en amont. L’enregistrement sur CocoaPods ne garantit pas que sa
source puisse être récupérée.
L’archive source 4.0.0 est récupérable. Cependant, l’édition de liens de sa bibliothèque libtesseract_all.a non modifiée
pour un simulateur iOS arm64 avec Xcode 27.0 et le SDK iOS Simulator 27.0 échoue avec le diagnostic
« 64-bit mach-o not 8-byte aligned ». Un programme témoin est lié sans erreur sans cette
bibliothèque. Il s’agit d’un blocage de compilation native dans cette configuration : il n’existe
donc ici aucune exécution OCR iOS réussie à recommander pour ce paquet. Cela ne prouve pas que chaque
portage de Tesseract ou chaque configuration d’appareil plus ancienne échoue.
Le README de la version taguée indique aussi
Tesseract 3.03-rc1 comme moteur intégré. Ses exigences de modèles historiques diffèrent des données
entraînées 4.0.0 de la recette Android. Modifier une version dans le Podfile ou copier le modèle
Android ne résout pas le problème de compilation native.
Implémentation de l’OCR dans une application iOS
Si un moteur open source est obligatoire, prévoyez le temps de valider et de maintenir une intégration Tesseract pour iOS. Avant de vous y engager, exigez une compilation à partir de la source ou du paquet choisi, des binaires compatibles pour les appareils et le simulateur, et la reconnaissance avec vos véritables modèles linguistiques. SwiftyTesseract est archivé, et son mainteneur indique qu’il ne recevra plus de mises à jour. Changer simplement de wrapper ne règle pas les questions de maintenance ou de compatibilité.
Si un framework Apple propriétaire répond à vos exigences, suivez le
guide d’OCR d’images fixes avec SwiftUI.
Il utilise RecognizeTextRequest pour lire des images PNG et JPEG locales sélectionnées dans Fichiers, préserver
l’orientation des images et afficher du texte anglais sélectionnable. Il comprend les fichiers de
l’application, les étapes de saisie dans le simulateur, les messages d’erreur et la gestion de
l’annulation, sans binaire OCR tiers ni répertoire tessdata. L’application conserve la transcription
en mémoire au lieu d’enregistrer un historique des numérisations.
Il s’agit d’un flux de travail pour images fixes. Pour un scanner par caméra en direct, le même guide explique l’intégration distincte de VisionKit et les vérifications sur appareil physique. Un test d’image dans le simulateur ne permet pas de valider la récupération de l’autorisation d’accès à la caméra, la mise au point ni la qualité de reconnaissance sur un vrai téléphone.
Conseils pour optimiser les performances de l’OCR
Commencez avec un texte net et droit, et suffisamment de pixels pour distinguer les caractères. Recadrez l’arrière-plan gênant tout en laissant une petite bordure. Tesseract binarise déjà les images en interne : comparez votre prétraitement avec l’original avant d’ajouter un seuillage ou un flou. Son guide sur la qualité d’image explique le redressement, les bordures et le choix de la segmentation de page pour une ligne, un bloc ou une page.
Avant de choisir un moteur, faites passer le même petit ensemble de documents par les intégrations candidates. Incluez une image au texte connu, une image vide, un JPEG pivoté avec des métadonnées d’orientation, ainsi qu’un fichier corrompu ou manquant. Vérifiez qu’un texte vide se distingue d’un échec et qu’un traitement annulé ou obsolète ne peut pas remplacer un résultat plus récent. Si cela compte pour votre application, testez une nouvelle installation hors ligne avec des images déjà stockées localement. Mesurez ensuite les erreurs sur les champs dont vous avez réellement besoin, comme les numéros de facture, plutôt que de traiter un seul échantillon propre comme une référence de précision.
