# Atelier : Production d'un modèle affiné de reconnaissance d'écriture manuscrite avec eScriptorium et évaluation de ses performances. Évaluer son modèle HTR/OCR avec KaMI (Kraken as Model Inspector)

Lucas Terriel

► To cite this version:

Lucas Terriel. Atelier : Production d'un modèle affiné de reconnaissance d'écriture manuscrite avec eScriptorium et évaluation de ses performances. Évaluer son modèle HTR/OCR avec KaMI (Kraken as Model Inspector). Les Futurs Fantastiques - 3e Conférence Internationale sur l'Intelligence Artificielle appliquée aux Bibliothèques, Archives et Musées, AI4LAM; Bibliothèque nationale de France, Dec 2021, Paris, France. hal-03495762

HAL Id: hal-03495762

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

Submitted on 20 Dec 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
<figure><img src="image_2.png" /></figure>

MINISTÈRE
DE LA CULTURE

Liberté
Égalité
Fraternité

ARCHIVES
NATIONALES

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

Inria

@Atelier : Production d'un modèle affiné de reconnaissance d'écriture manuscrite avec eScriptorium et évaluation de ses performances

Évaluer son modèle HTR/OCR avec KaMI (Kraken as Model
Inspector)

Les Futures Fantastiques - 3e Conférence Internationale sur l'Intelligence Artificielle appliquée aux Bibliothèques, Archives et Musées
#FF21

Bibliothèque nationale de France - 1er décembre 2021

Lucas Terriel

ingénieur recherche & développement au sein de l'équipe

ALMAnoCH (Inria)

lucos.terriel@inria.fr

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

@Lucaterre
Contexte

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

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

- Librairie Python (KaMI-LIB) et application (KaMI-APP) pour évaluer des modèles HTR/OCR basés sur le moteur Kraken.

- Projet débuté à ALMANACH (INRIA) en 2020.

Fonctionnement de l'application

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

- Comprendre les métriques de performances pour évaluer vos modèles HTR/OCR

- Évaluer son modèle HTR/OCR rapidement

- Réutiliser KaMI dans votre projet
# Sommaire

01. Quelques métriques indispensables : Opérations sur les chaînes de caractères, Distance de Levenshtein, WER et CER

02. Utilisation de l'application KaMI

03. Une interprétation des scores
01

Quelques métriques indispensables :
Opérations entre les chaînes de
caractères, Distance de Levenshtein,
WER et CER
# Opérations entre chaînes de caractères

Les opérations entre les chaînes de caractères sont de 3 sortes :

- Les insertions

- Les substitutions

- Les suppressions

C1 :

C2 :

<table><tr><td>E</td><td>M</td><td>M</td><td>A</td><td>G</td><td>A</td><td>S</td><td>I</td><td>N</td><td>E</td><td>R</td></tr><tr><td></td><td></td><td>M</td><td>E</td><td>G</td><td>A</td><td>S</td><td>I</td><td>N</td><td>I</td><td>E</td><td>R</td><td>S</td></tr></table>

Comparaison entre C1 (chaîne de référence) et C2 (chaîne à comparer) :

- 2 suppressions ("em" aux positions 1 et 2)

- 1 substitution ("e" à la position 4)

- 2 insertions ("i" et "s" aux positions 10 et 13)

Dans KaMI, ces opérations sont données dans le tableau de score final : insertions (Insertions), substitutions (Substitutions), suppressions (Deletions) et les signes parfaitement reconnus (Hits). Seulement sur les caractères.
## Distance de Levenshtein (ou distance d'édition)

Distance mathématique qui donne l'écart entre deux chaînes de caractères et permet d'estimer une "similarité syntaxique" :

Somme des opérations entre les deux chaînes de caractères à comparer (chaque opération à un poids de 1).

C1 :

<table><tr><td>E</td><td>M</td><td>M</td><td>A</td><td>G</td><td>A</td><td>S</td><td>I</td><td>N</td><td>E</td><td>R</td></tr><tr><td></td><td></td><td>M</td><td>E</td><td>G</td><td>A</td><td>S</td><td>I</td><td>N</td><td>I</td><td>E</td><td>S</td></tr></table>

C2 :

$$D(C1,C2) = 2 \text{ suppressions} + 1 \text{ substitution} + 2 \text{ insertions} = 5$$

Dans KaMI, la distance de Levenshtein est donné au niveau des caractères et des mots des deux documents.

<figure><img src="image_8.png" /></figure>
## Métriques de performances : CER & WER

* Taux d'erreurs par caractères (CER) :

$$ \frac{\text{Ins. (caractè res) + Subst. (caractè res) + Sup. (caractè res)}}{\text{nb total de caractè res dans le texte de référence}} = \frac{DLev_{caractè res}(C_1, C_2)}{N \text{ total caractè res } C_1} $$

* Taux d'erreurs par mots (WER) :

$$ \frac{\text{Ins. (mots) + Subst. (mots) + Sup. (mots)}}{\text{nb total de mots dans le texte de référence}} = \frac{DLev_{mots}(C_1, C_2)}{N \text{ total mots } C_1} $$

