Reconnaissance optique de caractères (OCR)

La reconnaissance optique de caractères (OCR) est le processus de reconnaissance de caractères à partir d'images à l'aide de techniques de vision par ordinateur et d'apprentissage automatique. Cette application de référence montre comment utiliser TensorFlow Lite pour faire de l'OCR. Il utilise une combinaison d' un modèle de détection de texte et d'un modèle de reconnaissance de texte en tant que pipeline OCR pour reconnaître les caractères de texte.

Commencer

Si vous débutez avec TensorFlow Lite et que vous travaillez avec Android, nous vous recommandons d'explorer l'exemple d'application suivant qui peut vous aider à démarrer.

Exemple Android

Si vous utilisez une plateforme autre qu'Android, ou si vous connaissez déjà les API TensorFlow Lite , vous pouvez télécharger les modèles depuis TF Hub .

Comment ça fonctionne

Les tâches d'OCR sont souvent décomposées en 2 étapes. Tout d'abord, nous utilisons un modèle de détection de texte pour détecter les boîtes englobantes autour des textes possibles. Deuxièmement, nous alimentons les boîtes englobantes traitées dans un modèle de reconnaissance de texte pour déterminer des caractères spécifiques à l'intérieur des boîtes englobantes (nous devons également effectuer une suppression non maximale, une transformation de perspective, etc. avant la reconnaissance de texte). Dans notre cas, les deux modèles proviennent de TensorFlow Hub et ce sont des modèles quantifiés FP16.

Références de performances

Les numéros de référence de performance sont générés avec l'outil décrit ici .

Nom du modèle Taille du modèle Dispositif CPU GPU
Détection de texte 45,9 Mo Pixel 4 (Android 10) 181,93 ms* 89,77 ms*
Reconnaissance de texte 16,8 Mo Pixel 4 (Android 10) 338,33 ms* N / A**

* 4 fils utilisés.

** ce modèle ne peut pas utiliser le délégué GPU car nous avons besoin d'opérations TensorFlow pour l'exécuter

Contributions

Le modèle de détection de texte accepte un Tensor 4-D float32 de (1, 320, 320, 3) en entrée.

Le modèle de reconnaissance de texte accepte un Tensor 4-D float32 de (1, 31, 200, 1) en entrée.

Les sorties

Le modèle de détection de texte renvoie un float32 4-D de forme (1, 80, 80, 5) comme boîte englobante et un float32 4-D de forme (1, 80, 80, 5) comme score de détection.

Le modèle de reconnaissance de texte renvoie un float32 de forme (1, 48) comme indices de mappage à la liste alphabétique '0123456789abcdefghijklmnopqrstuvwxyz'

Limites

  • Le modèle de reconnaissance de texte actuel est formé à l'aide de données synthétiques avec des lettres et des chiffres en anglais, de sorte que seul l'anglais est pris en charge.

  • Les modèles ne sont pas assez généraux pour l'OCR dans la nature (par exemple, des images aléatoires prises par un appareil photo de smartphone dans des conditions de faible éclairage).

Nous avons donc choisi 3 logos de produits Google uniquement pour montrer comment faire de l'OCR avec TensorFlow Lite. Si vous recherchez un produit OCR de qualité production prêt à l'emploi, vous devriez envisager Google ML Kit . Le kit ML, qui utilise TFLite en dessous, devrait être suffisant pour la plupart des cas d'utilisation d'OCR, mais dans certains cas, vous souhaiterez peut-être créer votre propre solution OCR avec TFLite. Quelques exemples sont:

  • Vous avez vos propres modèles TFLite de détection/reconnaissance de texte que vous aimeriez utiliser
  • Vous avez des exigences professionnelles particulières (c'est-à-dire, reconnaître des textes à l'envers) et devez personnaliser le pipeline OCR
  • Vous souhaitez prendre en charge des langues non couvertes par ML Kit
  • Les appareils de vos utilisateurs cibles ne disposent pas nécessairement des services Google Play installés

Références