Restituer un texte qui figure dans une image

Tutos et exemples de scripts et de code
Post Reply
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Restituer un texte qui figure dans une image

Post by francois »

En pièce jointe un script qui détecte et restitue un texte qui figure dans une image

Le script actiona utilise 'capture2text' , logiciel d'OCR.
Pour télécharger 'capture2text' : https://sourceforge.net/projects/captur ... ture2Text/

Avant une 1ere utilisation
  • Dézipper le répertoire en pièce jointe, le placer où vous voulez
  • Adapter les paramètres ( dans 1ere action)
Si vous placez le répertoire 'OCR' sous 'C:\temp', il y a juste à modifier X1,Y1,X2,Y2
sinon modifier aussi 'URL' ( a.htm est dans le répertoire OCR)

Code: Select all

// en réel, mettre adresse internet de la page
URL ="file:///C:/temp/OCR/a.htm" 

// coordonnées ou se situe l'image à scanner
// (Haut gauche / Bas droit)
X1= 296;
Y1= 531;
X2= 529;
Y2=576;

rep_travail= "c:/temp"
log_error_file = "C:/temp/log_error_OCR.txt"  // <= Ou seront les eventuels messages d'erreur 
Capture2Text= "C:/OCR_auto/produits/Capture2Text/Capture2Text_CLI.exe"

// Normalement, ne pas modifier
var presse_papier=new Clipboard();
t_parms= new Array()
// FIN : Normalement, ne pas modifier
  • Lancer le script
OCR.zip
(12.54 KiB) Downloaded 114 times
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Restituer un texte qui figure dans une image

Post by francois »

Même principe que le script précédent.

Ici, La position et le nombre changent à chaque chargement.

Le script reconnait l'image grâce à l'encadrement qui est fixe :
img_a_trouver.jpg
img_a_trouver.jpg (7.64 KiB) Viewed 2259 times
Pour que l'action "Image" reconnaisse cette image alors qu'une partie de son contenu est différent,
Il faut la paramétrer :
Choisir
  • méthode = "Cross Correlation"
  • Confiance minimale=90
  • Nombre maximum d 'image à chercher = 10 ( en tout cas > 1)
En sortie il faut 1 et 1 seule image trouvée.

Avant une 1ere utilisation
  • Dézipper le répertoire en pièce jointe, le placer où vous voulez
  • Adapter les paramètres ( dans 1ere action)
  • Ouvrir a.htm et refaire l'image : "img_a_trouver.jpg"

OCR (2).zip
(19.11 KiB) Downloaded 109 times
Fredy123
Posts: 163
Joined: 15 Jun 2011, 23:07

Re: Restituer un texte qui figure dans une image

Post by Fredy123 »

Salut Francois,

Merci pour ce partage !

Je tente sans succès d'ajouter un paramètre pour améliorer la recherche OCR.

Code: Select all

t_parms[0]= "-b";
t_parms[1]=   "-lFrench"

XYXY = X1+ " " + Y1 + " " +  X2 +  " " +     Y2 ;
t_parms[2]= "-s" + XYXY

t_parms[3]= "--clipboard"
t_parms[4]= "--scale-factor"

//t_parms[4]= "--whitelist 1234567890,."

var process_OCR = new Process({
	 workingDirectory:  rep_travail,
       
	onStarted: function()
	{
		Console.print(getTime() + " Started!");
	},
	onFinished: function()
	{	
              Console.print(getTime() + " Finish")	
	},
       
	onReadyReadStandardError: function()
	{
		Console.print("StandardError");  
		Execution.stop();              
	},


        onError: function(processError)
       {
            Console.print(99);   
	     Console.print(" ERREUR avec >" + Capture2Text  + "< ?");   
            Execution.stop();  
       } 
});

process_OCR.setStandardErrorFile(log_error_file);
process_OCR.start(Capture2Text,t_parms);
process_OCR.waitForFinished();
process_OCR.kill();
J'essai d'ajouter : t_parms[4]= "--scale-factor"

Écris comme ça, le log d'erreur du logiciel me dit qu'il manque évidemment la valeur au paramètre.... sauf que peu importe comment j'inscris cette valeur, j'obtiens toujours une erreur.... J'ai bien écris une valeur qui est dans le 'range' accepté par le logiciel aussi.

