46
EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies Julien Jayat Maxime Garcin David Jolie Nicolas

Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner : Rapport de Soutenance Finale

NightWare

Rapport de soutenance remis le 27 mai 2009

Marquegnies JulienJayat MaximeGarcin DavidJolie Nicolas

Page 2: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

Table des matieres

Introduction 4

1 Pre-traitement 51.1 Chargement de l’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Filtrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.1 Le filtre median - median relache . . . . . . . . . . . . . . . . . . . . . . . 51.2.2 Filtres de convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Binarisation d’images a niveau de gris par la methode d’Otsu . . . . . . . . . . . 81.4 Segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4.1 Composantes connexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4.2 Algorithme de lissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.3 Segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.5 Redressement de l’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.5.1 Detection de l’orientation du document . . . . . . . . . . . . . . . . . . . 161.5.2 Rotation de l’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Extraction de caracteres 182.1 XY-Cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Detection des paragraphes et de l’ordre de lecture du texte . . . . . . . . . . . . 192.3 Detection des lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.4 Detection des caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5 Detection des espaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6 Detection des caracteres italiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Interfacage C - OCaml 23

4 Reseau de neurones 254.1 Modele de neurone et reseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1.1 Modele d’un neurone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.1.2 Fonction de transfert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.1.3 Architecture de reseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2 Perceptron multicouche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.2.1 Algorithme de retro-propagation . . . . . . . . . . . . . . . . . . . . . . . 28

4.3 Algorithme de Vogl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Quelques resultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

1

Page 3: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 TABLE DES MATIERES

5 Reconnaissance de caracteres 325.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.2 Moments geometriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.3 Moments de Zernike complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.4 Implantation des moments de Zernike . . . . . . . . . . . . . . . . . . . . . . . . 345.5 Resultats experimentaux et ameliorations . . . . . . . . . . . . . . . . . . . . . . 34

6 Dictionnaire 366.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.2 Distance d’edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.3 Dictionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

7 Exportation du document 38

8 Interface en ligne de commandes 39

9 Interface graphique 40

10 Site Web 42

11 Projet 4311.1 Decoupage C - OCaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4311.2 Repartition finale des taches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Conclusion 44

Epita 2012 2 NightWare

Page 4: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 TABLE DES FIGURES

Table des figures

1.1 (a). Image bruitee (b). Image debruitee par le filtre median relache . . . . . . . . 61.2 Produit de convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3 (a). Lena binarisee (b). Lena binarisee avec rehaussement des contrastes . . . . . 81.4 (a). Image originale (b). Image binarisee . . . . . . . . . . . . . . . . . . . . . . . 101.5 Zone de pixels observee - En rouge le pixel courant - En bleu les pixels adjacents 111.6 Image a segmenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.7 Resultat de la segmentation avec application d’un filtre de convolution . . . . . . 15

2.1 XY-Cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 La figure de gauche presente trois coupes horizontales possibles (A, B, C) definissant

4 blocs (1, 2, 3, 4). A l’interieur de chaque blocs sont presentes en rouge lescoupes verticales possibles (a, b, c). La figure de droite presente le meilleur choixa realiser, a savoir les coupes B et C de telle sorte a rendre a + b possible. . . . . 19

2.3 (a). Lignes a detecter (b). Projection horizontale du paragraphe . . . . . . . . . . 202.4 (a). Texte en italique (b). Reconnaissance impossible par projection verticale . . 212.5 Plus longue ligne verticale de pixels noirs dans un caractere droit et italique . . . 22

4.1 Modele d’un neurone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.2 Modele matriciel d’un neurone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.3 Representation matricielle d’un reseau de trois couches . . . . . . . . . . . . . . . 28

9.1 Toolbar de l’interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409.2 Interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

10.1 Site Web d’Eyeliner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Epita 2012 3 NightWare

Page 5: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 INTRODUCTION

Introduction

Ce document presente l’ensemble du travail realise durant ces 7 mois de developpement dansle cadre de notre projet d’Info SPE, a savoir un logiciel de reconnaissance optique de caracteresque nous avons baptise Eyeliner.

Des le debut du projet nous nous etions reparti les differentes taches a realiser, etant donnequ’il n’etait pas necessaire que nous realisions tous en meme temps la meme partie du projet.Cependant, depuis cette premiere repartition les choses ont bien evolue. Ainsi, voila decoupagefinal des taches :

– Julien : pre-traitement de l’image, extraction des caracteres, reconnaissance des caracteres,reseau de neurones, interfaces graphique et en ligne de commande, site web et exportationdes documents

– Maxime : pre-traitement de l’image, extraction des caracteres, reconnaissance des ca-racteres et site web

– David : correction orthographique post-reconnaissance– Nicolas : interface graphique

Malgre une repartition des taches tres desequilibree, mais indispensable dans l’optique d’ache-ver le projet, nous sommes parvenu par le biais d’un travail assidu a realiser un OCR complet.

Ce rapport presente le travail effectue, partie par partie, en mettant l’accent sur le resultatfinal tout en specifiant les avancees, ameliorations depuis la derniere soutenance.

Epita 2012 4 NightWare

Page 6: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Chapitre 1Pre-traitement

Cette partie a ete integralement realisee par Maxime Jayat et Julien Marquegnies.

1.1. Chargement de l’image

Lors de la redaction du cahier des charges nous vous avions fait part de notre indecision quanta la librairie que nous comptions utiliser pour charger les images. Notre choix s’est finalementporte sur OcamlSDL et non Caml Images etant donne que la documentation de SDL est plusfournie que celle de Caml Images et que cette derniere permet de charger et manipuler tresaisement des images de differents formats.

1.2. Filtrage

1.2.1 Le filtre median - median relache

Presentation

La suppression du bruit est un des pre-traitements essentiels en ce qui concerne le traitementd’images par ordinateur. Cela consiste a eliminer ce qui est du aux aleas des mesures tout enessayant de ne pas alterer l’information utile contenue dans l’image.

Etant donne que les filtres lineaires ne sont pas adaptes a l’elimination du bruit impulsion-nel on prefere utiliser le filtre median (et une de ses variantes qui est le filtre median relache)puisque ce dernier arrive a combiner a la fois une suppression efficace du bruit impulsionnel etune conservation suffisament importante de details. Ce filtre fait partie des filtres nommes filtresde rang, i.e la sortie de ce filtre est basee sur un tri des echantilllons observes au voisinage dupixel que l’on etudie (le filtre median implante dans Eyeliner se base sur un fenetre d’observa-tion de 3× 3 pixels pour une meilleure precision). Les filtres de rang sont generalement robustespuisque, insensibles aux valeurs extremes passees en entree, ils ne creent aucunement en sortieune valeur n’ayant pas ete passee en entree.

Cependant dans le cas de lignes fines le filtre median s’avere trop severe et elimine tout oupartie de ces details entre autres parce que l’analyse qu’il effectue ne respecte pas les relations de

Epita 2012 5 NightWare

Page 7: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

voisinage entre ces elements. C’est pourquoi notre choix s’est porte sur le filtre median relachequi presente l’interet d’avoir une tolerance plus importante envers les details.

Principe

On considere une suite de pixels Xi et une fenetre glissante W. On definit Wi la fenetre Wcentree sur le pixel Xi et contenant

2×N + 1

pixels avec

Wi = {Xi+d,Xi+d ∈Wi}

Le filtre implante dans Eyeliner utilise une fenetre 3× 3. On a donc N = 4 et

Wi = {(−1,−1); (−1, 0); (−1, 1); (0,−1); (0, 0); (0, 1); (1,−1); (1, 0); (1, 1)}

Soit S la suite ordonnee des pixels composant Wi. On definit l’element median par

med = N + 1

La sortie du filtre au point Xi est alors Yi, ou

Yi = med

Soient desormais b inf et b sup | 1 ≤ b inf ≤ med ≤ b sup ≤ (2 × N + 1), qui definissentune sous-suite de S telle que la sortie du filtre soit Xi si ce dernier appartient a la sous-suite,l’element median med sinon. Ces deux parametres permettent alors de definir un compromisentre conservation des details et suppression du bruit. Un tel filtre est qualifie de Filtre medianrelache.

Fig. 1.1 – (a). Image bruitee (b). Image debruitee par le filtre median relache

Epita 2012 6 NightWare

Page 8: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

1.2.2 Filtres de convolution

Partant du fait qu’une image numerique peut etre consideree comme une matrice de pixels,on peut des lors identifier chaque pixel grace a sa position x et sa position y et lui attribuer unevaleur en fonction de sa luminosite.

Il est des lors possible d’appliquer a l’image un filtre par l’intermediaire d’un produit deconvolution entre les deux matrices. Dans le cas du filtre de convolution, les deux matrices misesen jeu sont de tailles tres differentes, i.e une matrice de taille importante representant l’image etune seconde bien plus petite appelee noyau. Par consequent, realiser le produit de convolutionrevient a multiplier chaque pixel de la matrice image par la moyenne ponderee des pixels affectespar le noyau.

Fig. 1.2 – Produit de convolution

Des lors, la calcul de la nouvelle valeur d’un pixel px,y revient a multiplier la valeur du pixelcourant par celle contenue au centre du noyau puis de sommer les valeurs des produits des pixelsadjacents. Cependant il convient par la suite de diviser la valeur obtenue pour le pixel courantpar la somme des elements constituant le noyau (excepte lorsque cette somme est nulle ou ilconvient des lors de realiser un etirement de l’histogramme, egalement appele « normalisation »)afin de maintenir la dynamique de l’image ainsi que sa linearite.

