biblio biblio

Taliesin, c'est quoi ?

Notre projet a pour but de fournir une application permettant de simplifier la création de bases d'images annotées. Ces bases serviront pour l’entraînement de divers systèmes de reconnaissance d’écriture manuscrite. Ces reconnaisseurs seront par exemple capables de retranscrire de manière automatique des documents manuscrits (registres paroissiaux, registres d’état civil, documents d’entreprise, etc.) pour les rendre plus exploitables. Ce projet permet donc de gagner du temps pour la phase précédant la compréhension de documents anciens, en simplifiant l’entraînement de systèmes complexes.
schema
Plus concrètement, Taliesin est une application qui prend des documents scannés en entrée et qui permet à un utilisateur de les annoter. Cela signifie qu'une transcription est associée au texte présent dans l'image. L'application propose deux modes à l'utilisateur :


  • un mode d'annotation manuelle, où l'utilisateur saisit intégralement les transcriptions du document scanné

  • un mode assisté par un système automatique, où des transcriptions sont générées au préalable par un reconnaisseur d'écriture manuscrite déjà entraîné. Dans ce mode, l'utilisateur n'a plus qu'à corriger les éventuelles erreurs de transcription faites par le reconnaisseur qui l'assiste dans son annotation. Le reconnaisseur utilisé pour la première version de l'application est Laia.


Taliesin génère donc un ensemble d'exemples d'apprentissage (couples image + transcription du texte dans l'image) validés par l'utilisateur. Une fois la base d'images annotée, l'utilisateur n'a plus qu'à exporter les exemples en question qu'il pourra utiliser pour entraîner des reconnaisseurs d'écriture manuscrite.

Qui sommes-nous ?

Développeurs


Notre équipe se compose de huit étudiants en quatrième année au département INFORMATIQUE de l'INSA Rennes.


Face Nathan

Nathan Balix

Face Pierre-Antoine

Pierre-Antoine Cabaret

Face Matthieu

Matthieu Darfay

Face Nicolas

Nicolas Fouqué

Face Clara

Clara Gaouyer

Face Emilie

Emilie Hummel

Face Florian

Florian Le Minoux

Face Zoé

Zoé Levrel


Encadrants et partenaires

Ce projet nous a été proposé par l'équipe IntuiDoc de l'IRISA, en collaboration avec la start-up Doptim et avec le soutien de Jean-Yves LE CLERC, conservateur du patrimoine aux archives départementales d'Ille-et-Vilaine. Tout au long de l'année, nous avons été encadrés par Bertrand COÜASNON, enseignant-chercheur membre d'IntuiDoc, Erwan FOUCHÉ, chef de projet chez Sopra Steria et Julien BOUVET ainsi qu'Alexandre GIMENEZ PUIG, ingénieurs chez Sopra Steria également. Nous avons aussi été accompagnés par Sophie TARDIVEL, responsable et data scientist chez Doptim.


Pourquoi Taliesin ?

Dans le cadre de ses recherches, l’équipe IntuiDoc de l’IRISA, en collaboration avec les archives départementales d’Ille-et-Vilaine, cherche à faire avancer le domaine de la reconnaissance d’écriture manuscrite afin de rendre plus accessibles des textes anciens qui sont souvent peu compréhensibles. En effet, l'écriture manuscrite des siècles passés ainsi que les dégradations dues au passage du temps diminuent la lisibilité de ces documents. En s'aidant de systèmes automatiques, cela simplifie ainsi grandement la compréhension et l'extraction d'informations de ces textes manuscrits.

Il n’est pas simple d’écrire un programme qui reconnaît des textes manuscrits, c’est pourquoi la plupart des systèmes de reconnaissance d’écriture sont basés sur de l'intelligence artificielle. Ces algorithmes sont souvent formés de réseaux de neurones qui ont besoin d’apprendre à quoi ressemblent les différents caractères, peu importe la langue et le style du rédacteur.
Pour apprendre, ils ont besoin d’un grand nombre d’exemples (plusieurs milliers) qui sont longs et fastidieux à construire à la main. Ces exemples sont regroupés dans des bases d’apprentissage, associant des images de textes manuscrits avec leur transcription numérique. Ainsi, l’algorithme apprend à reconnaître les différentes lettres en comparant la transcription fournie (la vérité) avec les lettres qu'il a reconnu.

Taliesin fournit donc un système qui facilite la génération de ces bases d'apprentissage, afin de faciliter le travail des chercheurs.

manager

Présentation de l'interface

Architecture technique

Spécificités techniques du projet : pour les curieux ou les aguerris !

Taliesin est une application web multi-utilisateurs. Afin de pouvoir gérer une forte charge liée à un grand nombre d'utilisateurs simultanés, l'application a été conçue avec une architecture en microservices. Cela signifie que l'application est découpée en plusieurs sous-blocs fonctionnels et indépendants les uns des autres. Chaque bloc est donc chargé d'une fonctionnalité en particulier dans l'application.
Dans notre cas, Taliesin est décomposé en 6 microservices (représentés par des hexagones sur le schéma).

Microservices schema


Chaque microservice se voit attribuer un rôle spécifique, représenté par une fonctionnalité principale. Les liens entre microservices mettent en évidence les échanges de données entre eux et les appels entre microservices. Les différents blocs sont présentés ci-dessous.

  • Au centre, on trouve l'interface, qui correspond à la page web sur laquelle l'utilisateur navigue.

  • Le microservice de stockage fait l'interface avec la base de données de l'application.

  • Le microservice d'import gère l'ajout d'images dans la base de données.

  • Le microservice d'export à l'inverse permet à l'utilisateur d'exporter la base finale une fois toutes les images annotées.

  • La conversion intervient au moment de l'import et de l'export afin de transformer les données vers et depuis un format interne à l'application.

  • La partie reconnaissance gère le reconnaisseur automatique utilisé dans l'application pour faire des suggestions au cours de l'annotation.


Cette architecture est couplée aux technologies Kubernetes et Docker. Kubernetes est un orchestrateur qui se charge d'exécuter simultanément tous les blocs de l'application, la rendant opérationnelle. Chacun des microservices de Taliesin est encapsulé dans un conteneur Docker. Ces conteneurs sont une surcouche aux microservices qui permet à Kubernetes de les gérer de manière indépendante.

Il est ainsi possible d'exécuter plusieurs fois un bloc de l'application et de répartir les demandes des utilisateurs entre les différentes copies du microservice. Grâce à cette organisation, Kubernetes est capable d'adapter le nombre de copies des microservices en fonction de la charge. Par exemple, si le nombre d'utilisateurs est élevé ou la charge de calcul demandée par un utilisateur est conséquente, Kubernetes augmentera automatiquement le nombre de microservices pour suivre la demande.