Myriad Blog 1.3.0 Sunday, Jan 25th, 2015 at 11:30pm 

Dev News Monday, Nov 24th, 2008 at 04:44pm
ScanToMusic Etape 29

 
Les extractions de formes lmentaires (lignes, arcs) du caractre scann s'tant avres suffisamment stables, nous avons commenc implmenter un module de reconnaissance proprement dit.
 
Une srie de caractres connus (16000 caractres issus de diverses fontes) est envoye l'extracteur, et les formes lmentaires ainsi obtenues sont stockes.  
 
Une fois cet apprentissage termin, une autre srie de caractres, issus d'une page scanne cette fois, est envoye au programme, qui, en les comparant ce qu'il a stock lors de l'apprentissage, essaie de dterminer de quels caractres il s'agit.
 
Premiers essais. Le programme n'est pas aveugle, mais un peu myope. Il commet des erreurs, mais donne gnralement comme rsultat un caractre assez proche (Q au lieu de O, c au lieu de e, etc.)
Il faut maintenant essayer d'amliorer tout cela.
by Olivier Guillion

Dev News Monday, Nov 17th, 2008 at 05:01pm
ScanToMusic Etape 25

 
Pour faire suite au dernier billet, nous avons amlior la recherche de formes lmentaires dans les images scannes.
 
En plus des segments de droites, nous avons ajout des arcs de cercle. Voici ce que cela donne avec les caractres pris en exemple la dernire fois.
 
A gauche, l'image originale du caractre scann, au centre, les primitives graphiques qui en ont t extraites, dessines en lignes fines, et droite, les mmes, dessines en lignes paisses:
 

 
Certaines lignes dpassent, car les calculs prennent en compte les bords extrieurs de la forme d'origine. Les formes extraites sont donc gnralement trop longues d'une demi-paisseur du trac du caractre scann. Ce sera ajust, si besoin est.
 
Il nous reste maintenant trouver une manire efficace de comparer ces donnes un jeu de rfrence. Nous planchons toujours l-dessus.
by Olivier Guillion
 5 comments.

Dev News Friday, Nov 14th, 2008 at 05:04pm
ScanToMusic Etape 24

 
Pour reconnatre un caractre, il faut pouvoir le comparer un ou plusieurs caractres de rfrence, afin d'en dduire un niveau de similarit.
 
Mais quelles donnes comparer? La prsence de pixels allums ou teints tel ou tel endroit ? Cela est trop sensible la fonte utilis, la taille, le "bruit" d aux imperfections du papier ou du scan...
 
Il faut donc fournir l'algorithme de classification des donnes sur le caractre scann reconnatre, qui soient la fois peu nombreuses, pour faciliter et acclrer les comparaisons, mais galement qui dcrivent bien la forme du caractre, pour que l'algorithme ait suffisamment de matriel pour discriminer.
 
Si l'extraction des caractristiques de l'image du caractre scann fournit des donnes qui, quelle que soit la manire dont on les reprsente, ne permettent pas un observateur humain de savoir de quel caractre il s'agissait, il y a fort parier qu'un algorithme ne le pourra pas non plus (ou mal).
 
Dans cette optique, nous avons essay de "vectoriser" l'image, c'est--dire, partir du dessin du caractre, trouver le nombre minimal de formes graphiques (droites, arcs de cercle, etc) qui permettent de redessiner ce caractre, et suffisantes pour qu'un observateur humain puisse dterminer de quel caractre il s'agissait.
 
Le travail est complexe, mais nous sommes arrivs d'assez bon rsultats. En voici quelques exemples, en utilisant seulement des lignes droites :
 
A gauche un petit "a" extrait d'un texte scann.
A droite, l'image dcompose (vectorise) par l'algorithme en seulement 5 lignes droites
 

 
Avec un peu d'imagination, on peut aisment reconnaitre le "a" dans le dessin de droite. Cela ressemble un petit "a" trac la main par un allergique aux courbes
 
