|
Trouver une ressource
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)
Informations & options pour cette discussion
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
|
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
|
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
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|