Skip to content

Latest commit

 

History

History
493 lines (349 loc) · 14.3 KB

OCR.md

File metadata and controls

493 lines (349 loc) · 14.3 KB

Formation OCR/GROBID-dictionaries 2020

OCR

Simon Gabay Strasbourg, Mardi 28 janvier 2020


Une image numérique


Deux types d’images:

  • Image vectorielle
  • Image matricielle (ou bitmap)

Image vectorielle (I)

  • 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.

Image vectorielle (II)

<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>

100% center


Image vectorielle (III)

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.


Une image bitmap (I)

  • 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.

Une image bitmap (I)

Deux fois la même image matricielle 70% center


Les caractéristiques techniques d'une image

  • 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

PPI

Image ppp
12% 3
12% 8
12% 16

PPI en pratique: la lettre A

Image ppp
12% 3
12% 8
12% 16

Poids de l'image

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!


Le B-test

L'enjeu est de réussir ce que nous appellerons le B-test

42% 800% 700%


Résolution vs efficacité

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.

42% 42% 42% 40%


La bonne résolution (III)

300 dpi serait le meilleur rapport poids/qualité 80%


Pre-processing


Rotation

Original Résultat
20% 19%

Niveau de gris

Original Résultat
19% 19%

Binarisation

Original Résultat
19% 19%

Segmentation I

Original Résultat
19% 19%

Segmeteur


Segmentation: mise en page

15%


Segmentation: lignes

55%

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


Segmentation: ornements

8%

Le segmenteur peut extraire plus que des lignes: il peut extraire, par exemple, des ornements (bandeaux, initiales, culs-de-lampe…)


Données

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>

Données

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é.


Exemple 1: Alto

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>

Exemple 2: PageXML

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>

Exemple 3: hOCR

Format XML embedded dans du XHTML/HTML Trois grandes classes associées aux éléments html <div>, <p>, <span>

  • ocr_page pour les pages
  • ocr_par pour les paragraphes
  • ocrx_line pour les lignes
  • ocrx_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>

DHsegment

30%

Sofia Ares Oliveira, Benoit Seguin, Frederic Kaplan, "dhSegment: A generic deep-learning approach for document segmentation", v.2, arXiv:1804.10371


Larex

100%

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


Kraken

40%

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


OCR


OCR

  • Optical character recognition
  • En français ROC (Reconnaissance optique de caractères).
  • Extraire le texte d’une image.

Transcrire (I)

Ligne de commandes + interface dans un navigateur

45% center


Transcrire (II)

Transkribus (Innsbruck)

45% center


Transcrire (III)

eScriptorium (EPHE/PSL)

45% center


Création d'une vérité de terrain (ground truth)

Les images transcrites sont alors associées à leur transcription

45% center


Entraînement (I)

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é

100% center


Entraînement (II)

90% center


Scores

  • 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)

L'amélioration des scores: données artificielles

  • Avec Baskerville

130% center

  • Avec IM FELL English SC

120% center

  • Avec JSL Ancient

130% center

  • Avec Chapbook

130% center


L'amélioration des scores: bruit

  • Original

90% center

  • Bruit faible

90% center

  • Bruit fort

90% center


L'amélioration des scores: modification du cadre

  • Cadre normal

90% center

  • Cadre élargi

90% center


Dans la jungle des outils


Outils

  • 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


Pipeline

Il existe plusieurs solutions qui articulent tous les éléments nécessaires pour l'OCRisation


Pipeline : Comment choisir?

Il existe plusieurs solutions qui articulent tous les éléments nécessaires pour l'OCRisation


Bibliographie

  • 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