Le produit de convolution varie des lors en fonction de la taille du noyau et des elements quicomposent ce dernier, la taille inferant sur la precision du filtre et le contenu sur l’effet de cedernier.

Etant donne un pixel px,y, la nouvelle valeur de ce pixel par l’intermediaire d’un filtre deconvolution s’obtient de la maniere suivante.

Soit K = (ki,j) la matrice de dimension n representant le noyau. Soit A = (aij) la matricede dimension n prise dans la matrice de l’image et ayant pour pixel central le pixel px,y.

Soit S =n∑

i=1

n∑j=1

ki,j la somme des elements du noyau.

A×K =n∑

i=1

n∑j=1

ax−i,y−j · ki,j

Epita 2012 7 NightWare

Page 9: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Contraste

Le contraste de l’image est augmente par l’intermediaire du filtre de convolution suivant :

2 5 25 20 52 5 2

Fig. 1.3 – (a). Lena binarisee (b). Lena binarisee avec rehaussement des contrastes

Le rehaussement des contrastes presente un interet particulier puisqu’il fonctionne en parfaiteharmonie avec la methode de segmentation presentee ci-dessous et permet d’ameliorer cettederniere a la fois en elimination de parties non textuelles et en conservation du texte.

1.3. Binarisation d’images a niveau de gris par la methoded’Otsu

La binarisation de l’image a ete realisee a partir de la methode d’Otsu dont le processus estdecrit dans l’article « N. Otsu, A threshold selection method from grey scale histogram ».

Cet algorithme a pour but de binariser une image a niveaux de gris par le calcul d’un seuilautomatique variant pour chaque image. Pour ce faire le calcul de l’histogramme de l’image estrealise dans un premier temps puis, dans un second, les pixels de l’image sont separes en deuxclasses, la premiere ayant un niveau maximal (255) et la seconde un niveau minimal (0). Lamethode de seuillage automatique par separation de l’histogramme consiste comme son noml’indique a determiner une valeur de seuil, celle pour laquelle l’histogramme cumule atteint 50%de sa valeur maximale.

Otsu formule le probleme comme une analyse discriminante, pour laquelle il utilise unefonction critere particuliere comme mesure de separation statistique.

Ainsi, des statistiques sont realisees pour les deux classes de valeurs d’intensite separees parun seuil. Les statistiques sont alors calculees pour chaque niveau d’intensite i, i.e pour tous les

Epita 2012 8 NightWare

Page 10: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

seuils possibles. Dans le cadre de la binarisation par la methode d’Otsu, la separation se fait apartir des moments des deux premiers ordres a savoir la moyenne et l’ecart type. De plus,dans l’optique de rendre le procede independant du nombre de points dans l’image, on normalisel’histogramme. Ainsi on a :

histogrammenormalise =ni∑ni

ou ni represente le nombre de pixels de niveau i dans l’image.

Comme enonce precedemment, la separation se fait a partir de la moyenne et de la variance.Des lors on a :

moy =k∑

i=1

i× histogrammenormalise(i)

et

var =k∑

i=1

histogrammenormalise(i)

Enfin on realise pour chaque valeur de k la calcul suivant :

s2(k) = var(k) · (1− var(k)) · (moy(255) · var(k)−moy(k))2

pourk = 1...255

Des lors le niveau qui maximise la fonction critere est considere comme seuil pour la binari-sation de l’image. Ainsi la valeur de seuil est obtenue lorsque pour un k donne on a

s2(k) = max(s2(k))

Ci-dessous quelques resultats de l’application de la methode d’Otsu sur une photo et untexte.

1.4. Segmentation

Les algorithmes realisant la segmentation implementes dans Eyeliner sont bases sur la methodeproposee dans l’article « Enhanced Constrained Run-Length Algorithm for ComplexLayout Document Processing » publie par Hung-Min Sun. Cette methode se base sur l’uti-lisation combinee des composantes connexes et d’un algorithme de lissage apelle Run-LengthSmoothing Algorithm, ou encore Constrained Run-Length Algorithm.

Epita 2012 9 NightWare

Page 11: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Fig. 1.4 – (a). Image originale (b). Image binarisee

1.4.1 Composantes connexes

Presentation

L’etiquetage par composantes connexes consiste a scanner une image et regrouper ses pixelsau sein de classes basees sur la connexite des pixels, i.e tous les pixels d’une meme composantepossedent une meme valeur (dans le cas d’une image binarisee chaque composante est constitueede pixels possedant la valeur 0, pour le noir) et sont d’une certaine maniere connectes les unsaux autres. Une fois toutes les classes determinees, chaque pixel est etiquete en fonction de laclasse a laquelle il appartient.

Principe

L’etiquetage par composantes connexes se realise en scannant une image, pixel par pixel(de haut en bas et de gauche a droite) dans le but de determiner les differentes regions qui lacompose, i.e les regions constituees de pixels adjacents possedant la meme valeur (dans le projetil ne s’agit que des pixels noirs car l’image est binarisee).

L’etiquetage par composantes connexes fonctionne sur des images binaires ou a niveauxde gris et differentes mesures de connexite peuvent etre effectuees. Cepedant pour la suite del’explication on se base uniquement dans le cas d’une image binarisee et de pixels 8-adjacents(Deux pixels sont dits 8-adjacents ou 8-voisins s’ils se touchent par une arete ou par un sommet).

Le principe consiste alors a scanner l’image ligne par ligne. Sur chacune des lignes, a chaquefois que l’on arrive sur un pixel noir (de valeur 0), on regarde 4 de ses pixels voisins, qui sont lepixel situe directement a sa gauche et les trois pxiels de la ligne au-dessus (cf image ci-dessous).Suite a cette observation on applique une des regles suivantes :

– Si les quatre voisins sont des pixels blancs alors on affecte au pixel courant un nouveaulabel

– Si un seul des pixels voisins est noir alors le pixel courant est etiquette avec les meme labelque le voisin noir

Epita 2012 10 NightWare

Page 12: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Fig. 1.5 – Zone de pixels observee - En rouge le pixel courant - En bleu les pixels adjacents

– Si plusieurs pixels voisins sont noirs alors le pixel courant recoit pour label le label dupremier pixel noir rencontre. De plus on retient que les labels des pixels voisins noirs sontequivalents

Puis, une fois la premiere passe realisee, on affecte a chacune des classes definies un representanten tenant compte des relations d’equivalences que l’on a retenues.

Enfin, on realise un second parcours de l’image ou on remplace, pour chaque pixel, son labelpar celui du representant de sa classe.

1.4.2 Algorithme de lissage

Presentation

Le Constrained Run-Length Algorithm (CRLA), egalement nomme Run-Length Smoothing/ Smearing Algorithm (RLSA), est un algorithme assez connu permettant de segmenter undocument-image en regions homogenes. Cet algorithme est particulierement efficace lorsqu’ils’agit de partitionner des documents ayant une mise en page de type Manhattan (textes/imagesalignes et separes par des espaces blancs, comme par exemple les articles de journaux) maiss’avere moins fiable lorsqu’on est en presence de mises en page complexes (image imbriqueedans du texte par exemple). Son principal defaut est tient au fait qu’il utilise uniquement desinformations locales lors du lissage ce qui peut entraıner l’apparition de liens entre le texte etles images.

Principe

Le CRLA (RLSA) « basique » est applique sur une sequence binaire ou les pixels blancs sontrepresentes par des 0 et les pixels noirs par des 1. L’algorithme transforme une sequence s enune sequence c selon les regles suivantes :

– Les 0 dans s sont transformes en 1 dans c si le nombre de 0 adjacents est inferieur ou egala une limite pre-definie L

– Les 1 dans s restent inchanges dans c

Par exemple, avec L = 4, la sequence s est transformee en la sequence c :

s : 00010000010100001000000011000

c : 11110000011111111000000011111

Epita 2012 11 NightWare

Page 13: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Amelioration

A la vue du principal defaut du CRLA, il a ete choisi d’utiliser une version amelioree de cedernier dans le projet. Cet algorithme est appele CRLA-Selectif. La regle 1 est modifiee commesuit :

– Les 0 dans s sont transformes en C1 dans c si le nombre de 0 adjacents est inferieur ou egalea une limite pre-definie L et que les deux valeurs bornant la sequence de 0 soient egales a C1

Dans ce cas les 0 et 1 ne representent plus les pixels noirs et blancs mais, tout du moins dele projet, des valeurs de labels.

Par exemple, avec L = 4 et C1 = 1, la sequence s est transformee en la sequence c :

s : 2211311000021332221110000012213

c : 2211311000021332221111111112213

Bien evidemment le nombre de parametres de type C1 n’est pas limite a un.Cette methode est particulierement interessante car elle permet de ne pas relier des regions

qui ne sont pas homogenes (avec des representants de classe differents).

1.4.3 Segmentation

La methode de segmentation utilisee dans le projet se base sur la combinaison des compo-santes connexes et du CRLA-Selectif et permet de traiter des images ayant une mise en page detype Manhattan ou non.

Chaque pixel d’une image binarisee porte une information d’arriere-plan ou de premier-plan, i.e 0 si il s’agit d’une information d’arriere-plan, une autre valeur sinon. Dans l’imageetiquettee on retrouve la valeur 0 pour un element d’arriere-plan mais cette fois toute autrevaleur superieure a 0 represente non seulement un element de premier-plan mais egalement lataille de celui-ci.

Ansi l’etiquetage de l’image est realise a l’aide de la methode presentee precedemment, cequi permet de reperer tous les « objets » composant l’image d’origine. Ensuite, en fonction de lahauteur de chacun des « objets » on affecte a chacun d’eux une etiquette. Trois etiquettes sontproposees en fonction de la hauteur :