Mme chose avec un petit "d" (4 lignes) :
 

 
Un "M" donne ceci (5 lignes, dont une pour le serif gauche):
 

 
et enfin un grand A, dcompos en seulement trois lignes:
 

 
Les premiers rsultats sont donc encourageants, car il rduisent grandement la quantit d'information fournie l'algorithme. Il faut maintenant vrifier la stabilit de l'extraction des vecteurs, puis trouver comment comparer deux jeux de vecteurs afin de reconnatre la lettre.
 
Il n'est cependant pas encore certain que ce type de traitement sera retenu dans la version finale. Nous avons jusqu'ici dvelopp une vingtaine d'algorithmes diffrents, avec plus ou moins de succs. Nous en conserverons, au final, un maximum de 3 ou 4. Tous les autres finiront la poubelle
by Olivier Guillion

Dev News Monday, Nov 10th, 2008 at 05:00pm
ScanToMusic Etape 23

 
Toujours la recherche de l'algorithme parfait de reconnaissance de caractre, l'intuition rejoint les conclusions de la documentation disponible ce sujet : un tel algorithme n'existe pas.
 
Certains sont efficaces, d'autres un peu moins, mais les meilleurs rsultats finaux sont produits par des programmes qui utilisent plusieurs algorithmes la fois.
 
Chacun analyse le dessin du caractre avec ses propres mthodes, s'attache plus prcisment tels ou tels aspects, le compare avec des caractres de rfrence qui lui sont propres.
 
A la fin, les rsultats de tous les algorithmes sont compars, et l'issue finale de la reconnaissance de ce caractre est soumise au vote.  Le gagnant est celui qui a t reconnu par le maximum d'algorithmes. Les taux globaux de reconnaissance sont, par ce principe, grandement amliors.  
 
De l gnraliser, et avancer que l'union et la dmocratie sont prfrables l'individualisme et la dictature...
by Olivier Guillion

