# Comment faire lire des gribouillis à mon ordinateur ?

Alix Chagué

► To cite this version:

Alix Chagué. Comment faire lire des gribouillis à mon ordinateur ?. tuto@mate, 2021. hal-03170345

HAL Id: hal-03170345

https://hal.science/hal-03170345v1

Submitted on 16 Mar 2021

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons CC BY 4.0 - Attribution - International License
# Comment faire lire des gribouillis à mon ordinateur ?

Alix Chagué

Inria Paris (ALMAnaCH)
ALMAnaCH contribue au projet eScriptorium (SCRIPTA-PSL)

<figure><img src="image_2.png" /></figure>

Inria

ALMAnaCH

<figure><img src="image_3.png" /></figure>

projet
DAHN

<figure><img src="image_4.png" /></figure>

projet
CREMMA

<figure><img src="image_5.png" /></figure>

projet
LECTAUREP

* Transcription
automatique de
documents d'archive

* Édition numérique

* Indexation
automatique et fouille
de données

* Mise en production
d'une infrastructure
publique
# Définitions
# Définitions : OCR vs HTR ?

* OCR : Optical Character Recognition → reconnaissance du texte en général (imprimé principalement)

* HTR : Handwritten Text Recognition → reconnaissance du texte manuscrit (qui prend en compte les difficultés inhérentes à ces textes)

Il y avait en l'an de grâce 1845, dans ces années d'abondance et de paix où toutes les faveurs de l'esprit, du talent, de la beauté et de la fortune entouraient cette France d'un jour, une jeune et belle personne de la figure la plus charmante, qui attirait à elle, par sa seule présence, une certaine admiration mêlée de déférence pour

<figure><img src="image_6.png" /></figure>

<figure><img src="image_7.png" /></figure>

Un logiciel « d'HTR » est capable de lire du texte imprimé !
# Définitions : OCR vs HTR ?

dans leurs lignes générales.

Le première partie de ces légions comporte l'étude des ions formés dans les gaz, ainsi que celle des électrons, puis celui des rayons qui sont émis quand les gaz, sous faible densité, sont traversés par un courant électrique. La deuxième partie comporte l'étude des radioéléments et des rayons qu'ils émettent.

Cette association n'est point fortuite ; elle est motivée par d'analogie extrêmement étroite qui existe entre les radiations des corps radioactifs et celles qui sont émises lors du passage du courant dans les gaz raréfiés. Analogie qui est mise en évidence d'une manière de plus en plus complète, à mesure que s'étend la documentation expérimentale. Il n'est pas douteux aujourd'hui qu'il n'existe aucune différence avec celle de nature entre les rayons émis dans les deux ces considérés ; seul, le mode de production se présente d'une

* Différentes orientations du texte

* Différents sens de lecture du texte
(GàD, DàG, HeB, BeH)

* Différents alphabets

* Grandes catégories d'écriture :

* Imprimée

* "Tapuscrite"

* Manuscrite

* Elles peuvent être mélangées au sein d'un même document (épreuve corrigée à la main, formulaire pré-imprimé, ...)

<figure><img src="image_8.png" /></figure>
# De la REM, pour quoi faire ?

L'objectif de la reconnaissance automatique d'écriture manuscrite (REM) est principalement :

* d'accélérer la transcription ;

* Donc de la rendre moins pénible ;

* Donc de traiter de plus grands ensembles documentaires.

Mais la REM n'est pas une fin en soi :

* Édition numérique ?

* Analyse stylistique ou fouille de texte ?

* Accessibilité des ressources (moteur de recherche) ?

* etc.
Quelques logiciels d'HTR

Transkribus

<figure><img src="image_9.png" /></figure>

<figure><img src="image_10.png" /></figure>

KRAKEN

<figure><img src="image_11.png" /></figure>

Calamari OCR

TESSERACT

Voir le recensement réalisé par Awesome-OCR :
https://github.com/kba/awesome-ocr
# Schématisation du workflow