– (1) - Si la hauteur de l’objet observe est inferieure a 1cm– (2) - Si la hauteur de l’objet observe est superieure ou egale a 1cm et inferieure a 3cm– (3) - Si la hauteur de l’objet est superieure ou egale a 3cm

Une fois l’etiquetage realise on peut proceder a la premiere etape de la segmentation

Premiere etape

Cette premiere etape se deroule comme suit :

– 1 - On applique un CRLA-Selectif{1} horizontal avec une valeur limite Chor-1

– 2 - On applique un CRLA-Selectif{1} vertical avec une valeur limite Cver-1

– 3 - Les images obtenues de l’etape 1 et 2 sont combinees avec un ET logique

Epita 2012 12 NightWare

Page 14: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

– 4 - On applique un CRLA-Selectif{1} horizontal avec une valeur limite Csm-1

Une fois ceci realise il convient de determiner quelles regions de l’image correspondent a deszones de texte. Un certain nombre de mesures a realiser pour classifier les zones de textes existent.Dans le present systeme deux d’entre elles sont utilisees. La premiere consiste a determiner lerapport entre le nombre de pixels noirs et le nombre de transitions blanc-noir de la regionobservee, et la seconde le rapport entre le nombre de transtions blanc-noir et la largeur dela region. Soient BRL le nombre de pixels noirs de la region observee et TC le nombre detransitions blanc-noir. On definit :

MBRL =BRL

TC

et

MTC =TC

W

ou W est la largeur de la region observee.

Si

MBRLmin ≤MBRL ≤MBRLmax

et

MTCmin ≤MTC ≤MTCmax

alors la region observee est consideree comme etant textuelle. Les differentes valeurs sontMBRLmin =0.01cm, MBRLmax = 0.4cm, MTCmin = 1.0 et MTCmax = 3.8

Les zones de texte sont alors extraites de l’image et remplacees par des 0 dans la matriced’etiquettes.

Seconde etape

Le principe pour la deuxieme etape est similaire a celui employe dans la premiere, seuls lesparametres changent. La seconde etape se realise comme suit :

– 1 - On applique un CRLA-Selectif{1, 2} horizontal avec une valeur limite Chor-2

– 2 - On applique un CRLA-Selectif{1, 2} vertical avec une valeur limite Cver-2

– 3 - Les images obtenues de l’etape 1 et 2 sont combinees avec un ET logique– 4 - On applique un CRLA-Selectif{1, 2} horizontal avec une valeur limite Csm-2

Pour identifier les regions textuelles on emploie la meme methode que lors de la premiereetape avec cette fois MBRLmin = 0.06cm, MBRLmax = 1.2cm, MTCmin = 1.2 et MTCmax =9.0

Epita 2012 13 NightWare

Page 15: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Fig. 1.6 – Image a segmenter

Epita 2012 14 NightWare

Page 16: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

Fig. 1.7 – Resultat de la segmentation avec application d’un filtre de convolution

Epita 2012 15 NightWare

Page 17: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

1.5. Redressement de l’image

Les algorithmes que nous utilisons pour detecter les zones de texte et comprendre la mise enpage du document ont besoin d’une image source ou les lignes et les paragraphes sont correc-tement alignes sur un axe horizontal. Malheureusement, il est tres courant que la numerisationd’un document ne se fasse pas d’une maniere tres horizontale par exemple, lorsque le documentn’a pas ete pose correctement sur le numeriseur. Meme s’il peut etre imperceptible lorsqu’ony prete pas attention, l’angle induit peut gener la reconnaissance du document par le logiciel.Puisqu’il ne faut jamais faire confiance a ce que fournit l’utilisateur, il faut trouver un moyende corriger l’angle qui sera la.

Cette operation s’opere en deux etapes : d’abord la detection de l’angle, ensuite la rotationde l’image a partir de l’angle trouve.

1.5.1 Detection de l’orientation du document

Avant de nous lancer a l’aveuglette dans un algorithme de detection d’orientation, nous avonsd’abord effectue quelques recherches sur les techniques deja existantes, etape primordiale avanttout travail.

Ces recherches nous ont d’abord mene sur l’algorithme de la transformee de Hough quiconsiste a tenter de determiner l’orientation du document qui permet de maximiser les espacesblancs lorsque l’on projette les pixels de l’image sur un axe vertical, ce qui permet de trou-ver l’orientation correcte. Cet algorithme etant repute gourmand en temps de calcul et l’angledetecte etant assez limite, nous avons continue nos recherches.

Le second algorithme interessant trouve est celui de Shivakumura dont le principe est d’es-sayer d’isoler les lignes dont l’orientation est incorrecte en reduisant la largeur de l’etude del’image ce qui permet de trouver les espaces blancs entre les lignes pour ensuite calculer la pentede ces lignes isolees. Maxime a commence a implanter l’algorithme mais malheureusement, ledocument de reference est ecrit dans un anglais pitoyable, et est tres peu clair, voire se contredit.De plus cet algorithme necessite une page completement nettoyee de tout fragment non textuel,or l’application de cet algorithme sur notre image de texte se fait avant la segmentation doncles donnees d’entree n’auraient pas ete bonnes.

Finalement, l’algorithme de la detection de l’orientation du document a ete cree de toutepiece par Maxime en essayant de suivre un principe simple : On essaye de trouver une suitede caracteres alignes qui pourraient constituer une ligne, meme lorsque la ligne n’est pas ho-rizontale. Lorsqu’une ligne est trouvee, on calcule sa pente en s’aidant des caracteres trouves.Pour detailler un peu plus, nous effectuons d’abord une recherche des composantes connexesdans l’image par le meme principe que dans un graphe. Ensuite il faut trouver les suites decaracteres, pour cela on prend la premiere composante conenxe qui vient puis on cherche a sadroite d’autres composantes connexes de taille similaire qui ne se situent pas trop loin. Lors-qu’une suite est detectee, on calcule la pente de la ligne en appliquant la formule de la droitede regression lineaire sur les centres des composantes connexes, ce qui permet de trouver l’anglede la droite qui passe au plus pres des centres de chaque caratere. En repetant cette operationsur tout le document, et en faisant le moyenne des angles trouves, on peut determiner l’angle

Epita 2012 16 NightWare

Page 18: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 1. PRE-TRAITEMENT

du texte de l’image.

L’expression de la droite de regression lineaire est donnee par :

yi =SXY

S2X

(xi − x) + y

Seule la pente SXY

S2X

nous interesse. Les (xi, yj) sont les centres des caracteres. On a la covariancedes xi, yj :

SXY =1n

n∑i=1

(xi − x)(yi − y) = x · y − x · y

La variance des xi :

S2X =

1n

n∑i=1

(xi − x)2 = x2 − x2

Une fois la pente de la droite trouvee, il suffit de prendre l’arc-tangente de celle ci pourtrouver l’angle d’inclinaison des caracteres. Depuis nous n’avons plus constate d’erreurs sur ladetection de l’orientation.

Cet algorithme est d’une maniere etonnante tres efficace mais ne permet pas de redresser desimages dont la pente est superieure a environ 35˚. Neanmoins cet angle est largement suffisantpour redresser toute image qui aura ete scannee au moins dans le bon sens. Sauf si l’imageest scannee parfaitement en diagonale, il n’y a pas de difficulte a redresser l’image apres desrotations de 90˚.

1.5.2 Rotation de l’image

Une fois l’angle trouve, la rotation de l’image n’est pas ce qu’il y a de plus difficile. Le calculrepose sur le resultat suivant, issu d’une matrice de rotation :

{x′ = x cos θ + y sin θ , y′ = −x sin θ + y cos θ}

ou (x, y) sont les coordonnees des pixels dans la matrice d’origine et (x′, y′) sont les coor-donnees dans la matrice finale. θ est l’angle de rotation trouve a l’etape precedente, en radians.

Les sin et cos renvoyant des nombres reels, des ajustements sont a faire pour rendre possiblele rendu final de la rotation. Si on doit recuperer la valeur d’un pixel a des coordonnees nonentieres, il faut faire en sorte de piocher un peu entre la valeur des pixels entourant cette coor-donnee pour avoir un resultat de meilleure qualite pour rapport a un arrondissement au plus pres.

L’image est rebinarisee apres la rotation pour permettre la suite du traitement de l’image.Nous pouvons constater que la rotation fait passer d’une image binarisee a une image en niveaude gris pour garder le meme nombre d’information. La rebinarisation de l’image en niveau degris est une degradation de l’image dans le sens ou une information est perdue. Ainsi, la rotationdegrade l’image, mais il n’y pas de vraie solution a ce probleme. Plus l’angle est important, plusl’image est degradee. Cela peut gener la reconnaissance dans le cas d’un numerisation dans uneresolution deja a la limite du reconnaissable.

Le logiciel est donc capable de redresser une image mais il est preferable de ne pas compterdessus volontairement.

Epita 2012 17 NightWare

Page 19: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 2. EXTRACTION DE CARACTERES

Chapitre 2Extraction de caracteres

Cette partie a ete entierement realisee par Maxime Jayat et Julien Marquegnies.

2.1. XY-Cut

Une etape necessaire pour la reconnaissance d’un texte au dela de la reconnaissance descaracteres est le fait de trouver dans quel ordre sont les caracteres afin de reconstituer le texte.Il faut bien sur aussi trouver dans quel ordre les paragraphes doivent etre lus, ceci afin de re-constituer le texte en sortie de l’OCR dans l’ordre logique de lecture.

