Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/04/2008, à 03:29

mansonboy

[Script bash]Recuperer du texte d'image

Salut, étant encore en ce moment en plein dans la programmation en script bash et apres quelques recherche sur internet pour voir si c'etait faisable me voici ici big_smile

J'ai des petites images en carré avec un fond de couleur uni et une phrase écrite desus de couleur uni également et bien organiser. J'ai quelques images comme ceci et j'aimerai faire un script pour extraire seulement le texte de ces images, j'ai donc pensez a utiliser un OCR mais je sais pas si c'est posible de faire ceci en bash script.

Donc pour commencer, j'ai trouver une petite liste de OCR, lequel me conseillez-vous?
http://blog.creaone.fr/post/2007/05/28/ … nux-Ubuntu
Et comment je pourrais faire pour appelez l'image dans le OCR pour en extraire le texte?

Merci d'avance et en esperant que sa soit possible en bash script sinon dite moi avec quoi.

Hors ligne

#2 Le 16/04/2008, à 06:47

ddmdllt

Re : [Script bash]Recuperer du texte d'image

Oula y a rien de garanti (sinon les captcha ne seraient pas ce qu'ils sont),pour le faire "en script bash" à mon avis la tâche se résume à trouver un programme qui le fait bien, manœuvrable en ligne de commande...

Bonne nouvelle (ou absence de mauvaise) t'as pas parlé de lettres désorganisées...


David (Site web (fr) - Home page (en) - weblog)

Hors ligne

#3 Le 16/04/2008, à 07:15

snapshot

Re : [Script bash]Recuperer du texte d'image

salut ,

pour le choix de l'OCR, vu que tu en as un besoin très spécifique, il n'y a pas d'autres choses à faire que de tester toi même (normalement, ils sont prévus pour travailler sur des documents scannés, pas des images).

Je viens de faire un petit test entre gocr et ocrad : pour extraire du texte d'une petite image, gocr a battu à plate couture ocrad... (texte en taille 24 noir sur fond blanc, pas forcément représentatif)

pour extraire le texte, tu peux utiliser :

texte=$(gocr $fichier)

avec $fichier une image au format... pnm !

tu peux la convertir au vol en utilisant imagemagick dans cette construction shell que j'adore :

texte=$(gocr <(convert $fichier pnm:-))

Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#4 Le 16/04/2008, à 16:27

mansonboy

Re : [Script bash]Recuperer du texte d'image

Salut, voila mon script :

mv test.png test.pnm

texte=$(gocr $prog10)

echo $texte

La conversion s'effectue bien mais j'ai un retour d'erreur dans le terminal :

Optical Character Recognition --- gocr 0.41
 use option -h for help

Hors ligne

#5 Le 16/04/2008, à 17:15

snapshot

Re : [Script bash]Recuperer du texte d'image

et non, tu ne peux pas te contenter d'un simple mv !

le mv ne va changer que le nom du fichier, mais en aucun cas son format . Tu dois le convertir. Pour cela :

convert test.png test.pnm

mais il te faut peut-être installer le package imagemagick pour avoir convert.


Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#6 Le 16/04/2008, à 22:02

mansonboy

Re : [Script bash]Recuperer du texte d'image

Bon voila le script maintenant :

convert image.png image.pnm

texte=$(gocr $image.pnm)

echo $texte

Mais j'ai toujours la meme erreur

Dernière modification par mansonboy (Le 17/04/2008, à 03:02)

Hors ligne

#7 Le 17/04/2008, à 00:09

Fake

Re : [Script bash]Recuperer du texte d'image

peut être en donnant a ocr a manger l'image que tu viens de convertir ???

convert image.png image.pnm

texte=$(gocr image.pnm)

echo $texte

Hors ligne

#8 Le 17/04/2008, à 07:11

mansonboy

Re : [Script bash]Recuperer du texte d'image

Bon maintenant je n'ai plus d'erreur mais sa me recupere pas le texte. Voila ce que sa me recupere ;

________l__ _I0_l__________0__ _000 _I________0__ ______00____

Il n'y aurai pas une astuce pour recuperer le texte en fonction de où est placer le texte par pixel?

Hors ligne

#9 Le 17/04/2008, à 08:31

snapshot

Re : [Script bash]Recuperer du texte d'image

normal : l'OCR n'a pas pu reconnaitre ton texte...

si ton texte est fixe, alors oui, tu peux découper ton image avec "convert -crop " : http://www.imagemagick.org/script/command-line-options.php#crop

cependant, tu devrais faire des essais avec les autres OCR avant de te faire ton script. Si ça se trouve, ce que tu veux faire n'est pas possible


Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#10 Le 18/04/2008, à 07:48

Sorbus

Re : [Script bash]Recuperer du texte d'image

Bonjour à tous,

GOCR n'est pas le meilleur moteur de ROC actuellement disponible sous Linux. Dans le lien donné dans le 1er message, le test avait été fait sur la version 1 de tesseract. On en est à la version 2.01 (alors que GOCR ne semble pas avoir évolué depuis). Il est préférable aujourd'hui d'utiliser tesseract. Les résultats sont habituellement bien meilleurs (au moins en noir et blanc... j'ai peu testé couleur sur couleur).

