Vous êtes sur la page 1sur 23

the recognition crew Bitar Hero

Rapport de soutenance Final - Projet OCR


Ludovic ALLARD
Pierre PERETTI
Benoit DE GELAS

1
the recognition crew Bitar Hero

Table des matières


1 Introduction 3
1.1 Un peu d’histoire . . . . . . . . . . . . . . . . . . 3
1.2 Le principe . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Répartition des taches : . . . . . . . . . . . . . . . 7

2 L’equipe 8
2.1 Benoit . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Pierre . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Ludovic . . . . . . . . . . . . . . . . . . . . . . . 9

3 Pré-traitement de l’image 10
3.1 Binarisation . . . . . . . . . . . . . . . . . . . . . 10
3.1.1 Niveau de gris . . . . . . . . . . . . . . . . 10
3.1.2 Calcule du seuil . . . . . . . . . . . . . . . 10
3.2 Noir&Blanc . . . . . . . . . . . . . . . . . . . . . 10
3.3 Filtres . . . . . . . . . . . . . . . . . . . . . . . . 11

4 Rotation 12
4.1 Detection d’angle . . . . . . . . . . . . . . . . . . 12

5 Segmentation 14
5.1 Detection de bloc . . . . . . . . . . . . . . . . . . 14
5.2 Detection de ligne . . . . . . . . . . . . . . . . . 14
5.3 Detection de caractère . . . . . . . . . . . . . . . . 14

6 Réseau de neurone 15
6.1 Fonctionnement : . . . . . . . . . . . . . . . . . . 15
6.2 Pourquoi l’utilisons nous ? . . . . . . . . . . . . . . 17

7 Site Web 19

2
the recognition crew Bitar Hero

8 Notre programme : 20
8.1 Installation : . . . . . . . . . . . . . . . . . . . . . 20
8.2 Commandes : . . . . . . . . . . . . . . . . . . . . 20

9 Retour d’experience 21
9.1 Benoit . . . . . . . . . . . . . . . . . . . . . . . . 21

10 Conclusion 22

3
the recognition crew Bitar Hero

1 Introduction
1.1 Un peu d’histoire
La première machine de ROC fut créée par Gustav Tauschek,
un ingénieur allemand, en 1929. Elle contenait un détecteur pho-
tosensible qui pointait une lumière sur un mot lorsqu’il correspon-
dait à un gabarit contenu dans sa mémoire.

En 1950, Frank Rowlett, qui avait cassé le code diplomatique


japonais PURPLE, demanda à David Shepard, un cryptanalyste
de l’AFSA (prédécesseur de la NSA américaine), de travailler avec
Louis Tordella pour faire à l’agence des propositions de procédures
d’automatisation des données.

La question incluait le problème de la conversion de messages


imprimés en langage machine pour le traitement informatique.
Shepard décida qu’il devait être possible de construire une ma-
chine pour le faire, et, avec l’aide de Harvey Cook, un ami, construi-
sit « Gismo » dans son grenier pendant ses soirées et ses week-ends.
Le fait fut rapporté dans le Washington Daily News du 27 avril
1951 et dans le New York Times du 26 décembre 1953 après le
dépôt du brevet numéro 2 663 758.

Shepard fonda alors Intelligent Machines Research Corporation


(IMR), qui livra les premiers systèmes de ROC au monde exploi-
tés par des sociétés privées. Le premier système privé fut installé
au Reader’s Digest en 1955, et, de nombreuses années plus tard,
fut offert par le Readers Digest au Smithsonian, où il fut mis en
exposition.

4
the recognition crew Bitar Hero

Les autres systèmes vendus par IMR à la fin des années 1950
comprenaient un lecteur de bordereau de facturation à l’Ohio Bell
Telephone Company et un numériseur (scanner de documents) à
l’US Air Force pour la lecture et la transmission par telexessages
dactylographiés. IBM et d’autres utilisèrent plus tard les brevets
de Shepard.