Pour ceci au moins deux etapes sont necessaires : la premiere est de trouver les blocsrepresentant des paragraphes, des lignes ou des caracteres. La seconde est d’ordonner ces blocs.Pour la premiere etape, nous avons decide d’utiliser l’algorithme appele XY-cut.

Cet algorithme est un grand classique lors de l’analyse d’image et de reconnaissance d’objetsdans une image. Il permet de definir un cadre autour de grands objets trouves dans l’imageet dans chacun de ces blocs de trouver des objets plus petits et ainsi de suite jusqu’a ne plustrouver d’objets plus petits.

Le fonctionnement de ce algorithme est le suivant : Le XY-cut est un algorithme recursif ap-pele alternativement sur un mode horizontal puis vertical. Lors de l’appel horizontal, on projettel’image consideree sur un axe horizontal et on cherche sur l’histogramme de pixels noirs obtenula plus grande zone blanche intermediaire. On coupe alors l’image verticalement a l’endroit dela zone blanche puis on rapelle verticalement le XY-cut sur chacune des deux parties de l’imagedefinies. Si aucune zone blanche n’est trouvee, le bloc trouve est minimal.

Au fur et a mesure des appels, tous les plus petits objets de l’image sont trouves, encadrespar des objets plus grands les contenant par zones, le tout contenu sous la forme d’un arbrebinaire. Pour cette soutenance cet algorithme a ete realise mais l’arbre renvoye n’est pas encoreanalyse pour determiner l’ordre de lecture des paragraphes et des caracteres, ce qui devra sefaire pour la prochaine soutenance.

Epita 2012 18 NightWare

Page 20: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 2. EXTRACTION DE CARACTERES

Fig. 2.1 – XY-Cut

2.2. Detection des paragraphes et de l’ordre de lecture du texte

La detection de l’ordre de lecture du texte constitue une etape importante afin d’eviterd’avoir en sortie de l’OCR un texte dont il faudrait retrouver le sens. La detection des para-graphes et de l’ordre de lecture du texte est basee sur le XY-Cut, mais pas dans la version simplede ce dernier. La version du XY-Cut utilisee dans Eyeliner est celle presentee dans l’article deJean-Luc Meunier, intitule « Optimized XY-Cut for Determining a Page Reading Order ».

La methode proposee se base sur le XY-Cut ainsi qu’une fonction de score afin de trouverl’ordre de lecture du texte et la strategie proposee vise a favoriser les coupes verticales parrapport aux coupes horizontales. La figure 2.1 illustre comment des coupes horizontales peuventdonner priorite a certaines coupes verticales et ainsi favoriser l’ordre de lecture par colonnes. Lafonction de score, quant a elle, favorisera la hauteur cumulee la plus importante des colonnescrees.

Fig. 2.2 – La figure de gauche presente trois coupes horizontales possibles (A, B, C) definissant4 blocs (1, 2, 3, 4). A l’interieur de chaque blocs sont presentes en rouge les coupes verticalespossibles (a, b, c). La figure de droite presente le meilleur choix a realiser, a savoir les coupes Bet C de telle sorte a rendre a + b possible.

De maniere plus detaillee, le decoupage des blocs s’effectue comme suit :– Pour un bloc donne a segmenter, on enumere toutes les coupes horizontales possibles– Pour chaque bloc potentiellement cree par les coupes precedentes, on enumere l’ensemble

des coupes verticales que l’on peut effectuer dedans– Un ensemble, qui peut etre vide, de coupes horizontales est choisi de telle sorte a realiser

les meilleures coupes verticales en accord avec la fonction de score

Epita 2012 19 NightWare

Page 21: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 2. EXTRACTION DE CARACTERES

– Les coupes horizontales retenues sont effectuees et pour chaque bloc cree les coupes verti-cales associees sont egalement realisees

– On reprend l’etape 1 pour chaque bloc cree et ce jusqu’a ce que plus aucun decoupe nesoit possible

La fonction de score favorise les coupes verticales qui s’etendent sur plusieurs blocs consecutifs.Celle-ci est definie par la somme des hauteurs de blocs qui peuvent etre fusionnes. De plus, siun bloc peut etre fusionne avec soit un bloc precedent soit avec un bloc suivant, il est necessairede determiner quelle coupe l’on devra choisir. Des lors on ajoute a la fonction de score l’inversede la distance entre les blocs a fusionner, la fusion entre deux blocs proches l’un de l’autre etantfavorisee lorsque l’on a le choix.

2.3. Detection des lignes

Partant du principe que la detection des paragraphes fournit un ensemble de blocs decoupantau plus court ceux-ci sous forme de rectangles, on peut en deduire l’absence de chevauchementdans le contenu de ces derniers.

Des lors la detection des lignes est realisee par l’intermediaire d’une projection horizontaledes pixels constituant le bloc. L’exploitation des espaces blancs presents sur l’histogramme dela projection permet de definir les positions yinitiale et yfinale de la ligne.

Fig. 2.3 – (a). Lignes a detecter (b). Projection horizontale du paragraphe

Concernant la detection des positions xinitiale et xfinale de la ligne, celle-ci est realisee par ex-ploitation de la projection verticale du bloc decoupe aux positions xinit−bloc, xfinal−bloc, yinitiale,yfinale. La detection de la position xinitiale se fait en detectant le premier pixel noir sur l’his-togramme en partant de la gauche, et celle de la position xfinale de la meme maniere mais enpartant de la droite.

2.4. Detection des caracteres

La detection des caracteres est realisee grace aux composantes connexes. Une fois l’imageentiere etiquetee, il convient, pour chaque ligne detectee precedemment, d’observer les com-posantes connexes qui la compose. En effet, par l’intermediaire de l’etiquetage chaque lettreva pouvoir etre reperee individuellement, ce qui permettra notamment d’extraire du texte enitalique, ce qui serait impossible par une projection verticale des pixels constituant la ligne puis-

Epita 2012 20 NightWare

Page 22: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 2. EXTRACTION DE CARACTERES

qu’en presence d’un texte en italique les espaces separant les lettres de ne seraient ni visibles nisignificatifs.

Des lors que la detection des lettres a ete effectuee, il ne reste plus qu’a fusionner les com-posantes connexes qui doivent l’etre. En effet, lors de l’etiquetage des composantes les pointsdes i ou encore les accents ont recu un label different de celui de la lettre a laquelle ils appar-tiennent. Par observation, on remarque que les positions sur l’axe des abscisses des accents et despoints empietent sur la positon sur ce meme axe d’autres composantes connexes. Par consequentla fusion de deux composantes connexes doit etre realisee lorsque la position moyenne xmoy

(xinitiale+xfinale

2 ) en contenue dans les positions xinitiale et xfinale d’une autre composante.

Fig. 2.4 – (a). Texte en italique (b). Reconnaissance impossible par projection verticale

2.5. Detection des espaces

La detection des espaces separant les mots ou autres symboles est effectuee par l’intermediaired’une projection verticale des pixels qui composent la lignes etudiee. Contrairement a la detectiondes lettres evoquee precedemment, la detection des espaces est relativement aisee sur l’histo-gramme obtenu puisque ces derniers sont bien mieux marques grace a la presence de zonesblanches separant les vallees de pixels noirs.

Il convient donc de reperer sur l’histogramme ces zones et de determiner si il s’agit ou nond’espaces. Pour ce faire, la largeur de la zone est comparee a la hauteur de la ligne et l’onconsidere etre en presence d’un espace des que la largeur est superieure a 25% de la hauteur dela ligne.

2.6. Detection des caracteres italiques

La methode de detection des caracteres italiques mise en place dans Eyeliner est cellepresentee dans l’article « Normalized Text Font Resemblance Method Aimed at Do-cument Image Page Clustering ».

Afin de detecter si un caractere est italique ou non on realise deux rotations de + et -16˚puisqu’il s’agit en moyenne de l’angle d’inclinaison des caracteres italiques. Puis, on calculesur chacune des trois images (en comptant l’image initiale) la hauteur de plus longue ligne ver-ticale de pixels noirs en partant de la base du caractere. L’idee etant qu’un caractere italique aune hauteur plus petite qu’un caractere « normal ».

Apres rotation, les pixels tendent a s’aligner verticalement. On decide alors si il s’agit d’uncaractere italique en fonction des trois valeurs de hauteur obtenues precedemment. Le caractereest considere comme italique si la valeur de la hauteur pour la rotation de -16˚et superieure auxdeux autres. Si a la base le caractere n’est pas italique alors la valeur des hauteurs apres rotationde + et - 16˚sont les memes a une marge d’erreur pres (l’erreur etant due a l’algorithme de

Epita 2012 21 NightWare

Page 23: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 2. EXTRACTION DE CARACTERES

rotation faisant disparaıtre certains pixels).

Fig. 2.5 – Plus longue ligne verticale de pixels noirs dans un caractere droit et italique

Epita 2012 22 NightWare

Page 24: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 3. INTERFACAGE C - OCAML

Chapitre 3Interfacage C - OCaml

Eyeliner a ete ecrit pour certaines parties en OCaml et pour d’autres en C. Ces partiesinteragissant et s’echangeant des donnees en permanence, quelques manipulations ont du etreeffectuees pour rendre les passages de C a OCaml et vice-versa les plus transparents possibles.

Le point d’entree du programme se trouve en OCaml, ainsi que la totalite du pre-traitementde l’image, l’implantation des moments de Zernike et la comparaison aux caracteres appris. Lapartie du programme ecrite en C inclut l’interface graphique, la detection des paragraphes etdes caracteres et la creations des fichiers de sortie. Ainsi, le chemin d’execution normal de lareconnaissance d’un texte est OCaml pour le pretraitement, C pour l’extraction des caracteres,de nouveau OCaml pour la reconnaissance de ceux-ci et finalement retour au C pour creer lasortie.

