5 min pour comprendre l’OCR – Partie 2

5 min pour comprendre l'OCR - Partie 2

Dans cette deuxième partie dédiée à la compréhension des systèmes OCR, nous allons nous pencher sur les avantages, le fonctionnement et l’adaptation d’un outil de reconnaissance de caractères open-source, Tesseract-ocr.

Nous verrons, un peu plus dans le détail comment un système porté par Google permet, de manière gratuite, de profiter d’une technologie de reconnaissance de caractères les plus avancées existante : le LSTM (Long Short Term Memory).

L’avantage de Tesseract-ocr  

Dans le monde de l’OCR, le projet Tesseract-ocr fait référence, il a été développé à l’origine par HP, et rendu Open Source dans les années 2000, il est désormais sponsorisé par Google.

Tesseract propose un outil à la fois puissant et flexible. La communauté qui le soutient est très active, et on observe des évolutions majeures régulières, comme la mise en place d’un nouveau moteur basé sur un réseau de neurones récurrent de type LSTM fin 2018 pour la version 4 de l’application.

Sa flexibilité provient de son caractère open-source. Il est très facilement extensible et on le voit dans la quantité de langages supportés, 116 aujourd’hui, ou dans la facilité à l’adapter à une tâche précise, grâce au fine-tuning par exemple.

Il autorise également plusieurs modes de segmentation de texte, qui vont de la lecture d’un seul caractère, à la détection complète de la structure de la page et de son orientation. Ce qui laisse à l’utilisateur le choix d’automatiser rapidement un traitement OCR ou de personnaliser la détection de structure dans ses documents.

Le fonctionnement interne de Tesseract 

Pour convertir une image en texte, Tesseract fonctionne en deux étapes principales. D’abord la segmentation de texte, puis la prédiction lettre à lettre.

La segmentation est un processus de traitement d’image. L’objectif étant de découper un document tout d’abord en paragraphes, puis en lignes, puis en lettres. Par un processus de transformation morphologique et de détection de contours, Tesseract obtient la position des blocs de texte.

Il s’agit ensuite d’obtenir la hauteur d’une ligne pour découper le paragraphe ligne par ligne, et, de la même manière, la largeur d’une lettre pour découper les lignes lettre à lettre.

A partir d’une collection d’images représentant des lettres individuelles et ordonnées, le moteur neuronal de Tesseract est activé. Il est composé d’un réseau de neurones effectuant l’analyse de l’image d’une lettre. Il permet de donner une estimation de quel caractère est représenté dans l’image.

Il contient également une série de cellules mémoires, qui lui permettent de se souvenir des caractères précédemment prédits. C’est comme cela que le réseau est capable d’estimer plus facilement des caractères vraisemblables dans le langage utilisé dans le document.

Le fine-tuning de Tesseract

Ce système de prédiction de caractères avec mémoire est appelé LSTM (long short-term memory) et nécessite une phase d’entraînement sur des données réalistes et dont on connait le contenu.

Pour générer de gros volumes de données pour l’apprentissage, Tesseract utilise une méthode astucieuse : pour une langue donnée, il possède un jeu de règles et un dictionnaire de mots. Le moteur est donc capable de créer des phrases similaires à du Français par exemple, et ceci en grande quantité. Les phrases sont ensuite transformées en images, avec différentes polices de caractères puis injectés dans le LSTM pour entraînement.

L’avantage de cette méthode est que l’on est certain du texte contenu dans les images, et on peut facilement guider le réseau de neurone lors de son entraînement.

Dans certains cas, nous souhaitons lire du texte qui ne ressemble pas forcément à des phrases complètes en Français, comme celles utilisée lors de l’entraînement du moteur. C’est le cas par exemple dans la lecture d’une bande MRZ de pièce d’identité, qui contient des séries de caractères encodés, ne ressemblant pas à du Français (!).

Tesseract nous permet de modifier son jeu de règles et la liste des mots utilisés pour la génération des données d’entraînement. Puis de relancer une phase appelée fine-tuning qui adapte la prédiction du LSTM à un problème plus précis. Cette approche permet d’intégrer les particularités d’un problème dans la phase d’apprentissage.

Tesseract-OCR a ouvert son code et a permis aux développeurs de l’améliorer en le modifiant, il est grâce à ça devenu un outil puissant et surtout adaptatif. Par exemple, via le processus de fine-tuning, il est possible d’adapter le moteur de reconnaissance de Tesseract pour réussir là où un outil fermé restera très généraliste et moins performant sur des cas d’application réelle.