5
the recognition crew Bitar Hero

1.2 Le principe
Un système ROC part de l’image numérique réalisée par un
scanner optique d’une page (document imprimé, feuillet dactylo-
graphié, etc.), ou une caméra numérique, et produit en sortie un
fichier texte en divers formats (texte simple, formats de traite-
ments de texte, XML...).

Certains logiciels tentent de conserver l’enrichissement du texte


(corps, graisse et police) ainsi que la mise en page, voire de rebâtir
les tableaux et d’extraire les images.

Certains logiciels comportent, en outre, une interface pour l’ac-


quisition numérique de l’image. Jusqu’à une date récente, le fonc-
tionnement des systèmes ROC performants était peu connu car
protégé par le secret industriel ; les logiciels open-source dispo-
nibles (ex : GOcr) étant plutôt l’œuvre d’amateurs. La publica-
tion en open-source de systèmes performants a quelque peu changé
cette situation. Les étapes de traitement peuvent être schémati-
sées ainsi :

– 1. Pré-analyse de l’image : le but est d’améliorer éventuelle-


ment la qualité de l’image. Ceci peut inclure le redressement
d’images inclinées ou déformées, des corrections de contraste,
le passage en mode bicolore (noir et blanc, ou plutôt papier
et encre), la détection de contours.

– 2. Segmentation en lignes et en caractères (ou Analyse de


page) : vise à isoler dans l’image les lignes de texte et les
caractères à l’intérieur des lignes. Cette phase peut aussi dé-
tecter le texte souligné, les cadres, les images.

6
the recognition crew Bitar Hero

– 3. Reconnaissance proprement dite des caractères : après nor-


malisation (échelle, inclinaison), une instance à reconnaitre
est comparée à une bibliothèque de formes connues, et on re-
tient pour l’étape suivante la forme la plus « proche » (ou les
N formes les plus proches), selon une distance ou une vrai-
semblance .

– 4. Post-traitement utilisant des méthodes linguistiques et


contextuelles pour réduire le nombre d’erreurs de reconnais-
sance : systèmes à base de règles, ou méthodes statistiques
basées sur des dictionnaires de mots, de syllabes, de N-grammes
(séquences de caractères ou de mots). Dans les systèmes in-
dustriels, des techniques spécialisées pour certaines zones de
texte (noms, adresses postales) peuvent utiliser des bases de
données pour éliminer les solutions incorrectes.

– 5. Génération du format de sortie, avec la mise en page pour


les meilleurs systèmes
Il faut aussi savoir que dans les OCR peu développer, il est
important d’avoir un apprentissage, tâche assumer par le ré-
seaux de neurone

7
the recognition crew Bitar Hero

1.3 Répartition des taches :


Le projet est parfais pour quatre personnes, car il se divise
parfaitement en quatre partie :
– Pré-traitement
– Segmentation
– Réseaux de neurones
– Interface Graphique
Le site a été réaliser par Benoît. Mais comme rien n’est parfais
ni facile... On est trois... Nous avons décidé de découper en 2
chaque partie afin d’avoir une personne gérant la partie et une
autre pour l’assister.

8
the recognition crew Bitar Hero

2 L’equipe
Le groupe :

Comme cela a été dis plus haut, nous sommes un groupe dif-
férent des autres... En effet le normalement, ni plus, ni moins de
quatre personnes de Krisboul n’a pas été respecté pour nous ! Pour
arranger le tout, nos bon vieux racks nous font faux bon cette an-
née, même si la partie physique du rack n’est pas en cause, la partie
logiciel nous a laissé perplexe... A chaque allumage/extinction de
nos bécane, nous craignons de flinguer le system d’exploitation...
Dommage...

Pour parvenir a nos fins, une seule solution :

Pierre Ludovic Benoit


Pré-traitement x x
Segmentation x
Réseau de neurone x
Interface graphique
Site Web x

