Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Tentative d'OCR ... [ Algorithme / Maths ] (cerber943)

jeudi 5 octobre 2006 à 17:01:16 | Tentative d'OCR ...

cerber943

Bonjour à tous,

J'ai un logiciel duquel je voudrais récupérer des données texte qui sont incrustées dans des images (c du flash). J'ai besoin de ca pour en faire un prog pour des nons voyants : si c du texte, leur tablette braye peut le lire...

Les données textes sont des chiffres à virgule parfois et des lettres.

Je voulais reprendre des exemples d'OCR trouvé sur ce site, mais les images de fond changent.
J'ai donc commencé par faire une conversion avec un seuil élevé de l'image à analyser. Cela ma permi d'obtenir à coup sur un texte
noir sur fond blanc.
Par contre, les caractères ont parfois un pixel en plus ou en moins.
Je me suis penché sur les réseaux de neuronne, des réflexions sur des stats de répartition des pixels sur l'image mais j'avour être dépassé.

Est ce que quelqu'un pourrait m'aider dans ce domaine svp ? me dire où me documenter ou me donner des pistes ?
C'est mon premier prog en analyse d'image mais j'espere arriver à mes fins pour mon amis qui est déficient visuel.

Merci d'avance pour votre aide !

jeudi 5 octobre 2006 à 20:00:40 | Re : Tentative d'OCR ...

Caribensila

Membre Club

Salut Cerber943,

Est-ce toujours la même fonte?
Est-ce que tu parviens bien à isoler chaque caractère?

Si oui à ces deux questions, je te suggère de considérer le rectangle occupé par chaque caractère. Puis de diviser ce rectangle en plusieurs autres (par exemple chaque rectangle divisé en 3x3 parties), puis d'analyser l'occupation de chacun de ces petits rectangles par les pixels noirs.
Ceci te donnerait une signature différente pour chaque caractère.
Ensuite comparer chaque signature obtenue aux signatures idéales et faire un tri...

Suis-je clair?
Je ne sais pas si ça peut marcher, mais je tenterais un truc dans ce genre, à ta place...

Bon courage en tout cas!


vendredi 6 octobre 2006 à 09:03:58 | Re : Tentative d'OCR ...

cerber943

Salut Caribensila

