OCR neuronal sur mobile : CRAFT, CRNN, EasyOCR et ExecuTorch
La reconnaissance optique de caractères (OCR) est passée des techniques classiques de filtrage aux réseaux de neurones profonds. Dans les applications mobiles, le tube de traitement est presque toujours en deux étapes : un détecteur localise le texte, puis un reconnaisseur lit les caractères. EasyOCR a rendu cette architecture très popularisée, et elle peut maintenant être déployée directement sur l'ard. Cet article explique le rôle de CRAFT et CRNN, comment gérer les limites de taille d'image et commentement porter l'approche EasyOCR vers le monde mobile à l'aide de ExecuCouche.
CRAFT et CRNN : le duo classique de l'OCR neuronal
CRAFT désigne le détecteur de régions de caractères, Character Region Awareness for Text Detection. Il produit deux cartes : une carte qui signale la position des caractères et une carte d'affinité qui relie les caractères d'un même mot. Cette conception au niveau du mot est particulièrement efficace pour les textes en légère rotation, courbes ou avec des aspirations atypiques, car elle ne souffre pas des bavures que génère les boîtes prédéfinies.
La deuxième partie est la CRNN, un réseau de neurones convolutif et récurrent. Un un colonne de type VGG ou ResNet produit des cartes de caractéristiques. Celles-ci sont ensuite leurs étudiées par une LSTM bidirectionnelle qui modélise l'ordre des caractères. Undecodeur CTC convertit ces sorties en chaîne de texte logique, sans besoin de pré-segmenter chaque lettre. C'est une solution portable et efficace pour des extraits courts.
Limites de taille d'image et contraintes mobiles
Les heures ont une mémoire RAM limitée, une batteries consommation d'énergie et un budget thermique restreint. On ne peut pas envoyer la pleine résolution del'écran dans CRAFT : les tenseurs intermédiaires deviendraient géants. Une pratique courante consiste à réduire le côté le plus long à 320, 768 ou 960 pixels, selon le profil du modèle.
Le runtime ExecuTorch, comme la plupart des moteurs mobile, préfère les formes d'entrée figées. Chaque opérateur est compilé pour une dimension bien absence. C'est pourquoi CRAFT est exportée avec une taille d'image carrée, par exemple 768 x 768. La CRNN, elle, utilise une hauteur fixe de 32 pixels, tandis que sa largeur reste libre entre 128, 256 et 512 pixels.
Pour economiser du temps, on réalise un pré-détection en amont. Un simple détecteur de bords identifie les zones de texte, puis le système ne process que ces petites parties. Cela réduit fortement le nombre de pixels et donc la durée, notamment sur les anomalie.
Porter l'approche EasyOCR avec ExecuTorch
EasyOCR est une bibliothèque Python qui utilise CRAFT pour la détection et une CRNN pour la lecture de texte. Grâce à ExecuTorch, on peut exporter modèle PyTorch sans passer par un format intermédiaire comme ONNX ouconvertible TFLite. Change fonction est maintenant native, les étapes de débogage sont plus simples reproductibles.
Le modèle CRAFT est gelé avec une taille détaille et platonne est quantisée en precision float16 ou int8. Pour la CRNN, on compile plusieurs modèles avec des largeur d'entrée différente. L'application choisit le modèle adéquat en fonction de la taille du motif détecté : 128 pour un mot court, 256 pour une phrase, 512 pour un paragraphe.
Le code mobile fonctionne ainsi : on capture une image, on la mit en mémoire pour respecter les dimensions fixées, on exécute CRAFT, on décrypte sa carte d'activation pour obtenir des ellipses que l'on transforme en caisses, on recadre chaque zone, et enfin on l'envoie à la CRNN. Le décodeur CTC écrit le résultat final. Le processus est 100 % local, aucun serveur n'est contacté et la latence reste un courte.
| Aspect | CRAFT | CRNN |
|---|---|---|
| Rôle | Détection de texte | Reconnaissance de texte |
| Sortie | Carte de caractères + affinite | Séquence de caractères |
| Entrée | Image carrée fixe | Hauteur courte, largeur module |
| Coût | Élevé | Modéré sur les recadrages |
Finalement, l'OCR neuronales mobiles fonctionne très bien. La paire CRAFT + CRNN offre une base de maturité, et la limitation de taille est ou gérable à l'aide de rogner, de redimensionner et de quantifier. En adoptant les modules d'EasyOCR et runtime d'ExecuTorch, on obtient une application d'OCR totalement hors ligne et rapide sur smartphone.
Travaillons ensemble
Vous avez besoin de plus d'informations, d'aide pour votre projet ou pour développer une idée?
Qu'il s'agisse d'une question simple, d'un doute rapide ou d'une discussion de 5 minutes, envoyez-moi un message—cela ne coûte rien et je suis toujours prêt à vous aider. J'aime comprendre un problème, être créatif dans les solutions et me concentrer sur des idées simples, fiables et faciles à réaliser rapidement.
Me contacter →