Page 1 of 1
Restituer un texte qui figure dans une image
Posted: 04 Jun 2021, 12:58
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
- OCR.zip
- (12.54 KiB) Downloaded 126 times
Re: Restituer un texte qui figure dans une image
Posted: 10 Jun 2021, 08:20
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 (7.64 KiB) Viewed 2553 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"
- 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"
Re: Restituer un texte qui figure dans une image
Posted: 10 Jan 2022, 18:31
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
Re: Restituer un texte qui figure dans une image
Posted: 10 Jan 2022, 19:56
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
Re: Restituer un texte qui figure dans une image
Posted: 10 Jan 2022, 19:59
by Fredy123
Bon dommage... je vais commencer à croire que toutes les choses que je n'arrive pas à accomplir sont finalement toujours des bugs
Re: Restituer un texte qui figure dans une image
Posted: 11 Jan 2022, 10:40
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>
Re: Restituer un texte qui figure dans une image
Posted: 11 Jan 2022, 17:43
by Fredy123
Intéressant, merci pour l'info !
Au moins il y a une logique derrière tout ça.
Bonne journée