2.1 Benoit
Salut moi c’est Benoit alias Yuki, j’ai 21 ans et je compte faire
carrière soit dans le domaine du jeu video soit dans le Chiffre. J’ai
une passion assez prononcé pour le jeu en général, et en parti-
culier quand il est intéresser. Cela peut allez du poker au course
en ligne bien que je joue très peu d’argent. J’ai pour habitude
de lire beaucoup sur les sujets qui m’intéresse, en particulier des

9
the recognition crew Bitar Hero

guides sur les jeux qu’ils m’arrivent de pratiquer. J’aime beau-


coup aussi la psychologie, que je trouve être un domaine trop peu
étudier à l’heure actuelle par les sciences en France. J’ai aussi ( et
bien évidemment, sinon je ne serais pas ici) une passion pour la
technologie, sur toutes ses formes.

2.2 Pierre
Je me présente, Pierre Peretti ou le Corse fou pour certain,
pourtant je suis aussi Breton... Je suis passionné d’informatique,
de mécanique et de musique depuis ma tendre enfance. J’ai grandi
avec Adibou, Zelda et Mario Kart. Je suis fils unique, j’ai pas pu
taper de petit frère, mais c’est cool j’ai plus de cadeaux ! J’ai
décider d’entré a Epita lorsque j’étais en 4 ème, et je ne suis pas
déçus... Quoi que... Les dumps de cette n’ont pas été un très bon
millésimes... Je fais parti d’un groupe de musique en tant que
guitariste, je fais des solos qui déchire (ou pas) ! J’ai encore une
copine, heureusement qu’elle ne lit pas le "encore" sinon je suis
mort ! Je m’occupe principalement de la partie réseaux de neurone
et rotation de l’image.

2.3 Ludovic
Forcé par ses parents à travailler dans un camps chinois, j’ai
connu le milieu informatique par un jeune collaborateur. J’ai ré-
paré des ordinateurs jusqu’à l’âge de 10 ans. Ensuite mes parents
ont décidé de m’envoyer à l’étrangé afin de fructifier mes grandes
connaissances dans le milieu en m’envoyant en France à l’Epita.
Plus sérieusement je suis un gars normal de 20 ans qui aime l’in-
novation et les crêpes. Ce projet ma permis d’apprendre beaucoup
de mes erreurs (et il y en a beaucoup)

10
the recognition crew Bitar Hero

3 Pré-traitement de l’image
3.1 Binarisation
3.1.1 Niveau de gris

Dans un premier temps on applique une niveau de gris sur


l’image, ceci est préférable pour un passage en noir et blanc ul-
térieure. Pour calculer le niveau de gris on calcul la luminescence
de chaque pixel à partir de ses valeurs RGB. On donne ensuite la
même valeur calculer à RGB. On applique ceci a tout les pixel de
l’image pour obtenir une image en niveau de gris

3.1.2 Calcule du seuil

Le seuil vas nous permettre de savoir à partir de quel valeur le


pixel de vient noir ou blanc lors de la binarisation. Dans un pre-
mier temps on calcule la moyenne de luminescences de l’ensemble
de pixel de l’image, on obtient ainsi un seuil global. Avec ce cal-
cul on évite ainsi d’avoir une image totalement noir après avoir
appliqué la binarisation si l’image d’origine est sombre.

3.2 Noir&Blanc
La Binarisation permet de faire ressortir le texte qui générale-
ment en noir, dans une page généralement blanche. En binarisa-
tion on accentue la différence entre le fond et le texte La binari-
sation consiste à différencier les pixel que l’on vas mettre en noir
ou en blanc.

Pour cela ô comparé la luminescence des pixel avec la valeur


du seuil calculé avant

11
the recognition crew Bitar Hero

3.3 Filtres
Filtre passe-bas Pour éliminer une partie du bruit nous uti-
lisons un filtre passe bas qui vas appliqué la moyenne des pixel
voisin au pixel traité. Celui-ci a pour inconvénient de crée un lé-
ger flou et donc d’adoucir les bords des caractères.