Avant de pouvoir interfacer les deux langages, il faut d’abord rajouter a la ligne de compi-lation la bibliotheque OCaml pour C localisee par ‘ocamlc -where‘.

L’appel de fonctions C dans une fonction OCaml est assez simple, il suffit de declarer unefonction OCaml en tant qu’external pourtant le nom de la fonction C desiree puis de l’appeleravec les parametres voulus. Le seul point epineux est la reception des donnees en C qui doit sefaire de maniere harmonieuse avec le garbage collector de OCaml en utilisant les macros four-nies par OCaml et detaillees dans la documentation. En effet, au debut de chaque fonction Cayant des parametres de types value, l’utilisation de la macro CAMLparamX est necessaire pourindiquer au garbage collector de garder les donnees et la macros CamlReturn doit remplacer lereturn de C a la fin de ces fonctions. Le non-respect de ces contraintes entraıne une disparitiondes donnees aleatoire non previsible et impossible a comprendre par le code ecrit. Les donneesde OCaml etant toutes des donnees de type value, des fonctions fournies permettent de les trans-former en types C simplement, l’autre sens de conversion etant aussi possible.

L’appel de fonction OCaml en C est a peu pres du meme niveau. La fonction OCaml doit etredeclaree comme un callback dans du code OCaml execute. Ensuite le code est execute depuisle C grace aux fonctions d’appels incluses dans les headers de OCaml fournis pour le C. Lesparametres (sous formes de value) etant donnes directement ou au sein d’un tableau selon leurnombre.

Epita 2012 23 NightWare

Page 25: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 3. INTERFACAGE C - OCAML

Le transfert d’une matrice de plusieurs megaoctets correspondant a l’image d’entree devantetre fait entre les deux langages, la choix d’une structure de donnees sous forme de Bigarray (dumodule Bigarray de OCaml) a ete fait des le commencement du projet, ce qui permet d’optimiserle temps et la place consommee en memoire, la donnee n’etant pas recopiee, seulement accedeede deux manieres differentes.

En conclusion, l’interfacage entre C et Ocaml n’est pas tres difficile, il faut seulement faireattention de ne pas tomber dans le piege du garbage collector qui ne pardonne pas un oubli dansle code C et qui peut alors detruire sans raison apparente la totalite des donnees de travail.

Epita 2012 24 NightWare

Page 26: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

Chapitre 4Reseau de neurones

Cette partie a ete entierement realisee par Julien Marquegnies.

L’ensemble du travail effectue a ete base sur les articles suivants :– Ben Krose, Patrick van der Smagt, « An introduction to Neural Networks. Eighth Edition,

1996 »– Marc Parizeau, « Le perceptron multicouche et son algorithme de retropropagation d’er-

reurs, 2004 »

Les reseaux de neurones, structures artificielles de neurones, constituent une approche per-mettant d’aborder sous des angles nouveaux les problemes de perception, de memoire, d’ap-prentissage et de raisonnement. Ils s’averent egalement des alternatives tres prometteuses pourcontourner certaines des limitations des ordinateurs classiques. De par leurs mecanismes inspiresde vraies cellules nerveuses (neurones) et leur traitement en parallele de l’information, ils inferentdes proprietes nouvelles permettant de solutionner des problemes jadis qualifies de complexes.

Haykin en donne la definition suivante :« Un reseau de neurones est un processus distribue de maniere massivement parallele, qui a

une propension naturelle a memoriser des connaissances de facon experimentale et de les rendredisponibles pour utilisation.Il ressemble au cerveau en deux points :- La connaissance est acquise au travers d’un processus d’apprentissage ;- Les poids des connexions entre les neurones sont utilises pour memoriser la connaissance. »

4.1. Modele de neurone et reseau

4.1.1 Modele d’un neurone

Le modele mathematique d’un neurone artificiel est illustre a la figure 3.1. Un neurone estessentiellement constitue d’un integrateur qui effectue la somme ponderee de ses entrees. Leresultat n de cette somme est alors transforme par une fonction de transfert f qui produit lasortie y du neurone. Des lors la sortie de l’integrateur est donne par l’equation suivante :

Epita 2012 25 NightWare

Page 27: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

Fig. 4.1 – Modele d’un neurone

n = w1,1 + w1,2 + · · ·+ w1,R + b

n =R∑

j=1

w1,j + b

Cette sortie correspond a une somme ponderee des entrees plus ce que l’on nomme le biais bdu neurone. De plus ce resultat s’appelle le niveau d’activation du neurone et le biais b est aussidenomme le seuil d’activation du neurone. Des lors lorsque le niveau d’activation n atteint oudepasse le seuil b, l’argument de f devient positif ou nul. Sinon il est negatif.

Fig. 4.2 – Modele matriciel d’un neurone

Ceci amene alors a considerer une representation matricielle du neurone (illustre a la figure1.2). On remplace l’ensemble des poids par une matrice ligne W de dimension R×1. L’equationde sortie du neurone est alors donnee par :

Epita 2012 26 NightWare

Page 28: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

a = f(Wp + b)

Cette equation permet alors d’introduire un modele plus compact concernant le neurone parrapport au schema precedent. On represente les R entrees du neurone par un rectangle noir, d’ousort la matrice colonne p de dimension 1×R. Cette matrice est alors multipliee par la matriceW, ce qui permet d’obtenir un scalaire, correspondant au niveau d’activation du neurone quiest alors compare au biais b (egalement un scalaire). Enfin, la sortie du neurone est calculee parla fonction d’activation f et correspond toujours a un scalaire.

4.1.2 Fonction de transfert

La fonction d’activation, encore denommee fonction de seuillage ou de transfert, sert a intro-duire une non-linearite dans le fonctionnement du neurone. Celle-ci presente generalement troisintervalles distincts :

– En dessous du seuil, le neurone est considere comme non-actif (selon les fonctions d’ac-tivation cette valeur peut valeur 0 ou -1, mais dans les deux cas elle s’apparente a unfaux )

– Aux alentours du seuil, ce qui correspond a une phase de transition– Au dessus du seuil, le neurone est considere comme actif (lorsque la valeur de sortie tend

vers 1 (valeur la plus generalement utilisee) on considere la sortie comme un vrai)

La fonction d’activation utilisee dans le reseau de neurones d’Eyeliner est la tangente hyper-bolique definie comme suit :

tanh(x) =ex − e−x

ex + e−x

Cette fonction est souvent utilisee en pratique, car comme la fonction sigmoıde elle presentel’interet d’etre non polynomiale, d’etre indefiniment continue derivable et d’avoir une deriveequi se calcule aisement ( 1

cosh(x)2).

4.1.3 Architecture de reseau

Un reseau de neurones est un maillage de plusieurs neurones organises en couches. Laconstruction d’une couche de S neurones se fait simplement par assemblage des neurones entreeux. Les S neurones d’une meme couches sont tous relies aux R entrees. La couche est alorsdite totalement connectee. Des lors, wi,j designe les poids de la connexion reliant le neurone iau neurone j. L’ensemble des poids forme alors une matrice W de dimension S × R (S etanttres souvent different de R).

Finalement il ne reste plus qu’a connecter plusieurs couches entre elles pour former le reseau(le perceptron multicouche d’Eyeliner en contient 3). Chaque couche possede alors sa proprematrice de poids Wk, k designant le numero de la couche.

La derniere couche du reseau est denommee « couche de sortie » et les autres couches« couches cachees ».

Epita 2012 27 NightWare

Page 29: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

Fig. 4.3 – Representation matricielle d’un reseau de trois couches

4.2. Perceptron multicouche

Le perceptron multicouche est un reseau oriente de neurones artificiels organise en couchesou l’information se propage dans un seul sens, de la couche d’entree vers la couche de sortie. Lacouche d’entree correspond a une couche virtuelle associee aux entrees du reseau et ne contientdes lors aucun neurone. Les couches suivantes sont des couches de neurones et les sorties de laderniere couche correspondent toujours aux sorties du reseau. De maniere generale un percep-tron multicouche peut posseder un nombre quelconque de couches et de neurones par couches(ou entrees).

Les neurones sont relies entre eux a l’aide de connexions ponderees dont les poids gouvernentle fonctionnement du reseau et permettent de programmer une application de l’espace des entreesvers l’espace des sorties a l’aide d’une transformation non lineaire. La mise en place d’un per-ceptron multicouche dans l’optique de la resolution d’un probleme donne passe par l’inferencede la meilleure application possible telle que definie par un ensemble de donnees d’apprentissagemodelisees par des paires de vecteurs d’entree et de sortie desiree. Cette inference peut etrerealisee grace a la mise en place d’un algorithme de retro-propagation d’erreurs.

4.2.1 Algorithme de retro-propagation

Soit le couple (~x(n), ~d(n)) designant la ne donnee d’entraınement du reseau ou :

< x1(n), · · · , xp(n) > et < d1(n), · · · , dq(n) >

correspondent respectivement aux p entrees et aux q sorties desirees du reseau. L’algorithmede retro-propagation consiste donc a mesurer l’erreur entre les sorties desirees ~d(n) et les sortiesobtenues ~y(n) :

< y1(n), · · · , yp(n) >

resultant de la propagation des entrees ~x(n), et a retro-propager l’erreur au travers des couchesprecedentes.

Epita 2012 28 NightWare

Page 30: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

Regle du delta generalisee