Charger une image matricielle

Exporter du texte

(version sur-simplifiée)
# Schématisation du workflow

<figure><img src="image_12.png" /></figure>
# Schématisation du workflow

<figure><img src="image_13.png" /></figure>
# Deux workflows à ne pas confondre

La transcription doit être la plus parfaite possible mais pas nécessairement exhaustive

<figure><img src="image_14.png" /></figure>

On part de zéro :

* Il faut créer (ou collecter) des données d'entraînement (**vérité terrain**)

* Puis entraîner un ou des modèles de segmentation et/ou de transcription)

<figure><img src="image_15.png" /></figure>

On a déjà un modèle de transcription / segmentation :

* Simplement appliquer le(s) modèle(s) aux images et vérifier le résultat

On vise l'exhaustivité mais il ne faut pas nécessairement attendre une transcription parfaite

Si le modèle n'est pas suffisamment bon, on bascule dans le premier cas de figure
# Attention à ne pas négliger l'étape de la segmentation

La qualité de la segmentation est aussi importante que la transcription.

<figure><img src="image_16.png" /></figure>

Qualité des images (qualité des documents, bruits, etc)

Réussite de la segmentation (faux positifs, faux négatifs,...)

Réussite de la transcription
# Un gain de temps ?

La REM accélère la tâche de transcription mais pas celles :

* De la vérification des images

* De la vérification de la segmentation

* De la vérification de la transcription

=> elles ne sont pas prises en charge dans le cadre de la REM pure.

Ces tâches peuvent être confiées à des personnes aidées d'outils de pré/post-traitement.

Exemples :

- ScanTailor pour le découpage des images

- PySpellchecker pour le post-traitement, etc

Plusieurs paramètres sont à considérer :

* La complexité des écritures et des documents ;

* Les objectifs d'exploitation de cette transcription ;

* L'existence d'autres corpus similaires déjà annotés ou de modèles correspondants au corpus.

Il faut donc préparer la campagne d'HTR en amont en prenant en compte ces éléments !
préparer une campagne de
REM
Pourquoi préparer une campagne

* Pour choisir le logiciel le plus adapté ;

* Pour connaître et anticiper les points de blocages ;

* Pour adapter la stratégie d'annotation aux difficultés et aux objectifs (et éviter d'inutiles retours en arrière) ;

* Pour pouvoir créer des jalons pour évaluer l'avancée de la campagne ;
Anticiper les difficultés : évaluer le corpus

❖ Quel type d'écriture ? Y a-t-il plusieurs écritures ? Combien ? Varient-elles beaucoup ?

❖ Quelle est la qualité des numérisations (résolution, cadrage, binarisé...) ?

❖ Quelle est la qualité des documents (déchirures, taches, plis, etc) ?

❖ Y a-t-il des abréviations dans le texte ? Y a-t-il des symboles particulier ?

❖ Y a-t-il autre chose que du texte (des illustrations, des dessins, des tableaux) ?
Comment cela s'articule-t-il avec le texte ?

❖ Y a-t-il des décoration sur le texte (surlignage, soulignage, etc) dont je veux
tenir compte ?

❖ Etc.
Anticiper les difficultés : exemple

J'ai 1 000 pages d'un carnet personnel du XXe siècle et je veux pouvoir faire de la fouille de texte :

★ Des numérisations couleur en haute résolution

★ Une dizaine de pages gondolées et abîmées par l'eau

★ Une seule main d'écriture

★ Des abréviations et des mots mal formés

★ Quelques symboles “maisons”

★ Quelques dessins dans les marges

★ Des mots importants soulignés, des mots barrés

<figure><img src="image_17.png" /></figure>
# Anticiper les difficultés : adapter les objectifs

En fonction des objectifs du projet de transcription, trier les critères :

* Ce qui dépend de la REM et ce qui n'en relève pas

