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 effectuer une OCR. Il utilise une combinaison d' un modèle de détection de texte et d'un modèle de reconnaissance de texte comme pipeline OCR pour reconnaître les caractères du texte.

Commencer

Si vous êtes nouveau sur 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 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 cadres de délimitation autour des textes possibles. Deuxièmement, nous introduisons les cadres de délimitation traités dans un modèle de reconnaissance de texte pour déterminer les caractères spécifiques à l'intérieur des cadres de délimitation (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.

Repères 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 Appareil 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 n'a pas pu utiliser le délégué GPU car nous avons besoin des opérations TensorFlow pour l'exécuter

Contributions

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

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

Les sorties

Le modèle de détection de texte renvoie un tenseur de forme float32 4-D (1, 80, 80, 5) comme cadre de délimitation et un tenseur de forme float32 4-D (1,80, 80, 5) comme score de détection.

Le modèle de reconnaissance de texte renvoie un tenseur float32 2D 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 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 l'appareil photo d'un smartphone dans des conditions de faible éclairage).

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

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

Les références