D’apres l’introduction sur les reseaux de neurones proposee precedemment, la sortie yj(n)d’un neurone j pour la donne d’entraınement n est definie par :

yj = f [vj(n)] = f [r∑

i=0

wj,i(n)yi(n)] (4.1)

ou f correspond a la fonction d’activation du neurone, vj(n) est la somme ponderee desentrees du neurone j, wj,i(n) est le poids de la connexion entre le neurone i de la coucheprecedente et le neurone j de la couche courante, et yi(n) est la sortie du neurone i. On sup-pose ici que la couche precedente presente r neurones numerotes de 1 a r, que le poids w0,i(n)correspond au biais du neurones j et que l’entree y0(n) = 1.

Afin de pouvoir demontrer la regle du « delta » generalisee on pose :

∆wj,i(n) = −η ∂E(n)∂wj,i(n)

(4.2)

ou η correspond au taux d’apprentissage ou gain de l’algorithme, avec 0 ≤ η ≤ 1.Soit E(n) la somme des erreurs quadratiques observees sur l’ensemble C des neurones de la

couche de sortie :

E(n) =12

∑j∈C

(dj(n)− yj(n))2 =12

∑j∈C

e2j (4.3)

ou dj(n) correspond a la sortie desiree du neurone j et yj(n) la sortie observee.Par le chaınage des derivees partielles, selon lequel ∂f(y)

∂x = ∂f(y)∂y ·

∂y∂x , on peut ecrire :

∂E(n)∂wj,i(n)

=∂E(n)∂vj(n)

· ∂vj(n)∂wj,i(n)

(4.4)

De par l’equation (3.1) on observe que :

∂vj(n)∂wj,i(n)

= yi(n) (4.5)

En effet on a :

∂vj(n)∂wj,i(n)

=

∂[r∑

l=0

wj,l(n)yl(n)]

∂wj,i(n)=∂[wj,i(n)yi(n)]

∂wj,i= yi(n)

On definit alors :

δj(n) = −∂E(n)∂vj(n)

(4.6)

On sera en presence d’une regle de mise a jour des poids equivalente a la regle du « delta »,resultant d’une descente du gradient de l’erreur totale si l’on realise la modification des poidscomme suit :

∆wj,i(n) = ηδj(n)yi(n) (4.7)

Epita 2012 29 NightWare

Page 31: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

Il convient des lors de savoir ce que doit valoir δj(n) pour chaque neurone j du reseau. Pourcalculer δj(n) on applique a nouveau un chaınage de derivees partielles. On exprime alors δ entant que produit de deux facteurs, un premier facteur refletant le changement dans l’erreur enfonction de la sortie du neurone et un second facteur representant le changement de la sortie enfonction du changement de l’entree du neurone. Des lors on a :

δj(n) = −∂E(n)∂vj(n)

= −∂E(n)∂yj(n)

· ∂yj(n)∂vj(n)

(4.8)

En calculant le second facteur on observe, de par l’equation (1.1), que :

∂yj(n)∂vj(n)

= f ′[vj(n)] (4.9)

ce qui correspond tout simplement a la derivee de la fonction d’activation du neurone j,evaluee au point vj(n).

Afin de calculer le premier facteur de l’equation (3.8), il est necessaire de considerer deuxcas. Dans un premier temps considerons que le neurone j soit un neurone situe sur la couche desortie du reseau. On pose j = k Des lors on a tout simplement :

∂E(n)∂yk(n)

= −(dk(n)− yk(n)) (4.10)

D’ou, en modifiant l’equation (1.8) a l’aide de l’equation (1.9) et l’equation (1.10), on obtient :

δk(n) = (dk(n)− yk(n))f ′[vk(n)] (4.11)

pour tout neurone j de la couche de sortie.

D’autre part, si j n’est pas la couche de sortie mais une couche cachee j = h, alors on ne saitpas quelle est la contribution du neurone h a l’erreur observee en sortie du reseau. Cependantl’erreur peut etre ecrite en fonction des vh(n), i.e E(n) (v1(n), v2(n), · · · , vp(n), · · · ).

∂E(n)∂yh(n)

=Nk∑k=1

∂E(n)∂vk(n)

· ∂vk(n)∂yh(n)

= (4.12)

Nk∑k=1

∂E(n)∂vk(n)

· ∂

yh(n)

Nh∑l=1

wjk(n)yl(n) =Nk∑k=1

∂E(n)∂vk(n)

whk(n) = −Nk∑k=1

δk(n)whk(n) (4.13)

D’ou par substitution on a :

δh(n) = f ′[vh(n)]Nk∑k=1

δk(n)whk(n) (4.14)

Les equations (3.11) et (3.14) donnent une procedure recursive permettant de calculer δ pourl’ensemble des neurones de toutes les couches du reseau. La modification peut alors etre realiseegrace a l’equation (3.7).

Epita 2012 30 NightWare

Page 32: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 4. RESEAU DE NEURONES

4.3. Algorithme de Vogl

L’algorithme de retro-propagation seul propose une convergence assez lente, notamment dueau fait que le parametre d’apprentissage soit une valeur tres proche de 0 (environ un centiemepour le reseau utilise dans Eyeliner). Afin d’optimiser la vitesse de convergence, l’algorithmede Vogl, introduit dans T.P.Vogl, J.K.Mangis, AK.Riegler, W.T.Zink and D.L.Alkon- Accelerating the Convergence of the Back-propagation Method, Biological Cyber-netics - 1988, a ete mis en place.

Cet algorithme permet d’augmenter la vitesse de convergence de maniere consequente enmodifiant progressivement, i.e a chaque apprentissage, le taux d’apprentissage. En effet, enobservant l’equation (3.7) on remarque que la variation des poids sur chaque retro-propagationd’erreur est proportionnelle au taux d’apprentissage η. Des lors plus η augmente, plus la vitessede convergence augmente.

Cependant, la methode du gradient, pour etre stable, necessite un taux d’apprentissage aussipetit que possible. Ainsi, dans l’optique de limiter et d’eviter au plus les oscillations, cet algo-rithme propose une evolution progressive du taux d’apprentissage, au fil de la convergence dureseau, ce qui, au final, augmente la vitesse de convergence et n’entraıne que peu d’oscillations.

L’algorithme de Vogl fait varier la taux d’apprentissage η suite a chaque apprentissage de lamaniere suivante :

Si Etot(t) < Etot(t− 1) alors η(t) = φ · η(t− 1)

Si Etot(t) < (1 + ε) · Etot(t− 1) alors η(t) = η(t− 1)

Si Etot(t) > (1 + ε) · Etot(t− 1) alors η(t) = β · η(t− 1)

ou φ > 1 correspond au facteur d’acceleration, β < 1 au facteur de decelaration, Etot a lal’erreur totale et 0.01 ≤ ε ≤ 0.05.

4.4. Quelques resultats

Voici quelques resultats obtenus pour le reseau de neurones avec l’algorithme de Vogl :

OR AND XOR

0 - 0 -0.990519 -0.998376 -0.9936550 - 1 0.994088 -0.993355 0.9931561 - 0 0.993519 -0.993448 0.9932361 - 1 0.999048 0.991534 -0.995115Iter 75 66 76

Epita 2012 31 NightWare

Page 33: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

Chapitre 5Reconnaissance de caracteres

5.1. Introduction

Le cœur du logiciel reste la reconnaissance des caracteres, ainsi une attention toute parti-culiere doit etre portee sur ce composant essentiel. Le principe general de la reconnaissance estle suivant : A partir d’une image d’un caractere sont extraites plusieurs caracteristiques uniques.Pour reconnaıtre le caractere en question, il faut comparer ces caracteristiques a celles trouveespour des caracteres fournis en apprentissage. La comparaison des caracteristiques du caracterevoulu et des caracteres appris permet de trouver le caractere a reconnaıtre.

Ce principe n’est que tres general et est tres variable en fonction des methodes utilisees.En effet, deux etapes sont tres importantes et a preciser : l’extraction des caracteristiques d’uncaractere et la methode de comparaison entre les caracteristiques des caracteres appris et ducaractere voulu.

Il existe plusieurs methodes afin de trouver des caracteristiques d’un caractere. Le plus in-tuitive est la reconnaissance des formes et la description de celle-ci : par exemple un « P »est composee d’une barre verticale et d’une boucle accrochee a celle-ci en haut a droite. Cettemethode est la plus efficace puisqu’elle ne laisse presque pas de place au doute. Malheureusementcette methode est tres difficile a implanter car les caracteristiques ne sont pas uniformes d’uncaractere a l’autre et la reconnaissance de formes n’est pas une chose aisee d’un point de vuealgorithmique.

Une autre methode beaucoup plus simple mais dont les resultats sont tres variables et sou-vent assez peu satisfaisants est la methode des batonnets. Elle consiste a poser des batonnetstoujours de la meme maniere sur un caractere et de recuperer l’ensemble des batonnets coupespar les caracteres, l’ensemble etant suppose unique pour chaque caractere different. La compa-raison est alors aisee puisqu’il ne s’agit que de vrai et de faux sur un certain nombre de batonnets.

Pour notre systeme d’extraction de caracteristiques, nous avons choisi une methode plusmathematique.

5.2. Moments geometriques

D’une maniere generale, les moments sont une suite de valeurs calculees par une formule

32

Page 34: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 5. RECONNAISSANCE DE CARACTERES

mathematique qui permettent de caracteriser une image. Plus le nombre de valeurs calculees aug-mente, plus la precision avec laquelle l’image est decrite est grande. Plusieurs formules existentpour calculer des moments d’une image. La plus simple et la plus basique est celle des momentscartesiens. Notons Pxy le pixel de l’image a la position (x, y) et mpq le moment cherche. Laformule est la suivante :

