begin process at 2010 02 10 11:38:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > RECONNAISSANCE DE CARACTÈRES (OCR)

RECONNAISSANCE DE CARACTÈRES (OCR)


 Information sur la source

Note :
Aucune note
Catégorie :Texte Classé sous :OCR, reconnaissance, caractère Niveau :Initié Date de création :08/04/2009 Date de mise à jour :09/04/2009 16:24:43 Vu / téléchargé :3 494 / 580

Auteur : Bacterius

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour, voici maintenant une source dans un domaine que je n'ai pas encore testé, la reconnaissance de caractères. Mais qu'est-ce que c'est ? C'est le fait de reconnaître un caractère depuis une image. Par exemple, vous avez une image bitmap qui contient un gros caractère (genre 'A', 'B', 'c', ...). OK, mais pour obtenir le caractère dans une variable Char, vous n'allez pas faire un transtypage ^^. Il faut déployer certaines techniques pour arriver à reconnaître des caractères.
Celle que je vous propose ici est celle à laquelle on pense en premier. Voici le principe :

1. On crée des modèles de référence qui contiennent les informations de reconnaissance de chaque caractère.
2. Le gars dessine son caractère.
3. On convertit son dessin en un modèle.
4. On compare ce modèle avec chaque modèle de référence.
5. On prend celui qui ressemble le plus.
6. Et voilà, on a reconnu son caractère !

C'est cette technique que vous trouverez dans le zip, avec de nombreuses explications.
Les composants visuels Tangent sont utilisés dans cette application et sont créés dynamiquement (pas besoin d'installer ces composants, lancez juste l'application et compilez, ils seront créés tous seuls !).

Note : si votre caractère est vraiment très mal fait, le logiciel ne le reconnaîtra pas. Les modèles de référence sont basés sur des caractères en Arial, donc pensez en Arial, ne faites pas de la calligraphie ! Et si ça ne fonctionne pas au début, vous pouvez aller voir dans Modèles => Voir un modèle pour voir la forme des caractères Arial tels qu'ils sont enregistrés dans les modèles de référence.

De plus, cette application prend en charge le centrage du caractère. Par exemple, si vous dessinez votre caractère un petit peu trop à gauche, le logiciel le remettra droit (si vous n'avez pas désactivé l'option dans les menus) pour minimiser les dégats.

Ce logiciel convertit caractère après caractère. Vous pouvez vous amuser à faire des phrases avec, en vous rappellant que une image vide représente un espace.

Dernier point pour cette description, comment le logiciel fait-il pour comparer des modèles ? Il se base sur un algorithme de points, c'est-à-dire qu'il commence à 0, et gagne ou perd un certain nombre de points selon la ressemblance du comparant avec le comparé. Vous pouvez voir les points de chaque caractère dans la fenêtre secondaire. Le caractère qui a le plus grand nombre de points est adopté. Si tous les caractères ont 0 points, le caractère n'est pas reconnu (sauf si le logiciel a su que l'image était vide, donc espace).


 Conclusion

Alors voilà, tous commentaires, remarques, critiques, conseils, etc ...

Cordialement, Bacterius !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 avril 2009 16:24:43 :
// Création dynamique des composants

 Sources du même auteur

Source avec Zip Source avec une capture UNITÉ DE SUPPORT VISTA
Source avec Zip Source avec une capture GESTION DES "CRASHS D'APPLICATION"
Source avec Zip Source avec une capture CONJECTURE DU CARRÉ DES FACTEURS
Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA
Source avec Zip Source avec une capture UTILISER UNE DLL INCLUSE EN RESSOURCES

 Sources de la même categorie

Source avec Zip COMBINAISONS DE STRINGS par askil2000
Source avec Zip Source avec une capture NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS par John Dogget
DISTANCE DE JARO-WINKLER par PoulpHunter
Source avec Zip BASE DE DONNÉE WIKI par thithony
Source avec Zip Source avec une capture DICO ET AIDE MOTS CROISÉE par thithony

 Sources en rapport avec celle ci

CONNAÎTRE LA CASSE D'UN CARACTÈRE par barbichette

Commentaires et avis

Commentaire de Bacterius le 08/04/2009 16:49:15

Codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !

Commentaire de Renfield le 09/04/2009 06:48:55 administrateur CS

J'ai activé ta source moi même.

Lorsque tu postes, tu cliques sur 'Prévisualiser' et tu obtiens ce message
"Attention : Votre source n'est pas encore en ligne !