* Ce qu'il est fondamentale de réussir à détecter (ce qui n'a pas besoin d'être segmenté ou transcrit)

* Quel degré de perfection est nécessaire

Si on reprend l'exemple :

★ Seul modèle

★ Des caractères pour transcrire les symboles maisons

★ Les mots soulignés ou barrés ne seront pas traités différemment

★ Dessins ignorés

★ Prévoir des difficultés à lire les mots mal formés (corriger avec un script ou à la main après)

★ Pages gondolées traitées à la main
# Définir des règles d'annotation

Seul-e ou en équipe : définir des règles d'annotation en amont !

* Expliciter les règles des cas "normaux" ;

* Définir des règles précises et univoques pour les cas particuliers ;

* Définir des comportements pour les cas "anormaux" imprévus ;

Pourquoi définir des règles ?

* Faciliter le contrôle qualité ;

* Assurer la constance de l'annotation dans le temps et entre les annotateurs ;

* Documenter l'annotation pour de futurs utilisateurs ;
# Définir des règles d'annotation : exemples

* Comment annoter les mots barrés ou illisibles ?

* Comment traiter les abréviations ? Les fautes ?

* Comment traiter les caractères spéciaux ?

* Quel tiret utiliser pour transcrire un tiret ?

* Comment distinguer manuscrit et imprimé ?

## Transcription des nombres

<table><thead><tr><td>Exemple</td><td>Transcription</td><td>Explication</td></tr></thead><tbody><tr><td>42,826</td><td>42,826</td><td>Le scribe a employé une virgule pour séparer la partie entière et la partie fractionnaire.</td></tr><tr><td>3,75</td><td>3,75</td><td>Le scribe a employé un point pour séparer la partie entière et la partie fractionnaire.</td></tr><tr><td>2,20</td><td>2,20</td><td>Le scribe a employé un point pour séparer la partie entière et la partie fractionnaire, bien que l'alignement avec la base du tracé des chiffres n'est pas parfait.</td></tr></tbody></table>
Annoter la mise en forme : exemple

- Les mots soulignés sont précédés d'un “_”

- Les mots barrés ne sont pas distingués des autres

- Les mots illisibles sont remplacés par un “#”

- Les mots écrits à la machine sont distingués de ceux écrits à la main car ils sont systématiquement précédés d'un symbole : “·”

A l'aide d'un script, il serait facile de transformer ces indicateurs en annotations xml en phase de post-traitement.

§ 3. # Types d'appareillage. L'intensité du courant au tra-

§3 # ·Type ·d'appareillage-. ·L'intensité ·du ·courant ·au ·tra-
# Remarques sur la gestion d'un projet de REM

**Objectif général** : obtenir la transcription de la totalité du corpus

**Mais** :

* Avec quel niveau de perfection ?

* Avec quels jalons ?

**Quelques exemples de jalons dans le scénario B** :

* Créer un set d'évaluation avancée représentatif du corpus et des difficultés identifiées (◀◀ sc. A & B)

* Annoter et controler x pages/lignes de vérité terrain (× nombre de modèles nécessaires) (◀◀ sc. B)

* Entraîner un/des modèle(s) et tester la performance effective sur le set d'évaluation avancée (◀◀ sc. A & B)

* Développer/sélectionner les outils de post-traitement (correction/nettoyage/augmentation) (◀◀ sc. A & B)
Penser à l'après
# Des données intermédiaires à ne pas jeter

La vérité de terrain est un produit dérivé précieux et qui fait partie des données de la recherche !

* Elle peut être utile à d'autres projets disposant d'écritures similaires

* Plus on a de données disponibles, moins on perd de temps pour l'entraînement d'un modèle !

Un package minimal pour le partage :

* Images (ou liens vers les images)

* Transcription dans un format adapté (XML ALTO ou XML PAGE)

* Documentation sur les règles d'annotations et les écritures
# HTR-United : une solution de partage des données

<figure><img src="image_18.png" /></figure>