mpq =M∑

x=1

N∑y=1

xpyqPxy

.On obtient bien toute une famille de moments decrivant parfaitement l’image. Les moments

cartesiens ont cependant deux inconvenients : Beaucoup d’informations sur les images sont re-dondantes, et une description precise de l’image necessite beaucoup de calculs de moments. Lesecond probleme est qui en fait en decoule est que une grande difference d’une image sur l’autrepeut-etre repercutee sur seulement une petite difference sur les moments cartesiens. Ainsi unetres grande precision sur le calcul des moments est necessaire.

Ces deux problemes sont resolus en utilisant une base de moments qui sont orthogonaux.Deux fonctions ym et yn sont orthogonales si et seulement si :

∫ b

aym(x) yn(x)dx = 0 ; m 6= n

Il existe principalement deux bases orthogonales permettant de calculer les moments d’uneimages : il s’agit des bases de Legendre et de Zernike.

5.3. Moments de Zernike complexes

Les moments complexes de Zernike sont calcules sur une base de polynomes complexes or-thogonaux sur le cercle unitaire, i.e. (x2 + y2) ≤ 1. Les moments complexes sont obtenus par laformule :

Amn =m+ 1π

∑x

∑y

Pxy[Vmn(x, y)]∗ avec x2 + y2 ≤ 1

avec m allant de 0 a +∞ et ou ∗ indique le conjugue complexe. L’entier relatif n est sujet aces conditions :

m− | n | estpair , | n | ≤ m

La base orthogonale utilisee pour le calcul des moments de Zernike sont les polynomescomplexes Vmn(r, θ) tels que

Vmn(r, θ) = Rmn(r) exp(inθ)

Epita 2012 33 NightWare

Page 35: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 5. RECONNAISSANCE DE CARACTERES

ou (r, θ) sont definis sur le cercle unitaire. Rmn(r) est le polynome radial orthogonal definipar :

Rmn(r) =

m−|n|2∑

s=0

(−1)s F (m,n, s, r)

avec

F (m,n, s, r) =(m− s)!

s!(m+|n|2 − s)! (m−|n|

2 − s)!rm−2s

A partir de ces formules, il est possible de calculer tous les moments de Zernike, du moinsjusqu’a l’ordre 12 car au-dela les factorielles depassent les representations des entiers en OCamlet les resultats sont faux. Cependant l’ordre 12 correspond a 47 moments differents, ce qui estsuffisant pour caracteriser correctement une image.

Les moments calcules sont des nombres complexes. Pour les utiliser correctement, il ne fautpas oublier de prendre leur module. Un des principaux avantages de l’utilisation des moments deZernike est que ceux-ci sont par nature invariants par rotation et peuvent etre rendus invariantau changement d’echelle.

5.4. Implantation des moments de Zernike

Une fois les formules mathematiques en main, il n’est pas tres difficile d’implanter le cal-cul. Il suffit en effet de transformer les formules mathematiques en fonction OCaml. Cependantdes soucis apparaissent a l’implantation des differentes formules. Le premier est le changementde coordonnees entre la matrice contenant les pixels de l’images (sous forme de coordonneescartesiennes donc) et le repere de coordonnees polaires necessaire pour calculer les polynomesde Zernike. Ce changement de repere induit une erreur dans le calcul des moments car les valeurscontenues dans la matrice des pixels de l’image sont de par leur formes sur des valeurs discretesen x et en y. Ainsi le changement de coordonnees utilise pour la somme appelle des pixels quin’existent pas entre les pixels disponibles et une interpolation doit etre faite. Le second problemeest le choix de de la position du cercle unitaire. Pour effectuer ce changement de repere, nousavons decide que la position du centre du cercle se trouverait au centre des masses de l’imageconsideree (ce qui en plus implique une invariance a la translation) et que l’unite du cercle setrouverait au plus loin c’est-a-dire tel que tous les pixels noirs soient a l’interieur du cercle.

L’invariance a l’echelle est tres importante car elle permet de reconnaıtre une image par sescaracteristiques fournies par Zernike quelque soit sa taille et ainsi un caractere est reconnu pourtoutes les tailles de police de caractere. Cette invariance est de fait obtenue lors du choix ducercle unitaire qui est plus grand si l’image est plus grande et renvoie donc les memes resultats.

5.5. Resultats experimentaux et ameliorations

Globalement, nous avons ete tres decus du resultat des moments de Zernike pour la re-connaissance des caracteres. Meme si la reconnaissance de caractere sur notre image de test

Epita 2012 34 NightWare

Page 36: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 5. RECONNAISSANCE DE CARACTERES

fonctionnait assez bien, il faut admettre que des caracteres d’une taille differente de ceux quenous avons appris au programme sont tres mal reconnus (precisement lorsque les caracteres ontune taille de police inferieure a 20px). L’invariance a l’echelle des moments de zernike est en effettres dependante de la taille et surtout de la resolution de l’image, sachant que plus une imageest petite, plus les valeurs de Zernike renvoyees sont imprecises, d’autant plus que nos imagessont d’une maniere obligatoire binarisee en noir ou blanc, sans gris. Une precision acceptabledans la reconnaisance a ete accomplie en redimmensionnant l’echantillon de l’image considereeavant le calcul des moments de Zernike lorsque celui-ci est trop petit. Ceci a permis de limiter lesproblemes lies aux positionnements entiers des pixels pour calculer des valeurs de Zernike reelles.

Finalement, les caracteres en anglais sont assez bien reconnus, seule la ponctuation et lesaccents posent encore quelques problemes, a cause de leur petite taille.

Ci-dessous se trouvent les 12 premiere valeurs de Zernike obtenues pour trois A differents :A normal, A ayant subi une rotation de 180 et A ayant subi un changement d’echelle

81.805641 11.962558 144.151274 8.735376 11.846106 22.951377 75.339816 21.996598 18.18332013.019268 68.638534 16.273966

80.214091 4.880752 144.890681 7.510124 0.849932 23.618667 74.212842 16.832500 12.0527589.471701 75.347473 12.065958

90.081698 7.901847 153.710518 7.302980 7.924174 27.615041 70.461695 13.756975 19.71485632.856638 80.607526 18.185898

On peut donc observer de maniere generale une assez bonne proximite entre les differentesvaleurs obtenues.

Epita 2012 35 NightWare

Page 37: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 6. DICTIONNAIRE

Chapitre 6Dictionnaire

Cette partie a ete entierement realisee par David Garcin.

Afin de corriger les eventuelles erreurs survenues lors de l’etape de la reconnaissance descaracteres, nous avons decide d’implementer une correction orthographique.

6.1. Principe

Nous disposons d’un dictionnaire nous servant de base de reference pour la correction. Il sepresente sous la forme d’un fichier texte d’ou nous extrayons les mots afin de creer une tablede hachage qui nous servira a detecter si un mot est mal orthographie et, le cas echeant, dele corriger en trouvant le mot le plus proche. Pour ce faire, nous recherchons pour chaque motde notre texte extrait, le ou les mots ayant la distance d’edition la plus petite avec le mot malorthographie.

6.2. Distance d’edition

Afin de trouver les mots susceptibles de remplacer le mot errone, on calcule sa distanced’edition avec les mots de notre dictionnaire. Dans notre cas, nous utilisons la distance deDamerau-Levenshtein qui consiste a calculer le nombre minimum d’operations simples a effectuerpour passer d’un mot a l’autre. Ces operations consistent en la suppression de caractere, l’ajoutde caractere, la substitution du caractere par un autre et la transposition de deux caracteresconnexes (a savoir l’echange de leur position dans le mot).

6.3. Dictionnaire

La correction orthographique necessite avant tout un dictionnaire nous permettant de determinerles mots mal orthographies.

Dans un premier temps, nous avions simplement place un ensemble assez consequent de motsdans notre dictionnaire sense representer l’ensemble des mots de la langue anglaise (etant donneque notre OCR est base sur le reconnaissance des textes en anglais). Cependant un gros probleme

Epita 2012 36 NightWare

Page 38: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 6. DICTIONNAIRE

c’est pose a nous au moment de la correction, pour un nombre de mots non negligeable, nousobtenons un nombre assez important de corrections possibles. Mais comment choisir la bonne ?Il s’avere que dans la plupart des cas le mot le plus usuel est le bon, nous avons donc aborde unenouvelle approche de notre dictionnaire. Nous avons donc ajoute des textes tires du ”ProjectGutenberg”1 afin de lier a chaque mot un nombre permettant de definir son degre d’usualite (lenombre de fois ou il apparait dans notre dictionnaire) afin d’avoir le minimum de solutions decorrection.

1”http ://www.gutenberg.org/”

Epita 2012 37 NightWare

Page 39: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 7. EXPORTATION DU DOCUMENT

Chapitre 7Exportation du document

Cette partie a ete entierement realisee par Julien Marquegnies.

L’exportation du document se fait soit en un simple fichier texte soit en une page htmlstructuree.

Lors de la reconnaissance du document, le texte passe par un certains nombre d’etats avantd’etre obtenu apres reconnaissance sous forme de string, chaıne pour laquelle on a identifie pourchaque caractere si il est italique ou non. De plus en ayant precedemment detecte l’ordre delecture du texte et les paragraphes qui composent ce dernier l’exportation ne pose plus de reelledifficulte.