Dev News Thursday, Nov 6th, 2008 at 05:07pm
ScanToMusic Etape 22

 
Nous sommes maintenant capables de faire peu prs ce que nous voulons sur l'aspect du caractre : en extraire un squelette, dtecter les trous et les bosses, les parties indpendantes au sein d'un mme caractre (par exemple les point et la virgule d'un point-virgule, ou le "e" et  son accent dans "") et diverses donnes statistiques.
 
Il nous reste maintenant choisir l'algorithme qui va dterminer la nature de ce caractre, par comparaison avec un jeu de rfrence (algorithme de discrimination).
 
Nous avons dj explor plusieurs possibilits, allant de la simple comparaison de matrice un filtre bayesien, un rseau de neurones, la construction d'un arbre de dcision, ou les modles de Markov cachs (HMM)
 
Plusieurs de ces techniques s'avrent efficaces, mais le rsultat de l'apprentissage est difficile vrifier posteriori. On obtient une srie de chiffres dont la signification n'est pas vidente pour l'observateur humain. En rsum, a marche, mais c'est une bote noire.
 
Or la pertinence des donnes que nous extrayons de la forme du caractre et qui servent alimenter l'algorithme de discrimination  est cruciale. Il faut fournir cet algorithme les donnes permettant de diffrencier le mieux possible chacun des caractres. Si nous envoyons ces donnes vers une bote noire, nous ne pouvons pas savoir quel paramtre mriterait d'tre affin ou remplac par un autre pour de meilleurs rsultats. On peut simplement essayer, et voir si le rsultat s'amliore. Cela revient un peu tirer des flches les yeux bands en essayant de s'approcher du centre de la cible.  
 
Nous travaillons donc dans ce sens, en exprimentant et en recherchant de la documentation. Cela risque de prendre un peu de temps...
by Olivier Guillion

Dev News Monday, Nov 3rd, 2008 at 05:07pm
ScanToMusic Etape 21

 
Afin de simplifier les comparaisons de caractres , nous avons travaill sur la squelettisation.  
Ce procd permet de transformer des formes pleines en "fil de fer". Grce cela, on pourrait s'affranchir des paisseurs de caractres, pour ne conserver que les donnes constituant effectivement la forme.
 
A partir de notre texte d'exemple:
 

 
nous avons appliqu l'algorithme de Zang-Suen, assorti d'un amincissement maximal. Sur un squelette, on pourrait appeler a une dcalcification :
 

 
Un autre algorithme de squelettisation, morphologique, celui-l, suivi de la "dcalcification", donne des rsultats lgrement diffrents :
 

 
Certains dtails sont mieux conservs, mais de petites barres matrialisent l'paisseur d'origine du caractre certains endroits.
 
Peut-tre qu'avec un bon lagage de ces petites branches, nous pourrons nous en servir, en conjonction avec le squelette prcdent.
 
Nous nous attaquons maintenant aux mthodes de discrimination, c'est--dire le coeur de la reconnaissance proprement dite. Cela risque d'tre plus difficile de montrer  les rsultats ici, de manire graphique.
by Olivier Guillion


Full view
Reduced view
Most recent first
Oldest first
All
Didier Guillion
Olivier Guillion
Sylvie Ricard
All
Dev News
Technical
Mood
Memories
Myriad Life
To be seen
30 previous days
Apr 2006
May 2006
Jun 2006
Jul 2006
Aug 2006
Sep 2006
Oct 2006
Nov 2006
Dec 2006
Jan 2007
Feb 2007
Mar 2007
Apr 2007
May 2007
Jun 2007
Jul 2007
Aug 2007
Sep 2007
Oct 2007
Nov 2007
Dec 2007
Jan 2008
Feb 2008
Mar 2008
Apr 2008
May 2008
Jun 2008
Jul 2008
Aug 2008
Sep 2008
Oct 2008
Nov 2008
Dec 2008
Jan 2009
Feb 2009
Mar 2009
Apr 2009
May 2009
Jun 2009
Jul 2009
Aug 2009
Sep 2009
Oct 2009
Nov 2009
Dec 2009
Jan 2010
Feb 2010
Mar 2010
Apr 2010
May 2010
Jun 2010
Jul 2010
Aug 2010
Sep 2010
Oct 2010
Nov 2010
Dec 2010
Jan 2011
Feb 2011
Mar 2011
Apr 2011
May 2011
Jun 2011
Jul 2011
Aug 2011
Sep 2011
Oct 2011
Nov 2011
Dec 2011
Jan 2012
Feb 2012
Mar 2012
Apr 2012
May 2012
Jun 2012
Jul 2012
Aug 2012
Sep 2012
Oct 2012
Nov 2012
Dec 2012
Jan 2013
Feb 2013
Mar 2013
Apr 2013
May 2013
Jun 2013
Jul 2013
Aug 2013
Sep 2013
Oct 2013
Nov 2013
Dec 2013
Jan 2014
Feb 2014
Mar 2014
Apr 2014
May 2014
Jun 2014
Jul 2014
Aug 2014
Sep 2014
Oct 2014
Nov 2014
Dec 2014
Jan 2015
Jan 23rd, 2015 at 04:53pm 
Article from Didier Guillion
ACAM sur Mac tape 18
Jan 22nd, 2015 at 04:53pm 
Article from Olivier Guillion
Acam Winter tape 32
Jan 21st, 2015 at 04:54pm 
Article from Didier Guillion
ACAM sur Mac tape 17
Jan 20th, 2015 at 04:58pm 
Article from Olivier Guillion
Acam Winter tape 31
Jan 19th, 2015 at 04:55pm 
Article from Didier Guillion
ACAM sur Mac tape 16
Jan 16th, 2015 at 05:49pm 
Comment from dheo
Keyboard Input
Jan 16th, 2015 at 05:49pm 
Comment from dheo
Keyboard Input
Jan 16th, 2015 at 05:49pm 
Comment from dheo
Keyboard Input
Jan 16th, 2015 at 05:49pm 
Comment from dheo
Keyboard Input
Jan 16th, 2015 at 05:49pm 
Comment from dheo
Keyboard Input

Top of page
Last update:  (c) Myriad