Afin de finaliser votre participation veuillez ajouter au minimum 3 mots clef puis valider votre saisie en cliquant sur le bouton "Terminer" ci-dessous."

Commentaire de simonpelloquin le 09/04/2009 11:09:04

Salut Bact,
Je ne doute pas de l'intérêt de ta source précédente (compos tangent), mais personnellement, ils ne m'intéressent pas dans l'immédiat. En revanche, j'aimerais bien regarder cette dernière source sans avoir à installer tes composants ;) possible ?
Merci

Commentaire de Bacterius le 09/04/2009 16:13:25

Renfield tu ne veux pas comprendre ! Je remplis les mots clefs, je clique sur le bouton "Terminer" et ça fait pareil. Voilà ...

@Simonpelloquin : oui aucun problème je modifie directement (je voudrais quand-même garder les composants donc je les crée dynamiquement - tu ne les auras pas dans ta palette et tu pourras tout de même compiler et tester).

Cordialement, Bacterius !

Commentaire de Bacterius le 09/04/2009 16:26:18

Et voilà Simonpelloquin, les composants sont toujours là mais créés dynamiquement : tu as juste à lancer le fichier projet comme toujours, ça paraîtra un peu vide au début mais quand ça se lancera tous les boutons seront créés tous seuls :)

Cordialement, Bacterius !

Commentaire de aminedelphi le 09/04/2009 16:51:37

Bonjour
il y a des fichiers qui manquent dans le zip ,
Es que tu as utilisé les moindre carré pour la reconnaissance ou bien une petite comparaison des pixels car avec les moindre carré on peu avoir de meilleur résultat bien que je ne suit pas dans le domaine mais lorsque on étudier cette leçon c'est la premier chose qui mai venu a
L'esprit  

Commentaire de Bacterius le 09/04/2009 17:16:50

Les moindres carrés ?
Je ne sais pas mais en tout cas je prends la comparaison pixel par pixel (la plus haute précision possible) ...

Et quels fichiers manquent dans le zip ?

Cordialement, Bacterius !

Commentaire de cantador le 09/04/2009 18:38:23

Bonsoir,
et scanLine ?

Commentaire de aminedelphi le 09/04/2009 18:46:02

Bonjour
Désolé pour les fichier il ne manque rien car Windows na pas reconnu l'extension c'est un problème qui viens de surgir sur mon ordinateur .
Pour les moindre carre le principe est simple en va prendre des point XY sur un intervalle donnée notre caractère par exemple des point expérimentale (les pixels) on vas réalisé une fonction qui parcoure c'est point comme l'équation d'une droite ou une courbe  le degré de la fonction il est de l'ordre que l'on désire c'est-à-dire que l'on peu réalisé une fonction d'une droite qui est de l'ordre 1 par une fonction de  l'ordre 4 plus l'ordre est grand plus en a plus de précision
Mais comment ça marche ?
En va comparé 2 fonction si elle ce ressemble en calculant l'erreur de ressemblance  
1er étape
-On doit au préalable réaliser la fonction qui parcoure le caractère Originale celui qui est bon      
2eme étape
-on va prendre les pixel de l'image que tu désire tester
-tu va réalisé une fonction qui parcoure le caractère mais attention il faut être intelligent sur ce point car une courbe ne revient pas en arrière il faudra 2 fonction pour un seul caractère
3eme étape
Une foie que tu as les 2 fonctions  l'original est celle du caractère a testée tu vas calculé l'erreur
Avec cette technique même un caractère très flou tu peu l'identifier j'ai un amis qui a réalisé avec ça une lecture sur les lèvre pour les formules mathématiques il sont simple est facile il faudrait que je révise un peu pour te les envoyer
Merci @+        

Commentaire de MAURICIO le 09/04/2009 19:01:01

Salut à tous,

moi je pencherai plus sur une solution de vecteurs.
Au lieu de garder les pixels pour chaque lettre, et, vu que selon les polices les points varient, on pourrait garder l' information de directions à prendre pour dessinner tel ou tel lettre.

Je prends un exemple très simple, le "L" :
disons que je garde l' info que le "L" est définit par un vecteur vertical puis un vecteur horizontal.

Qu' en pensez vous?

A+

Commentaire de Bacterius le 09/04/2009 19:41:15

@Cantador : je ne recherchais pas la vitesse ici, mais c'est très facilement adaptable en Scanline, et c'est probablement la prochaine étape.

@AmineDelphi : Je ne comprends pas très bien ...