L’exportation en fichier texte se fait de maniere assez simple puisque l’on prend la liste desparagraphes dans l’ordre de lecture du texte et on recopie le contenu de chaque ligne dans lefichier. On separe egalement les paragraphes par une ligne vide. En ce qui concerne l’exportationen html, la page obtenue est beaucoup plus structuree que pour les fichiers textes. En effet onconstruit la page, grace au CSS, en reprenant a l’identique la mise en page du texte dans ledocument de depart, mais sans les images puisque l’on ne cherche a extraire que le texte. Onpositionne alors les paragraphes dans le fichier html a l’aide de div, chacun des paragraphesayant une structure le definissant dans le fichier CSS associe a la page.

Voici un exemple de classe definissant un paragraphe dans le CSS :

.para1{

width :400px;margin-left : 300px;margin-top : 200px;

}

La detection des paragraphes fournissant les positions exactes sur l’image, il suffit alorsd’effectuer dans le CSS les decalages necessaires pour obtenir la meme mise en page.

Epita 2012 38 NightWare

Page 40: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 8. INTERFACE EN LIGNE DE COMMANDES

Chapitre 8Interface en ligne de commandes

Cette partie a ete entierement realisee par Julien Marquegnies.

Bien qu’etant pratiques, les interfaces graphiques ne remplacent pas les interfaces en lignesde commandes qui demeurent dans bien des cas incontournables et bien plus interessantes.

Le module Arg d’Ocaml se pretant parfaitement a la gestion de lignes de commandes, c’estce dernier qui est utilise pour parser les instructions et options passees a Eyeliner.

Il est non seulement possible d’utiliser la ligne de commande pour un usage courant (ensembledu traitement de l’image puis reconnaissance du texte et exportation soit en fichier texte soit enfichier html), mais egalement d’utiliser cette derniere de maniere a effectuer uniquement certainstraitements comme la binarisation, la segmentation . . .

usage : -nw -s img -read[-html] dst-s Path of the image-sc Scanning of the image-sf Show available scanner devices-d Destination of the image-b Binarization of the image-sk Skeletonization of the image-m Relaxed median filter-c Convolution filter-se Segmentation of the image-r Rotation of the image-xy XY-Cut algorithm-z Zernike on the image-read Save the extracted text in the specified text file-read-html Save the extracted text in the specified html file

-sp Spellchecking of the specified text file-nw Non-windowed

Les deux options -sc, -sf relatives au scanner utilisent le logiciel scanimage qui est appelepar l’intermediaire d’un fork depuis eyeliner. Il est alors possible pour l’utilisateur de scannerses textes et de les passer directement dans Eyeliner.

Epita 2012 39 NightWare

Page 41: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 9. INTERFACE GRAPHIQUE

Chapitre 9Interface graphique

L’interface graphique a ete entierement realisee par Nicolas Jolie et Julien Marquegnies.

Lors de la seconde soutenance, bien que nous possedions un OCR commencant a fonctionner,notre interface graphique etait encore a l’etat basique, ce qui est plutot normal puisque noussommes plus habitues a utiliser la ligne de commande, et n’interragissait absolument pas avecEyeliner. Cependant pour cette derniere soutenance, et dans l’optique de faciliter le travail al’utilisateur, nous avons realise une interface complete et simple d’utilisation.

Notre interface graphique se decompose en trois parties :

– Un cadre reserve a l’affichage de l’image– Une zone de texte permettant d’editer le ou les fichiers obtenus en sortie de l’OCR. GtkSpell

est egalement utilise afin de permettre une verification orthographique– Une barre d’outils permettant un acces rapide a l’ensemble des actions possibles

Fig. 9.1 – Toolbar de l’interface graphique

Les differents boutons presents dans la Toolbox permettent :

– D’ouvrir une image et de la charger dans la zone prevue– De recuperer directement une image du scanner et de l’importer dans la zone prevue

(necessite scanimage)– De lancer la reconnaissance du document et de realiser l’exportation en fichier texte– De lancer la reconnaissance du document et de realiser l’exportation en fichier html– De realiser un agrandissement de l’image (jusqu’a 150 %)– De realiser une reduction de l’image (jusqu’a 10%)

Voici un apercu de l’interface graphique :

Epita 2012 40 NightWare

Page 42: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 9. INTERFACE GRAPHIQUE

Fig. 9.2 – Interface graphique

Epita 2012 41 NightWare

Page 43: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 10. SITE WEB

Chapitre 10Site Web

Le site web a ete realise par Maxime Jayat et Julien Marquegnies.

Le site web d’Eyeliner, que vous pouvez consulter a l’adresse http ://eyeliner.free.fr, etaitdeja bien avance pour la premiere soutenance. Depuis la seconde soutenance, pour laquelle lesite etait termine, nous nous sommes contentes de maintenir a jour l’ensemble des sections quele composent.

Le site se compose des sections suivantes :

– Accueil - Les nouvelles concernant l’avancement du projet– Projet - Presentation complete du projet Eyeliner– Equipe - Presentation tres succincte des differents membres de NightWare– Telechargements - Sections de telechargements ou se trouvent les rapports de soutenance,

la documentation et les sources du projet– Screenshots - Differentes captures d’ecran– Liens - Contient l’ensemble des sites, articles ayant servis a la realisation du projet

Fig. 10.1 – Site Web d’Eyeliner

Epita 2012 42 NightWare

Page 44: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CHAPITRE 11. PROJET

Chapitre 11Projet

11.1. Decoupage C - OCaml

La repartition du code C - OCaml s’est faite en accord avec ce qui avait ete annonce lors dela redaction du cahier des charges.

ø Le chargement initial de l’image a ete realise en OCaml a l’aide de la bibliothequeOCamlSDL.

ø Le pre-traitement de l’image, a savoir la filtrage, la binarisation, le redressement de l’imageet la segmentation de cette derniere, a ete realise en OCaml.

ø L’extraction des caracteres, la detection des paragraphes et de l’ordre de lecture du textea ete realisee en C.

ø La reconnaissance des caracteres a ete realisee en C et en OCaml.ø Le reseau de neurones a ete realise enOCaml.ø La correction orthographique a ete effectuee en C.ø L’interface graphique utilise la bibliotheque GTK et est produite en C.ø L’interface console a ete realisee en OCaml.ø La production des resultats finaux, a savoir les fichiers textes et html, a ete effectuee en

C.

11.2. Repartition finale des taches

Julien Maxime David Nicolas

Pre-traitement de l’image *** **Extraction des caracteres *** ***Reconnaissance des caracteres * ***Reseau de neurones ***Dictionnaire ***Exportation ***Interface graphique ** *Interface console ***Site Web *** ***

* : Degre d’implication

Epita 2012 43 NightWare

Page 45: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 CONCLUSION

Conclusion

Ce document sonne le glas de notre projet Eyeliner, projet que nous avions debute en no-vembre 2008 et que nous avons developpe, pas a pas, jusqu’ a aujourd’hui pour obtenir le resultatdont vous disposez.

Ce projet a ete extremement instructif, aussi bien en terme de programmation, avec notam-ment une etude plus poussee des capacites d’OCaml, qu’en terme d’imagerie, de reseau de neu-rones. . . et nous a permis de decouvrir des domaines de l’informatique de nous ne soupconnionsni l’etendue ni l’importances qu’ils revetent.

Concernant le projet lui-meme nous sommes plutot satisfaits du resultat obtenu meme si nousaurions aime proposer un logiciel plus avance. Nous avons toujours su respecter en temps et enheure nos engagements vis-a-vis du cahier de charges et vous fournir un travail approfondi. Lorsdes deux premieres soutenances nous avons ete a meme de proposer une base solide concernant letraitement de l’image et la detection du texte, ainsi qu’un debut de reconnaissance de caracteres.Cependant cette derniere aura ete notre point faible jusqu’au bout, notamment a cause del’imprecision de moments de Zernike sur des caracteres de petite taille.

Au final, nous sommes entierement satisfait du travail fourni et des connaissances acquisesquoique nous aurions reellement voulu proposer mieux, ce qui n’est pas faute d’avoir essaye...

NightWare

Epita 2012 44 NightWare

Page 46: Rapport de Soutenance Finale - Freeeyeliner.free.fr/docs/s3.pdf · 2009-06-07 · EyeLiner : Rapport de Soutenance Finale NightWare Rapport de soutenance remis le 27 mai 2009 Marquegnies

EyeLiner 2008 - 2009 BIBLIOGRAPHIE

Bibliographie

[1] Ben Krose, Patrick van der Smagt, « An introduction to Neural Networks. Eighth Edition,1996 »

[2] Marc Parizeau, « Le perceptron multicouche et son algorithme de retropropagation d’erreurs,2004 »

[3] Vogl and al. « Accelerating the convergence of the back-propagation method. Biological Cy-bernetics, 1988. »

[4] Jean-Luc Meunier, « Optimized XY-Cut for Determining a Page Reading Order »[5] Wikipedia, « en.wikipedia.org »[6] Moments de Zernike, « http ://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL COPIES/SHUTLER3/node11.html »[7] Richard J.Mathar, « Zernike Basis to Cartesian Transformations »[8] TSI, « http ://www.tsi.enst.fr/tsi/enseignement/ressources/mti/ »[9] Hung-Min Sun, « Enhanced Constrained Run-Length Algorithm for ComplexLayout Docu-

ment Processing »[10] Hilditch’s Algorithm for Skeletonization,

« http ://cgm.cs.mcgill.ca/˜godfried/teaching/projects97/azar/skeleton.html »[11] Costin-Anton Boiangiu, Andrei-Cristian Spataru, Andrei-Iulian Dvornic, Dan-Cristian Ca-

nanau,« Normalized Text Font Resemblance Method Aimed at Document Image Page Clustering,2008 »

Epita 2012 45 NightWare