12
the recognition crew Bitar Hero

4 Rotation
Lorsque nous voulons étudier une image, certaine d’entre elle ne
sont pas droite, et nécessite donc d’être redresser. Sinon il devient
quasiment impossible d’analyser les caractères et donc d’arriver a
notre but.

Pour cela nous avons fais appel au matrice de rotation :


 
cos(teta) −sin(teta)
sin(teta) cos(teta)
Grâce aux propriétés des matrices, voila le produit entre la ma-
trice
  et la précédente :
x
y
X et Y sont les nouvelles coordonné du point (x,y) par la rotation
de centre (0,0) d’angle téta.
X = x ∗ cos(teta) − y ∗ sin(teta)
Y = x ∗ sin(teta) + y ∗ cos(teta)

C’est bien beaux tout ça, on peut faire une rotation, mais on
ne connait pas l’angle...

4.1 Detection d’angle


La detection d’angle lors du prétraitement est une étape pri-
mordiale au bon fonctionnement de notre OCR. En effect le dé-
coupage de charactère ne peut être bien effectuée si l’image est
inclinée, nous avons donc chercher a resoudre le problème de la
detection d’angle. La transformé de Hough nous a parru comme
étant la plus apte a resoudre ce problème qui au premiers abord

13
the recognition crew Bitar Hero

peut paraitre insurmontable et d’une grange complexité algorith-


mique. Mais il n’en ai rien... Cette technique est relativement ra-
pide a metre en place et d’une grande éfficacitée.
Histoire :
Pour commencer un petit peu d’histoire. La transformée de Hough
est une technique de reconnaissance de forme théorisée par Paul
Hough en 1962. Cette technique est utilisée dans le traitement
d’images numériques pour détecter les lignes présentes dans une
image. Il existe une version appelée transformée de Hough géné-
ralisée qui peut quand à elle reconnaitre n’importe quelle forme.

C’est a ce moment la qu’intervient la recherche de l’angle. Nous


avons pour cela utilisé l’algorithme de Hough. Cette algorithme
nous permet de trouvé un motif qui a été "élué" comme étant le
plus adapté.
Pour cela nous construisons une matrice ayant comme première
taille, la taille de la diagonal de l’image (car c’est la plus grande
taille que l’image peut avoir, et comme deuxième taille 181 car
nous cherchons un angle entre 0 et 180 degré. Pour chaque pixel
nous calculons l’angle le plus adapté, puis nous incrémentons le
compteur dans la matrice ayant pour coordonnée l’angle, puis nous
renvoyons l’angle ayant le compteur le plus grand. L’algorithme
est gourmand, mais est très performant.

14
the recognition crew Bitar Hero

5 Segmentation
Le but de la segmentation est de detecté l’ensemble des carracté
sur la page, pour ceci on decompose le travil en plusieur etapes.
Dans un premier temps on doit extraire les blocs de texte pre-
sents sur la page, pour cela un doit utilisé un algorithme XY-cut.
dans un second temps en detecte les ligne dans les bloc de texte
pour enfin isolé chaque charactere afin de les envoyer au reseau de
neuronne pour les identifier

5.1 Detection de bloc


La detectionde bloc necessite l’algorithme XY-Cut,malheuresement
,je n’ai pu intégré cette algorithm croyant gagné du temps en fai-
sant directement la detection de ligne.

5.2 Detection de ligne


Dans un premier temps on parcours les lignes de pixel une
par une, si on rencontre une ligne avec plus d’un certain seuil de
pixel noir on la considére come ayant du texte, on enregistre donc
la coordoné j de la ligne dans une file. A partir de ce moment
on cherche la prochaine ligne sans texte, une fois detecté elle est
aussi enregistrée. En parcourant l’ensemble du bloc on a ainsi les
coordonée(premiere et derniere ligne de pixel) de chaque ligne de
texte. Cependant la detection n’est pas fonctionel, en effet j’ai
recontré beaucoup de probleme, et

5.3 Detection de caractère


La detection des caractère s’aparant a la detection des lignes.
Les meme systeme est utilisé sur l’axe i(horizontal).

15
the recognition crew Bitar Hero

Figure 1 – Réseau de neurone

6 Réseau de neurone
6.1 Fonctionnement :
Le réseaux neurone est construits sur le fonctionnement des
neurones qui constitues notre cerveau. Deux neurologues Warren
McCulloch et Walter Pitts publièrent dès la fin des années 1950
des travaux sur les réseaux de neurones.

Il travaillèrent ensuite sur un modèle simplifié de neurone bio-


logique aujourd’hui appelé : neurone formel. Ils montrèrent que
des réseaux de neurones formels simples peuvent théoriquement
réaliser des fonctions logiques, arithmetique et resoudre des pro-
blèmes sur de l’imagerie par exemple.

Le neurone formel est en réalité connu de nous, étudiant de spé


a l’Epita, il est conçu comme un automate doté d’une fonction,
appelée fonction de transfert qui transforme ses valeurs prise en
entrées en sortie selon des règles précises. Dans notre cas, le neu-
rone fait la somme de ses entrées, passe cette somme a la fonction
trasfert et compare la somme obtenue à une valeur seuil.

16
the recognition crew Bitar Hero

Le neuronne répondra par une valeur égale a 1 si cette somme


est supérieure ou égale à ce seuil et par 0 si elle est inferieur (mo-
dèle ultra-simplifié du fonctionnement d’un neurone biologique).

Ces neurones sont par ailleurs associés en réseaux dont la to-


pologie des connexions est variable : réseaux proactifs, récurrents,
etc. Enfin, l’efficacité de la transmission des signaux d’un neurone
à l’autre peut varier : on parle de «poids synaptique», et ces poids
peuvent être modulés par des règles d’apprentissage (ce qui mime
la plasticité synaptique des réseaux biologiques).

17
the recognition crew Bitar Hero

Figure 2 – Schéma de neurone

6.2 Pourquoi l’utilisons nous ?


Reconnaitre un caractère écrit pour nous, n’est pas difficile (ou
pas...) car nous avons, depuis notre enfance, appris a les identifiées.
Mais comment faire pour qu’un caractère "humain" soit reconnue
par une machine qui ne sais théoriquement que identifier que des
niveaux de tension représentant des bits ?

Et bien nous pouvons simuler l’interaction entre des neurones,


même si ce ne sera pas aussi "puissant" en terme de calcul qu’un
cerveau, cela nous suffira amplement ! Un neurone se base sur le
principe des porte logique, dans notre cas nous utiliserons un per-
ception multicouche, qui lui utilise la "porte ou".

Le principe repose sur l’interconnections des différent neurone,


et d’attribuer un poids a chacune des connections de chaque neu-
rone, c’est a dire que la réponse d’un neurone précédant sera plus
ou moins importante que celle d’un autre. L’ensemble du réseau
est construit sous forme de couches, possédant chacune un certain
nombre de neurone qui, comme dis plus haut, sont chacun relier
a tout les autres neurones de la couche supérieur.

18
the recognition crew Bitar Hero

Un neurone est composé d’une fonction transfère, de n+1 va-


leur (n le nombre de neurone de la couche précédente) les n valeur
corresponde aux poids des connections de chacun des neurones.
La dernière valeur (w0), correspond a la valeur d’activation, c’est
cette valeur qui déterminera si un neurone est activé ou non, a
laide de la fonction de transfère. Voici la formule en fonction des
sorties des n neurones précédent (Sn), ainsi que du poids attribué
a chacune des connections (Pn) qui nous permet d’obtenir un co-
efficient qui déterminera l’activation de ce neurone.
X n
A= P i ∗ Sn − w0
i=1
La formule juste au dessus représente l’activation du neurone. La
sortie du neurone est définie pas f(A), ou f est la fonction d’ac-
tivation du neurone. Plusieurs fonction d’activation peuvent être
choisis :
-Une fonction seuil qui, si A inférieur au seuil renvoi 0 et sinon
revoit 1.
- la fonction sigmoïde, définie sur R -> [-1,1] sera la fonction choi-
sie.

Elle est continue et facilement dérivable, ce qui est un avantage


pour l’utilisation de l’algorithme de retro propagation des coeffi-
cients (algorithme d’ apprentissage ).

19
the recognition crew Bitar Hero

Figure 3 – Image Sigmoid

7 Site Web
La visibilité du projet est importante, c’est pourquoi nous avons
décidé de créer un site internet pour le projet qui nous permettra
d’avoir de la visibilité sur internet, importante a l’heure actuelle

Nous avons décidé d’utiliser un site type wordpress pour le


projet et ce pour plusieurs raisons. Tout d’abord pour le prix,
l’hébergement du site est gratuit. Ensuite , le matériel donner par
wordpress permet une édition simple et rapide du site pour la mise
en place d’article consacrer à l’ocr.

Nous avons choisit un style plutôt sobre et épuré pour ne pas


surcharger la page et pour attirer l’utilisateur, pas de pub inutile
ou quoique ce soit pouvant faire fuir les personnes potentiellement
intéresser par un OCR

Par contre, l’un des problèmes de Wordpress, c’est que les ser-

20
the recognition crew Bitar Hero

veurs, et donc le site, n’est pas toujours disponible

8 Notre programme :
8.1 Installation :
Afin de compiler les sources du programme et produire un
fichier binaire exécutable, placez vous dans le répertoire ou les
sources on été décompressée. Utilisez la commande make, pour
compiler. Si vous désirez supprimer les fichier temporaire issu de
la compilation, utiliser la commande make clean.

8.2 Commandes :
-demo [arg]

Démo permet d’exécuter tout le prétraitement sur une image


prise en paramètre.

Le prétraitement consiste à passe l’image en niveaux de gris,


appliquer un filtre passe-bas, afin de supprimer le bruit que la nu-
mérisation produit sur l’image, son passage en noir et blanc. Et
remettre l’image au cas où lors de la numérisation , l’image n’est
pas parfaitement aligné.

-learnabc [a] [b] [c]

Learnabc prend en paramètre 3 images, une image représentant


un A, un B et un C. Cette fonction soumet les images au réseaux
de neurones successivement comme base apprentissage, la lette A
aura pour résultats 1,0,0. B aura 0,1,0 et C 0,0,1.

21
the recognition crew Bitar Hero

9 Retour d’experience
9.1 Benoit
Ce que m’a apporter le projet :
Au début de l’année, je ne savais pas ce qu’était un ocr, je
n’en avais d’ailleurs jamais entendu parler, ou pas avec ce terme,
maintenant je sais exactement ce que c’est et comment cela fonc-
tionne. Je n’étais pas non plus au courant des possibilités apporté
par Ocaml. Cela m’a aussi montrer un aperçu (très réduit) de ce
qui va m’attendre en deuxième semestre et plus tard en ING1, a
savoir une charge de travail de plus en plus importante (pour ne
pas dire, qui va croître de manière exponentiel), et qui va falloir
que je m’organise pour y répondre de manière beaucoup plus cor-
recte. J’ai aussi su que je préfère la partie théorique à la partie
pratique, et que je vais devoir travailler très largement ce dernier
point.

22
the recognition crew Bitar Hero

10 Conclusion
Ce projet fut une bonne experience, nous avons surmonté de
nombreux probleme meme si il en reste beaucoup. Son orienta-
tion tres algorithmique etait tres interessante. Nous avons mal
géré notre temps ce qui a eu des consequences negatives sur le
rendu.Nous sommes somme deçu de ne pas avoir était jusqu’au
bout du projet. Cela reste une bonne experience quand meme du
fait de son sujet et de son language (OCaml) .

23

Vous aimerez peut-être aussi