Quelle est la résolution de tes images png ? Habituellement, la ROC fonctionne bien sur des images ayant une résolution de 300 ppi (ou un peu plus... ou un peu moins). Si la résolution est trop faible, rien n'est reconnu. Si elle est trop forte,  outre que les fichiers sont lourds, les défauts du papiers sont pris pour des caractères, et le résultat est inexploitable.

Avant de t'attaquer à un script, essaye un outil graphique qui existe déjà : gscan2pdf (installe la version 0.9.23 - facile à installer, car un deb est disponible - la 0.9.13 disponible dans les dépôts Gutsy est boguée; la 0.9.21 des dépôts Hardy ne vaut pas la 0.9.23).

Essaye la formule gscan2pdf + tesseract.

Avec gscan2pdf, tu importes ton document png. Puis tu utilises l'outil de ROC. Pour des images en couleur, tu auras peut-être intérêt à utiliser l'outil unpaper (intégré à gscan2pdf : outil --> clean up) avant d'effectuer la ROC.

Pour la ROC, une autre association d'outils donne de bons résultats :
xsane+xsane2tess+tesseract.
C'est utile pour des documents non encore numérisés : il est possible avec xsane de sélectionner des zones de texte à scanner, ce qui n'est pas encore possible avec gscan2pdf.

Pour les autres données disponibles dans la documentation francophone Ubuntu au sujet de la ROC, voir ici.

Dernière modification par Sorbus (Le 01/05/2008, à 19:47)

Hors ligne

#11 Le 01/05/2008, à 15:11

mansonboy

Re : [Script bash]Recuperer du texte d'image

Re, apres quelques temps d'absence je reviens sur mon sujet. J'ai toujours pas résolu mon problem mais apparament un changement de l'image en négatif pourrais aider mais je connais pas la commande...

Hors ligne

#12 Le 01/05/2008, à 16:59

snapshot

Re : [Script bash]Recuperer du texte d'image

Pour toutes les manipulation d'images en ligne de commande, il y a ImageMagick


Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#13 Le 01/05/2008, à 19:50

Sorbus

Re : [Script bash]Recuperer du texte d'image

As-tu testé avec gscan2pdf + tesseract ?
Si tu veux, tu peux mettre une de tes images dans un post (via le site "enregistrer sous" par exemple)... ça nous permettrait de mieux voir sur quel "matériel" tu travailles, et éventuellement de tester.

Hors ligne

#14 Le 03/05/2008, à 17:25

mansonboy

Re : [Script bash]Recuperer du texte d'image

Bon c'est bon j'arrive a recuperer le texte dans une variable. Par contre je veux juste afficher les 6 premiere lettre de ma variable et je trouve aucune solution...
Mon code se présente comme ceci :

#!/bin/bash 

convert -negate image.jpg image.pnm

texte=$(gocr image.pnm)

echo $texte //la phrase s'affiche bien mais la j'aimerai que seul les 6 premieres lettres s'affiche. Comment faire?

Hors ligne

#15 Le 03/05/2008, à 22:53

snapshot

Re : [Script bash]Recuperer du texte d'image

en bash (ton script doit commencer par #!/bin/bash et pas #!/bin/sh) comme cela :

${texte:0:6}

Exemple :

texte="abcdefghijkl"
echo ${texte:0:6}

Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#16 Le 04/05/2008, à 17:04

Sorbus

Re : [Script bash]Recuperer du texte d'image

@mansonboy,

Puisque tu sembles avoir opté pour GOCR, je te signale que la version de GOCR disponible dans les paquets Hardy n'est pas la plus récente. C'est la 0.41, sortie en août 2006.

La version la plus récente est la 0.45, sortie en novembre 2007. Sur quelques tests, les résultats obtenus avec la 0.45 sont meilleurs.
[Edit : après avoir comparé les résultats d'un peu plus près, j'en suis moins certain. La version 0.45 reconnait des apostrophes " d' ", " l' ", que la version 0.41 remplace par des " _ " ce qui donne avec la version 0.41 un résultat tronqué immédiatement visible. Mais curieusement, la version 0.45 fait un certain nombre d'erreurs que la version 0.41 ne faisait pas. Quelques exemples de mots bien reconnus pas la 0.41 et déformés par la 0.45 :
Savez-vous --> Savez_vous
la --> Ia
pauvres --> pa4vres
déjà --> déJà
Pour conclure : un mot symbolisant bien la différence entre la version 0.41 et la version 0.45 : "aujourd'hui" :
version 0.41 : aujour_hui
version 0.45 : a4jo4rd'hui
Dommage !
Mais je n'ai testé que sur un type de document/police... Pour avoir une vue plus complète, il faudrait bien d'autres tests.]

Tu peux télécharger sur le site de GOCR (JOCR) la source ici.

Après, une fois placé le fichier sources <gocr-0.45.tar.gz>sur ton bureau, la compilation est facile et rapide.

Il faut désinstaller d'abord la version gocr installée par les dépôts.

Puis :

cd ~/Desktop
tar -zxvf gocr-0.45.tar.gz 
cd gocr-0.45 
./configure
make
sudo make install

A toute fin utile.

De fait, pour l'instant, GOCR donne de meilleurs résultats que tesseract sur un texte sur fond disparate, non uni, avec des cadres... comme une copie d'écran. Pour un texte sur un fond de couleur uni... je ne sais pas.

Bon courage pour la mise au point de ton script.

Dernière modification par Sorbus (Le 05/05/2008, à 08:18)

Hors ligne