Si tu es capable de me donner un coup de main, j'en serais vraiment reconnaissant !

Merci et bonne journée
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Restituer un texte qui figure dans une image

Post by francois »

Bonjour Freddy,

Suite à un msg sur ce forum ,
j'ai fait les mêmes tests que toi il y a quelques jours
... Et j'ai eu le même pb
Fredy123
Posts: 163
Joined: 15 Jun 2011, 23:07

Re: Restituer un texte qui figure dans une image

Post by Fredy123 »

Bon dommage... je vais commencer à croire que toutes les choses que je n'arrive pas à accomplir sont finalement toujours des bugs :lol:
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Restituer un texte qui figure dans une image

Post by francois »

Bonjour Freddy,

Ta question m'a relancé.

scale-factor fonctionne parfaitement quand il figure dans un .bat :

Code: Select all

 C:\OCR_auto\produits\Capture2Text\Capture2Text_CLI.exe  -lEnglish --scale-factor 4.5  -i c:\temp\short.jpg  -o c:\temp\short.txt
Ainsi en jouant sur le langage et ce paramètre, on voit que la qualité de la sortie OCR varie beaucoup.

Par contre, --scale-factor ne fonctionne pas quand il est lancé via

Code: Select all

var process_OCR = new Process({ ....
Apparemment, ici seuls les paramètres précédés d'un seul "-" sont reconnus.
(Je n'utilise que cette forme dans le script que j'avais proposé sur ce forum)

Ainsi -lFrench (ne pas mettre de blanc entre '-l' et la langue) est reconnu, pas --language French ou --languageFrench

Heureusement, beaucoup de paramètres ont une version "-" et une version "--"

Les paramètres :

Code: Select all

  -?, -h, --help                     Displays this help.
  -v, --version                      Displays version information.
  -b, --line-breaks                  Do not remove line breaks from OCR text.
  -d, --debug                        Output captured image and pre-processed
                                     image for debugging purposes.
  --debug-timestamp                  Append timestamp to debug images when
                                     using the -d option.
  -f, --images-file <file>           File that contains paths of image files to
                                     OCR. One path per line.
  -i, --image <file>                 Image file to OCR. You may OCR multiple
                                     image files like so: "-i <img1> -i <img2>
                                     -i <img3>"
  -l, --language <language>          OCR language to use. Case-sensitive.
                                     Default is "English". Use the
                                     --show-languages option to list installed
                                     OCR languages.
  -o, --output-file <file>           Output OCR text to this file. If not
                                     specified, stdout will be used.
  --output-file-append               Append to file when using the -o option.
  -s, --screen-rect <"x1 y1 x2 y2">  Coordinates of rectangle that defines area
                                     of screen to OCR.
  -t, --vertical                     OCR vertical text. If not specified,
                                     horizontal text is assumed.
  -w, --show-languages               Show installed languages that may be used
                                     with the "--language" option.
  --output-format <format>           Format to use when outputting OCR text.
                                     You may use these tokens:
                                     ${capture}   : OCR Text.
                                     ${linebreak} : Line break (\r\n).
                                     ${tab}       : Tab character.
                                     ${timestamp} : Time that screen or each
                                     file was processed.
                                     ${file}      : File that was processed or
                                     screen rect.
                                     Default format is "${capture}${linebreak}".
  --whitelist <characters>           Only recognize the provided characters.
                                     Example: "0123456789".
  --blacklist <characters>           Do not recognize the provided characters.
                                     Example: "0123456789".
  --clipboard                        Output OCR text to the clipboard.
  --trim-capture                     During OCR preprocessing, trim captured
                                     image to foreground pixels and add a thin
                                     border.
  --deskew                           During OCR preprocessing, attempt to
                                     compensate for slanted text.
  --scale-factor <factor>            Scale factor to use during pre-processing.
                                     Range: [0.71, 5.0]. Default is 3.5.
  --tess-config-file <file>     
Fredy123
Posts: 163
Joined: 15 Jun 2011, 23:07

Re: Restituer un texte qui figure dans une image

Post by Fredy123 »

Intéressant, merci pour l'info !

Au moins il y a une logique derrière tout ça.

Bonne journée :)
Post Reply