Tout d'abord merci pour ta réponse si rapide, j'ai bien compris ton explication.
J'isole chaque caractère en cherchant le cadre de pixels blanc le plus proche de mon caractère.
C'est toujours la même fonte à priori mais mon seuillage rend sa forme parfois différente de 1 voir 2 pixels (car le fond de l'image change).
J'avais déja envisagé cette solution si je t'ai bien compris mais j'ai plusieurs problèmes :
- Des pixels noirs collé à ma fonte apparaîssent (1 ou 2 "collés" au caractere) et risquent de rendre la signature incertaine : la fonte reste identique mais est colorée sur un fond qui change, ces pixels parasites sont liés à ma fonction de seuil qui de temps à autre noirci un pixel non rataché à la fonte).
- J'avais envisagé 3 indicateurs : la fréq. d'apparition des pixels noir sur la totalité de l'image, la fréquence de colonnes possédant du noir, la fréquence de lignes possédant du noir.
- Le découpage de l'image en sous-zones avait été envisagé mais pour détecter mon chiffre, le fait d'avoir 1 pixel noir à gauche du chiffre 9 par exemple va entrainer une largeur de mon image extraite plus importante de 1 pixel (je découpe mon chiffre dans l'image en cherchant le cadre le plus petit qui ne contient pas de pixel noir). Du coup, je suppose que si mon image est décallée de 1 pixel, chaque sous-zone va retourner des résultats peu caractéristiques de ma "signature" du chiffre à trouver.
- Enfin, mon image découpée en sous-zones me pose aussi le problème de la largeur de chaque zone : en effet, la largeur du chiffre annalysé pouvant varié de 1, voir 2 pixels (je n'ai jamais eu le cas de 3 pour le moment), cela rend mes résultats différentes fréquences caractéristiques peu pertinentes (sans parler que je peux avoir une sous zone de 3x3, et une de 4x4...).

J'avais même envisagé d'utiliser toutes ces caractéristiques pour les fournir à un réseau de neuronnes de 48 entrées (découpage de mon image en 16 sous zones * 3 fréquences caractéristiques de chaque zone) et de 10 sorties (je n'ai besoin que de trouver des chiffres, en réalité 11 entrées car j'aurais besoin de détecter la virgule lorsqu'elle est présente). Je comptais utiliser la librairie FANN qui semble assez simple d'utilisation. Néanmoins je n'ai encore rien fait car mes problèmes précédents lié à ces pixels parasites me laissent penser que je ne pourrais pas caractériser correctement mes chiffres. De plus, je n'ai pas la possibilité de fournir un nombre important d'échantillons caractérisant mes différents caractères (car ces caractères je les lis, je ne les génère pas) pour entraîner le réseau.

Comme le montre ce message, je suis assez désorienté, j'ai trop de paramètres qui je ne maîtrise pas assez dans un domaine que je ne maîtrise pas.
C'est donc mal barré mais je suis prêt à y passer le temps qu'il faudra.
Donc si j'ai été à peu près clair, merci de m'apporter toute suggestion, conseil, démarche à adopter pour m'orienter vers mon objectif ;).
D'avance merci

vendredi 6 octobre 2006 à 13:05:02 | Re : Tentative d'OCR ...

Caribensila

Membre Club

Je vois que tu as déjà bien travaillé le problème. :)

Extrait de "Wikipédia":
"La reconnaissance de caractère est un domaine actif de recherche pour la science informatique depuis la fin des années 1950. Au début, on pensait qu'il s'agissait d'un problème facile, mais il apparut qu'il s'agissait d'un sujet beaucoup plus intéressant. Il faudra encore de nombreuses décennies aux ordinateurs, s'ils y parviennent un jour, pour lire tous les documents avec la même précision que les êtres humains."

Mais ne te décourage pas! :) En fait, dans ton cas, le problème est simplifié au max car il s'agit toujours de la même fonte...

Je reviens sur ma proposition de découpage en zones et signature. Je comprends bien le problème du pixel parasite. Il n'est pas question de le faire disparaître, mais par contre on peut diluer son importance...
Je m'explique: Le truc est de recentrer les images que tu obtiens dans une matrice "maximale" par ajout de colonnes blanches à droite et à gauche de ton image.
Puis, par exemple, tu veux séparer chaque caractère en 12 sous-zones. 3 horizontalement et 4 verticalement (à étudier pour optimiser l'analyse). Pour éviter d'avoir des sous-zones de taille différente, tu agrandis ton image "matricée" 12 fois.

Exemple fictif:
- Image d'origine (un "1", par exemple) 3x12 pixels.
- recentrée dans la matrice -> 7x12 pixels.
- Agrandie 12 fois, ça donne 84x144 pixels. Et chaque sous-zone fera 28 pixels de large sur 36 de haut dans ce cas.

Ainsi, l'importance de la présence du pixel parasite dans une des zones sera diluée et tu travailleras toujours sur des grilles semblables.
Il me semble que c'est la méthode la plus simple à mettre en oeuvre et qu'elle devrait donner de bons résultats.

Je n'ai pas de meilleure idée pour le moment.

Bon coding


vendredi 6 octobre 2006 à 13:22:24 | Re : Tentative d'OCR ...

cerber943

Ok merci beaucoup  Caribensila,

Je vais essayer ta méthode, je me demande juste comment effectuer cet agrandissement car si j'augmente la taille de chaque pixel enfin si 4pixels= 1 pixe agrandi par exemple j'augmenterais en proportion les informations parasitaires que contient mon chiffre non ?
 J'imagine que tu as une méthode qui m'évitera ce problème.
En tout cas merci pour l'idée de mettre à l'échelle chaque image afin qu'elle soit divisible en zones de même taille.
J'avais une autre idée à ce sujet : que penses-tu si je  créais un genre de masque dans une  matrice de la taille de mon image et que ce masque avait ses bits à 1 tout autour des pixels noir de mon image ?
J'ai du mal à exprimer d'avantage mon raisonnement car je ne sais pas vraimentoù je veux en venir lol
en tout cas  encore merci !

P.S : je ne sais pas si je dois accepter ta réponse sur le forum car je ne l'ai jamais fait :  la réponse est accptée à partir du moment où j'ai fait les tests et que ca marche ? parce que je risque de ne pas la valider avant plusieurs jours voir semaine selon le temps disponible... en tout cas c'est certain que tu as bien cerné mon problème et que ton aide m'est précieuse.
Encore merci ! et a bientôt

vendredi 6 octobre 2006 à 13:46:35 | Re : Tentative d'OCR ...

Caribensila

Membre Club

A mon avis, ce n'est pas le genre de réponse à "accepter". Elle manque beaucoup trop de précision, je trouve.   ;)

Oui. Tu augmenteras toujours les informations parasitaires en fonction de l'agrandissement. Mais il n'y aura qu'une sous-zone affectée. Les autres sous-zones devant conserver suffisamment  d'informations utiles à une analyse fiable...

Ton idée de masque me semble intéressante pour faciliter l'analyse. C'est à approfondir je pense. Si j'ai bien compris, tu obtiendrais des "mots" de quelques dizaines d'octets à comparer à une bibliothèque type de ces mêmes mots représentant idéalement les caractères. Cette bibliothèque pouvant être créée après une sorte d'apprentissage de ton logiciel, avec ton aide bien sûr.
Ca devient passionnant, non?   Héhéhé!

Bonne chance!


vendredi 6 octobre 2006 à 14:17:28 | Re : Tentative d'OCR ...

cerber943

Ouais en effet ca devient passionnant, en tout cas très enrichissant !

Bon je vais donc suivre tes conseils et me lancer dans cette démarche encore merci et je te tiendrais au courant d'ici une bonne semaine au mieux
Bon week end ;)



Cette discussion est classé dans : texte, données, image, ocr, tentative


Répondre à ce message

Sujets en rapport avec ce message

Un Label dans une image.. [ par sophie75 ] Salut à toutes et à tous,C'est mon premier message ici, en fait je débute en Delphi donc excusez-moi si mes questions peuvent parraître idiotes :-)J'a bases de données + image [ par jatole ] Bonjour,Est-il possible d'enregistrer une image dans une base de données ? Il y a un message sur le sujet dans le forum mais je n'arrive pas a y accéd Importation de données à partir d'un fichier texte [ par manudel ] Je dispose d'un fichier au format .DAT, composé de n enregistrements.Ce fichier est composé de 6 champs, avec le point virgule comme séparateur de cha Recuperer certain node d'un TTreeView [ par Knolan ] Alors voila je voudrais sauvegarder dans un fichier texte le texte des nodes auquels sont affectés une certaine imageLe problème c'est pour entrer dan base de données image et son [ par bilou2000 ] j' ai un projet de construction d'une base de données pour afficher des images et jouer du son lorsque l'on cliques dessus.1° quelle base ? pour une 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 Recuperer données dans un combobox apartir d'un fichier texte [ par black_hack_white ] Salut à tous,Je voudrais à partir d'un fichier texte qui se trouver sur une adresse web ( http://lien/fichier.txt ) récuperer le contenu dans un combo comment enregistrer une image Jpeg dans une base de données [ par mustapha031 ] j'aimerai bien apprendre la programmation et aider les gens en meme temps Transférer des données d'un TChart vers une fichier texte (urgent si possible) [ par frenchseiya ] Bonjour a tousOn m'a parachuté devant delphi 6.0 pro alors que je n'avais que des notions de programmation en VB et je dois faire un programme dans le Imprimer une image et un texte sur la même feuille [ par zeusnul ] Bonjour,J'aimerais pouvoir imprimer une image et un texte sur la même feuille, mais je suis dans l'incapacité de trouver ça dans l'aide de delphi. Je


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.