Formation OCR/GROBID-dictionaries 2020
Simon Gabay Strasbourg, Mardi 28 janvier 2020
Deux types d’images:
- Image vectorielle
- Image matricielle (ou bitmap)
- Représenter les données de l’image par des formules géométriques qui vont pouvoir être décrites d’un point de vue mathématique (abscisse et ordonnées)
- C’est notamment le format svg (pour Scalable Vector Graphics)
- En pratique : pas de problème si on zoom.
<svg>
<rect width="100" height="80" x="0" y="70" fill="green"/>
<line x1="5" y1="5" x2="250" y2="95" stroke="red" />
<circle cx="90" cy="80" r="50" fill="blue" />
<text x="180" y="60">Un texte</text>
</svg>
Ouvrez le fichier image.svg
dans un navigateur et dans un éditeur de code: comparez!
Pour plus d'exemples, allez regarder du côté de w3schools.
- Composée d’une matrice (tableau) de points à plusieurs dimensions. Dans le cas des images à deux dimensions (le plus courant), les points sont appelés pixels.
- C’est notamment le format jepg, gif, png outif.
- Ces différents formats se différencient par le nombre de couleurs, leur compression (avec ou sans perte), la possibilité d’un affichage progressif.
- En pratique : problème si on zoom.
Deux fois la même image matricielle
- Sa taille en points (ou pixels)
- Ses dimensions réelles (en centimètres ou plus souvent en pouces) – un pouce faisant c. 2.4 cm
- On parle donc de dpi (dot per inch) ou ppp (point par pouce) pour la résolution, soit un nombre de pixels par unité de longueur.
- Meilleure est la résolution, meilleure est l'OCRisation
Image | ppp |
---|---|
3 | |
8 | |
16 |
Image | ppp |
---|---|
3 | |
8 | |
16 |
Résolution d’une page A4: (dpi*(21/2.54)) * (dpi*(29.7/2.54))
dpi | pixels | total |
---|---|---|
100 | 826 x 1169 | 965 594 |
200 | 1650 x 2340 | 3 861 000 |
300 | 3500 x 2480 | 8 680 000 |
Il est louable de vouloir avoir de bonnes images pour l'OCR, mais attention au poids de l'image finale!
L'enjeu est de réussir ce que nous appellerons le B-test
Il n’est pas nécessaire d’avoir un grand nombre de pixels (au contraire) pour bien faire fonctionner un OCR.
La schématisation de l'image obtenue par sa pixelisation est une force: trop d'information tue l'information.
300 dpi serait le meilleur rapport poids/qualité
Original | Résultat |
---|---|
Original | Résultat |
---|---|
Original | Résultat |
---|---|
Original | Résultat |
---|---|
L'OCR fonctionnant au niveau des lignes, il est fondamental de les extraire au mieux. L'utilisation d'outil dédié à la segmentation, et non d'un segmenteur intégré à l'OCR, peut être intéressant
Le segmenteur peut extraire plus que des lignes: il peut extraire, par exemple, des ornements (bandeaux, initiales, culs-de-lampe…)
Il faut réussir décrire les documents OCRisés, afin de reconstruire l'apparence originelle sur la base des informations conservées. On privilégie pour cela des documents XML, page driven.
<document>
<page>
<zone>
<ligne coordonnées="points">
<mot coordonnées="points">exemple</mot>
<ligne>
</zone>
</page>
</document>
Afin de faire le lien entre l'image et le texte, on doit donner une information géométrique. Celle-ci peut être de trois ordres: ligne, bloc, ou polygone.
Il existe des documents de niveau page, paragraphe, ligne ou mot.
Il existe aussi plusieurs formats: hOCR, Alto, PageXML… Ces formats sont normalement utilisés avec METS (Metadata Encoding and Transmission Standard) pour la description de l'objet numérisé.
ALTO: Analyzed Layout and Text Object
Développé lors du projet européen METAe (Meta Data engine, 2000-2003) et publié en 2004
Trois éléments centraux:
<Description>
contient les métadonnées<Styles>
contient le texte<TextStyle>
contient les informations sur les fontes (famille, type, taille…)<ParagraphStyle>
contient la description des paragraphes (alignement gauche/droite, intelrigne)
<Layout>
contient le contenu, divisé en<Page>
<?xml version="1.0"?>
<alto>
<Description>
<MeasurementUnit/>
<sourceImageInformation/>
<Processing/>
</Description>
<Styles>
<TextStyle FONTSIZE="10.0"/>
<ParagraphStyle ALIGN="Left"/>
</Styles>
<Layout>
<Page ID="P1" WIDTH="123" HPOS="123" VPOS="123">
<PrintSpace WIDTH="123" HPOS="123" VPOS="123">
<TextBlock ID="P1_TB1" WIDTH="123"…>
<TextLine WIDTH="123" HPOS="123"…>
<String WIDTH="123"… CONTENT="Un">
<sp WIDTH="123" HPOS="123" VPOS="123">
<String WIDTH="123"… CONTENT="Exemple">
</TextLine>
</TextBlock
</PrintSpace>
</Page>
</Layout>
</alto>
PAGE: Page Analysis and Ground-truth Elements
Format créé lors du projet IMPACT EU (2010)
Contraiement à l'ALTO, PageXML conserve des informations sur le pre-processing (binarisation, deskew, dewarping…) et l'évaluation du layout.
<PcGts>
<Metadata>...</Metadata>
<page>
<TextRegion type="paragraph" id="r_1">
<Coords points="1474,486 3684,486 3684,900…">
<TextLine id="l_1">
<Coords points="1475,487 3683,487 3683,635…">
<Baseline points="1475,635 1587,635 2061…">
<Word id="w1">
<Coords points="1475,497 1587,497 1587…"/>
<TextEquiv>
<Unicode>Un</Unicode>
</TextEquiv>
</Word>
<Word id="w2">
<Coords points="1935,497 2061,497 2061,619…"/>
<TextEquiv>
<Unicode>exemple</Unicode>
</TextEquiv>
</Word>
<TextEquiv>
<Unicode>Un exemple</Unicode>
</TextEquiv>
</page>
</PcGts>
Format XML embedded dans du XHTML/HTML
Trois grandes classes associées aux éléments html <div>
, <p>
, <span>
ocr_page
pour les pagesocr_par
pour les paragraphesocrx_line
pour les lignesocrx_word
pour les mots
L'information géométrique est stockée dans une bbox
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta name='ocr-system' content='tesseract'/>
</head>
<body>
<div class='ocr_page' id='page_1'
title='bbox 0 0 1926 3102'>
<div class='ocr_carea' id='block_1_1'
title="bbox 638 108 756 147">
<p class='ocr_par' id='par_1_1' lang='eng'
title="bbox 638 108 756 147">
<span class='ocr_line' id='line_1_1'
title="bbox 638 108 756 147;
baseline 0 0">
<span class='ocrx_word' id='word_1_1'
title='bbox 638 108 756 147'>
exemple
</span>
</span>
</p>
</div>
</div
</body>
Sofia Ares Oliveira, Benoit Seguin, Frederic Kaplan, "dhSegment: A generic deep-learning approach for document segmentation", v.2, arXiv:1804.10371
Reul, C., Springmann, U., and Puppe, F., "LAREX - A semi-automatic open-source Tool for Layout Analysis and Region Extraction on Early Printed Books", arXiv:1701.07396
Kiessling, B., Stökl Ben Ezra, D., Miller M., "BADAM: A Public Dataset for Baseline Detection in Arabic-script Manuscripts", HIP@ICDAR 2019. arXiv:1907.04041
- Optical character recognition
- En français ROC (Reconnaissance optique de caractères).
- Extraire le texte d’une image.
Ligne de commandes + interface dans un navigateur
Transkribus (Innsbruck)
eScriptorium (EPHE/PSL)
Les images transcrites sont alors associées à leur transcription
Comme c'est du machine learning, on va répéter l'entraînement une multitude de fois (on parle d'epochs, de stages …). À chaque fois un modèle est créé: celui qui permforme le mieux est conservé
- On parle de CER (Character Error Recognition) et parfois de WER (Word Error Recognition).
- Distance de Levenshtein : combien d’opérations pour retrouver le résultat attendu (par exemple entre tonte et toute )?
-
Une seule lettre fausse crée un mot faux ! Le WER est donc toujours supérieur au CER !
- Ces scores peuvent être calculés sur deux jeux de données :
- Le train set (on OCRise les images qui servent pour l’entraînement)
- Le test set (on OCRise des images qui n’ont pas servi pour l’entraînement)
- Avec Baskerville
- Avec IM FELL English SC
- Avec JSL Ancient
- Avec Chapbook
- Original
- Bruit faible
- Bruit fort
- Cadre normal
- Cadre élargi
- Tesseract
- Ocropy
- Kraken
- Calamari
- DHsegment
- …
Il est souhaitable de préférer une solution qui intègre les différentes étapes nécessaires à l'OCrisation
Il existe plusieurs solutions qui articulent tous les éléments nécessaires pour l'OCRisation
- Web: eScriptorium
- Docker: ocr4all
- Java: Transkribus
Il existe plusieurs solutions qui articulent tous les éléments nécessaires pour l'OCRisation
- Web: eScriptorium, open source
- Docker: ocr4all, open source
- Java: Transkribus, non open source
- Sami Nousiainen, Report on File Formats for Hand-written Text Recognition (HTR) Material, 2016, en ligne
- Kiessling, B., Stökl Ben Ezra, D., Miller M., "BADAM: A Public Dataset for Baseline Detection in Arabic-script Manuscripts", HIP@ICDAR 2019. arXiv:1907.04041
- Sofia Ares Oliveira, Benoit Seguin, Frederic Kaplan, "dhSegment: A generic deep-learning approach for document segmentation", v.2, arXiv:1804.10371
- Reul, C., Springmann, U., and Puppe, F., "LAREX - A semi-automatic open-source Tool for Layout Analysis and Region Extraction on Early Printed Books", arXiv:1701.07396