* Une organisation Github pour partager vos données sous la forme de repository si vous ne savez pas où les publier

<figure><img src="image_19.png" /></figure>

* Un point de centralisation des signalement de sets de données (un fichier de référencement dans le projet principal)

```yaml
name: htr-united
description: 'HTR Ground Truth Resources'
entries:
  - title: 'tapuscorpus'
    url: 'https://github.com/HTR-United/tapuscorpus'
    description: 'Ground Truth dataset for French typewritten OCR (20th century documents)'
    language: French
    time: 1900--1999
    hands: 30
    license:
      - {name: 'CC-BY 4.0', url: 'https://creativecommons.org/licenses/by/4.0/'}
format: 'XML-Page'
volume:
  - {count: "150", metric: pages}
```

<figure><img src="image_20.png" /></figure>

HTR-United

<figure><img src="image_21.png" /></figure>

<figure><img src="image_22.png" /></figure>

<figure><img src="image_23.png" /></figure>

<figure><img src="image_24.png" /></figure>

<figure><img src="image_25.png" /></figure>

htr-united
HTR Ground Truth Resources for French

model

french

ground-truth

htr

handwritten-truth recognition

model

<figure><img src="image_26.png" /></figure>

htr-united.github.io

https://htr-united.github.io/

<figure><img src="image_27.png" /></figure>

timeuscorpus
Ground Truth datasets for French 18th and 19th HTR produced by the ANR project TIME US

dataset

french

htr

<figure><img src="image_28.png" /></figure>

tapuscorpus
Ground Truth dataset for French typewritten OCR

dataset

french

htr

<figure><img src="image_29.png" /></figure>

<figure><img src="image_30.png" /></figure>

https://htr-united.github.io/
Décro

<table>
  <thead>
    <tr>
      <th colspan="2">An 1872 mois d. Janvier.</th>
      <th colspan="2">l'Eregistrement.</th>
      <th rowspan="2">N°<br/>du<br/>LÉFERTOIRE.</th>
      <th rowspan="2">DATES<br/>des<br/>ACTES.</th>
      <th colspan="2">NATURE ET ESPECE<br/>DES ACTES:</th>
      <th rowspan="2">NOMS, PRÉNOMS ET DOMICILES DES PARTIES.<br/>INDICATIONS, SITUATIONS ET PRIX DES BIENS.</th>
      <th rowspan="2">L'ÉCRITURE.</th>
    </tr>
    <tr>
      <th>DATE</th>
      <th>BROITS.</th>
      <th>DATE</th>
      <th>BROITS.</th>
      <th>EN BREVETE.</th>
      <th>EN MINUTE.</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>13</td>
      <td>7.40</td>
      <td>25</td>
      <td>2.40</td>
      <td>76</td>
      <td>29</td>
      <td>Certificat<br/>du Propriétier.</td>
      <td>An 1872 mois d. Janvier.</td>
      <td>Jeunesse, Jean, père de Jean, à Paris, 20 mars 1872, et son frère Jean, à Paris, 20 mars 1872, et son frère Jean, à Paris, 20 mars 1872.</td>
      <td>29</td>
    </tr>
    <tr>
      <td>23</td>
      <td>2.40</td>
      <td>13</td>
      <td>2.40</td>
      <td>77</td>
      <td>29</td>
      <td></td>
      <td></td>
      <td></td>
      <td>29</td>
    </tr>
    <tr>
      <td>27</td>
      <td>2.40</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td>29</td>
    </tr>
  </tbody>
</table>
## Liens vers de la documentation

Tutoriel pas à pas :

https://lectaurep.hypotheses.org/documentation/prendre-en-main-escriptorium

Démonstration :

https://escripta.hypotheses.org/escriptorium-video-gallery
Questions d'infrastructure
# Le projet CREMMA

Mutualiser l'investissement infrastructurel pour rendre une solution open-source comme eScriptorium plus accessible

<figure><img src="image_31.png" /></figure>
Merci !