C1 (vérité terrain) : "Je suis à une conférence à la BnF."

C2 (prédiction) : "Jee suis une visoconférence depuis la BnFF."

$$ \text{CER} = 14 / 34 = 0,4117 * 100 \approx 41,17 \% $$

$$ \text{WER} = 5 / 8 = 0,625 * 100 \approx 62,5 \% $$

Dans KaMI, le WER et le CER sont donnés dans le tableau de score final.
02

Utilisation de l'application KaMI
Principe de fonctionnement de l'application

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

1) Récupérer vos vérités terrains et vos prédictions sur eScriptorium

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

2) Pour essayer KaMI avec votre dataset :
[https://kami-app.herokuapp.com/](https://kami-app.herokuapp.com/)
03

Une interprétation des scores
Comparaison modèle mixte / affiné (finetuned)

PAGE 1 : FRAN_0187_16402_L-0

modèle mixte (acc. 90.8 %)

modèle Rigault affiné (acc. 94.6 %)

<table><thead><tr><th></th><th>Default</th><th>Ignoring digits</th><th>Ignoring case</th><th>Ignoring punctuation</th><th>Ignoring diacritics</th><th>Combining all options</th></tr></thead><tbody><tr><td>Levensthein Distance (Char.)</td><td>1158</td><td>1084</td><td>1145</td><td>1076</td><td>1003</td><td>833</td></tr><tr><td>Levensthein Distance (Words)</td><td>525</td><td>466</td><td>524</td><td>488</td><td>472</td><td>369</td></tr><tr><td>Hamming Distance</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>Word Error Rate (WER)</td><td>62.799</td><td>65.912</td><td>62.679</td><td>59.73</td><td>56.459</td><td>57.032</td></tr><tr><td>Char. Error Rate (CER)</td><td>23.758</td><td>24.436</td><td>23.491</td><td>23.3</td><td>20.57</td><td>19.918</td></tr><tr><td>Word Accuracy (Wacc)</td><td>37.2</td><td>34.087</td><td>37.32</td><td>40.269</td><td>43.54</td><td>42.967</td></tr><tr><td>Match Error Rate (MER)</td><td>23.206</td><td>23.824</td><td>22.945</td><td>22.743</td><td>20.336</td><td>19.706</td></tr><tr><td>Char. Information Lost (CIL)</td><td>35.679</td><td>36.429</td><td>35.242</td><td>35.022</td><td>31.1</td><td>30.071</td></tr><tr><td>Char. Information Preserved (CIP)</td><td>64.32</td><td>63.57</td><td>64.757</td><td>64.977</td><td>68.899</td><td>69.928</td></tr><tr><td>Hits</td><td>3832</td><td>3466</td><td>3845</td><td>3655</td><td>3929</td><td>3394</td></tr><tr><td>Substitutions</td><td>736</td><td>680</td><td>723</td><td>684</td><td>610</td><td>500</td></tr><tr><td>Deletions</td><td>306</td><td>290</td><td>306</td><td>279</td><td>337</td><td>288</td></tr><tr><td>Insertions</td><td>116</td><td>114</td><td>116</td><td>113</td><td>56</td><td>45</td></tr></tbody></table>

<table><thead><tr><th></th><th>Default</th><th>Ignoring digits</th><th>Ignoring case</th><th>Ignoring punctuation</th><th>Ignoring diacritics</th><th>Combining all options</th></tr></thead><tbody><tr><td>Levensthein Distance (Char.)</td><td>733</td><td>683</td><td>724</td><td>704</td><td>557</td><td>469</td></tr><tr><td>Levensthein Distance (Words)</td><td>401</td><td>356</td><td>398</td><td>375</td><td>341</td><td>264</td></tr><tr><td>Hamming Distance</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>Word Error Rate (WER)</td><td>47.966</td><td>50.353</td><td>47.607</td><td>45.899</td><td>40.789</td><td>40.803</td></tr><tr><td>Char. Error Rate (CER)</td><td>15.038</td><td>15.396</td><td>14.854</td><td>15.244</td><td>11.423</td><td>11.214</td></tr><tr><td>Word Accuracy (Wacc)</td><td>52.033</td><td>49.646</td><td>52.392</td><td>54.1</td><td>59.21</td><td>59.196</td></tr><tr><td>Match Error Rate (MER)</td><td>14.668</td><td>14.981</td><td>14.488</td><td>14.871</td><td>11.328</td><td>11.113</td></tr><tr><td>Char. Information Lost (CIL)</td><td>22.59</td><td>22.942</td><td>22.263</td><td>23.111</td><td>17.559</td><td>17.132</td></tr><tr><td>Char. Information Preserved (CIP)</td><td>77.409</td><td>77.057</td><td>77.736</td><td>76.888</td><td>82.44</td><td>82.867</td></tr><tr><td>Hits</td><td>4264</td><td>3876</td><td>4273</td><td>4030</td><td>4360</td><td>3751</td></tr><tr><td>Substitutions</td><td>432</td><td>396</td><td>423</td><td>428</td><td>328</td><td>271</td></tr><tr><td>Deletions</td><td>178</td><td>164</td><td>178</td><td>160</td><td>188</td><td>160</td></tr><tr><td>Insertions</td><td>123</td><td>123</td><td>123</td><td>116</td><td>41</td><td>38</td></tr></tbody></table>
Comparaison modèle mixte / affiné (finetuned)

PAGE 3 : FRAN_0187_16419_L-1

modèle mixte (acc. 90.8 %)

modèle Rigault affiné (acc. 94.6 %)

<table><thead><tr><th></th><th>Default</th><th>Ignoring digits</th><th>Ignoring case</th><th>Ignoring punctuation</th><th>Ignoring diacritics</th><th>Combining all options</th></tr></thead><tbody><tr><td>Levensthein Distance (Char.)</td><td>665</td><td>629</td><td>649</td><td>625</td><td>483</td><td>389</td></tr><tr><td>Levensthein Distance (Words)</td><td>429</td><td>393</td><td>424</td><td>411</td><td>373</td><td>308</td></tr><tr><td>Hamming Distance</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>Word Error Rate (WER)</td><td>66.822</td><td>76.908</td><td>66.043</td><td>64.319</td><td>58.099</td><td>64.435</td></tr><tr><td>Char. Error Rate (CER)</td><td>15.028</td><td>15.677</td><td>14.666</td><td>14.754</td><td>10.907</td><td>10.167</td></tr><tr><td>Word Accuracy (Wacc)</td><td>33.177</td><td>23.091</td><td>33.956</td><td>35.68</td><td>41.9</td><td>35.564</td></tr><tr><td>Match Error Rate (MER)</td><td>14.365</td><td>14.933</td><td>14.02</td><td>14.054</td><td>10.615</td><td>9.853</td></tr><tr><td>Char. Information Lost (CIL)</td><td>21.175</td><td>21.935</td><td>20.538</td><td>20.652</td><td>15.43</td><td>14.054</td></tr><tr><td>Char. Information Preserved (CIP)</td><td>78.824</td><td>78.064</td><td>79.461</td><td>79.347</td><td>84.569</td><td>85.945</td></tr><tr><td>Hits</td><td>3964</td><td>3583</td><td>3980</td><td>3822</td><td>4067</td><td>3559</td></tr><tr><td>Substitutions</td><td>337</td><td>316</td><td>321</td><td>313</td><td>228</td><td>171</td></tr><tr><td>Deletions</td><td>124</td><td>113</td><td>124</td><td>101</td><td>133</td><td>96</td></tr><tr><td>Insertions</td><td>204</td><td>200</td><td>204</td><td>211</td><td>122</td><td>122</td></tr></tbody></table>

<table><thead><tr><th></th><th>Default</th><th>Ignoring digits</th><th>Ignoring case</th><th>Ignoring punctuation</th><th>Ignoring diacritics</th><th>Combining all options</th></tr></thead><tbody><tr><td>Levensthein Distance (Char.)</td><td>460</td><td>436</td><td>449</td><td>436</td><td>263</td><td>204</td></tr><tr><td>Levensthein Distance (Words)</td><td>261</td><td>234</td><td>256</td><td>250</td><td>193</td><td>147</td></tr><tr><td>Hamming Distance</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>Word Error Rate (WER)</td><td>40.654</td><td>45.792</td><td>39.875</td><td>39.123</td><td>30.062</td><td>30.753</td></tr><tr><td>Char. Error Rate (CER)</td><td>10.395</td><td>10.867</td><td>10.146</td><td>10.292</td><td>5.939</td><td>5.331</td></tr><tr><td>Word Accuracy (Wacc)</td><td>59.345</td><td>54.207</td><td>60.124</td><td>60.876</td><td>69.937</td><td>69.246</td></tr><tr><td>Match Error Rate (MER)</td><td>10.083</td><td>10.508</td><td>9.842</td><td>9.972</td><td>5.878</td><td>5.269</td></tr><tr><td>Char. Information Lost (CIL)</td><td>15.083</td><td>15.591</td><td>14.627</td><td>15.007</td><td>8.569</td><td>7.461</td></tr><tr><td>Char. Information Preserved (CIP)</td><td>84.916</td><td>84.408</td><td>85.372</td><td>84.992</td><td>91.43</td><td>92.538</td></tr><tr><td>Hits</td><td>4102</td><td>3713</td><td>4113</td><td>3936</td><td>4211</td><td>3667</td></tr><tr><td>Substitutions</td><td>239</td><td>221</td><td>228</td><td>231</td><td>123</td><td>86</td></tr><tr><td>Deletions</td><td>84</td><td>78</td><td>84</td><td>69</td><td>94</td><td>73</td></tr><tr><td>Insertions</td><td>137</td><td>137</td><td>137</td><td>136</td><td>46</td><td>45</td></tr></tbody></table>
<figure><img src="image_11.png" /></figure>

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

Code source du package Python KaMI :
https://gitlab.inria.fr/dh-projects/kami/kami-lib

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

Notebook-Tutoriel pas-à-pas pour utiliser le package KaMI : https://cutt.ly/WT3Ahx1

Aller plus
loin avec KaMI

<figure><img src="image_14.png" /></figure>
Merci de votre attention

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