@Mauricio : oui ça n'est pas bête non plus, par exemple enregistrer chaque caractère sous la forme de traits tous bêtes, et que ensuite on applique la reconnaissance de caractères par pixels (avec des traits très épais pour que ça passe bien à l'analyse). Je pense que je vais faire ça pour la prochaine étape en plus du ScanLine : demain après-midi c'est fait !

Cordialement, Bacterius !

Commentaire de simonpelloquin le 09/04/2009 23:00:38

Merci pour la modif, je regarde ça demain...

Commentaire de nethacker le 10/04/2009 15:37:30

Merci beaucoup, très utile ! je connaissais le principe, mais jamais fait de source xD

Commentaire de Nicolas___ le 11/04/2009 16:21:57

je ne doute pas de l'utilité de la source mais peut être qu'il serait plus intéressant de se pencher sur la reconnaissance de caractères d'un texte scanné (oui le travail est beaucoup plus compliqué ... )

Commentaire de Bacterius le 11/04/2009 22:20:46

Effectivement Nicolas l'OCR est plus utilisé dans le genre tu rentres un bitmap de texte scanné et il te ressort le texte brut, mais bon là c'est juste une démonstration pour montrer comment on peut reconnaitre ce qu'écrit une personne, et j'ai fait à petite échelle pour la démo. Après, je n'ai pas trop envie de me plonger dans le texte scanné, surtout si le texte est en RTF ... Mais eventuellement dans quelques années je tomberai sur ma source sur le moteur de recherche CS et je me lancerai dedans :p

Cordialement, Bacterius !

Commentaire de FENETRES le 13/04/2009 10:55:09

Effectivement, la méthode des moindres carrés (droite de régression) me semble plus appropriée.

Commentaire de Bacterius le 13/04/2009 14:37:32

Euh je vais voir ce que ça veut dire et en quoi ça consiste sur internet ...

Cordialement, Bacterius !

Commentaire de aminedelphi le 13/04/2009 19:16:19

Bonjour
ne tan fait pas pour cette méthode dès que j'aurai un peu de temps libre je vais rédiger une petit explication avec exemple ici est sur le mp
A noté que cette méthode est facile est utilisé au niveau magister est doctorat pour des application de type reconnaissance de parole d'image d'objet de tout .  

Commentaire de FENETRES le 14/04/2009 13:52:41

Méthode des moindres carrés :
http://fr.wikipedia.org/wiki/M%C3%A9thode_des_moindres_carr%C3%A9s

PS : il n'y a rien de très compliqué d'un point de vue mathématique

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

OCR : Courbes mathématiques avec ScanLine [ par delphi77 ] Salut à ceux que ça intéresse :Je bosse en ce moment sur un OCR et je cherche quelqu'un qui a déjà rencontré le problème lié à la reconnaissance elle MSAGENT et reconnaissance vocale [ par Darkstone_08 ] Bonjour. Je suis débutant en programmation et j'ai été content de trouver sur ce site un tutoriel permettant la "prise en main" rapide des agents de Comment mettre caractère Ohm dans une string? [ par Sat83 ] Hello...Je suis debutant en Delphi et je souhaiterais savoir comment faire pour ajouter le caractère 'Ω' dans une string dans mon code....par exe reconnaissance vocale [ par exyacc ] salut,je voudrais "piloter" mon logiciel avec une reconnaissance vocale....je mettais amusé avec les agents microsoft Microsoft Speech API mais malheu remplacer un caractère par un autre [ par JackNUMBER ] boujour! boujour!alors voila je vous explique mon problème:j'ai 2 memo, un où l'on entre un texte et l'autre ou le texte aura certain caractère qui au Recherche d'un caractère et renvoi d'informations... [ par Lineath ] En fait, j'ai un petit problème tout basique (à ça c'était du langage :P) j'ai une chaîne style :@admin,+modo,autreEt il me f recherche dans une chaine [ par mathieu57100 ] bonjour, je voudrais rechercher dans une chaine de caractère quelconque une adresse IP, et ca fait plus de 2 heures que je teste et reteste les c conversion caractère ascii ---> hexa ou decimal [ par elementalord ] je voudrai savoir s'il existerait une fonction ou procedure pour convertir un caractère ascii en hexa ou decimal si non y'orait il un moyen convertir un code ascii en sont caractère équivalent [ par cricri_b34 ] salut, j'aimerais savoir si il existe un api qui permet de coonvertir un code ascii en sont caractere équivalentdependament de la langue de clavi chercher un caratère dans un memo [ par yvescollet ] bonjour, j'aimerais savoir comment il est possible de chercher un caractère dans un TMemo en lui donnant la ligne du memo et le caractère n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales