Uploaded by Haley Belle

ocr

advertisement
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
1.1 Un peu d’histoire . . . . . . . . . . . . . . . . . .
1.2 Le principe . . . . . . . . . . . . . . . . . . . . . .
1.3 Répartition des taches : . . . . . . . . . . . . . . .
3
3
5
7
2 L’equipe
2.1 Benoit . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Pierre . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Ludovic . . . . . . . . . . . . . . . . . . . . . . .
8
8
9
9
3 Pré-traitement de l’image
3.1 Binarisation . . . . . . .
3.1.1 Niveau de gris . .
3.1.2 Calcule du seuil .
3.2 Noir&Blanc . . . . . . .
3.3 Filtres . . . . . . . . . .
.
.
.
.
.
10
10
10
10
10
11
4 Rotation
4.1 Detection d’angle . . . . . . . . . . . . . . . . . .
12
12
5 Segmentation
5.1 Detection de bloc . . . . . . . . . . . . . . . . . .
5.2 Detection de ligne . . . . . . . . . . . . . . . . .
5.3 Detection de caractère . . . . . . . . . . . . . . . .
14
14
14
14
6 Réseau de neurone
6.1 Fonctionnement : . . . . . . . . . . . . . . . . . .
6.2 Pourquoi l’utilisons nous ? . . . . . . . . . . . . . .
15
15
17
7 Site Web
19
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
the recognition crew
Bitar Hero
8 Notre programme :
8.1 Installation : . . . . . . . . . . . . . . . . . . . . .
8.2 Commandes : . . . . . . . . . . . . . . . . . . . .
20
20
20
9 Retour d’experience
9.1 Benoit . . . . . . . . . . . . . . . . . . . . . . . .
21
21
10 Conclusion
22
3
the recognition crew
1
1.1
Bitar Hero
Introduction
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 photosensible qui pointait une lumière sur un mot lorsqu’il correspondait à 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 machine pour le faire, et, avec l’aide de Harvey Cook, un ami, construisit « 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 exploité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
1.2
Bitar Hero
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 dactylographié, etc.), ou une caméra numérique, et produit en sortie un
fichier texte en divers formats (texte simple, formats de traitements 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’acquisition numérique de l’image. Jusqu’à une date récente, le fonctionnement des systèmes ROC performants était peu connu car
protégé par le secret industriel ; les logiciels open-source disponibles (ex : GOcr) étant plutôt l’œuvre d’amateurs. La publication en open-source de systèmes performants a quelque peu changé
cette situation. Les étapes de traitement peuvent être schématisées ainsi :
– 1. Pré-analyse de l’image : le but est d’améliorer éventuellement 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 normalisation (échelle, inclinaison), une instance à reconnaitre
est comparée à une bibliothèque de formes connues, et on retient pour l’étape suivante la forme la plus « proche » (ou les
N formes les plus proches), selon une distance ou une vraisemblance .
– 4. Post-traitement utilisant des méthodes linguistiques et
contextuelles pour réduire le nombre d’erreurs de reconnaissance : 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 industriels, 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
1.3
Bitar Hero
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
2
Bitar Hero
L’equipe
Le groupe :
Comme cela a été dis plus haut, nous sommes un groupe diffé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 anné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 :
Pré-traitement
Segmentation
Réseau de neurone
Interface graphique
Site Web
2.1
Pierre Ludovic Benoit
x
x
x
x
x
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 particulier 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 beaucoup 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’innovation et les crêpes. Ce projet ma permis d’apprendre beaucoup
de mes erreurs (et il y en a beaucoup)
10
the recognition crew
3
3.1
3.1.1
Bitar Hero
Pré-traitement de l’image
Binarisation
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 ulté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 premier temps on calcule la moyenne de luminescences de l’ensemble
de pixel de l’image, on obtient ainsi un seuil global. Avec ce calcul 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éralement en noir, dans une page généralement blanche. En binarisation on accentue la différence entre le fond et le texte La binarisation 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
3.3
Bitar Hero
Filtres
Pour éliminer une partie du bruit nous utilisons 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.
Filtre passe-bas
12
the recognition crew
4
Bitar Hero
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 matrice
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 primordiale 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é algorithmique. Mais il n’en ai rien... Cette technique est relativement rapide 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
5
Bitar Hero
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 presents 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 faisant 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
6.1
Réseau de neurone
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 biologique 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 problè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 neurone 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 (modèle ultra-simplifié du fonctionnement d’un neurone biologique).
Ces neurones sont par ailleurs associés en réseaux dont la topologie 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 perception 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 neurone, 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 valeur (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 coefficient qui déterminera l’activation de ce neurone.
n
X
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’activation 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 choisie.
Elle est continue et facilement dérivable, ce qui est un avantage
pour l’utilisation de l’algorithme de retro propagation des coefficients (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 ser20
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 numé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
9
9.1
Bitar Hero
Retour d’experience
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 fonctionne. 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 correcte. 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
10
Bitar Hero
Conclusion
Ce projet fut une bonne experience, nous avons surmonté de
nombreux probleme meme si il en reste beaucoup. Son orientation 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
Related documents
Download