Tutoriel - OCR - Reconnaissance de caractère

Tutos et exemples de scripts et de code
Post Reply
Violette
Posts: 119
Joined: 10 Aug 2014, 17:42

Tutoriel - OCR - Reconnaissance de caractère

Post by Violette » 25 May 2015, 15:49

Comme vous le savez, il n'y a pas d'OCR intégré dans Actiona. Or, c'est un composant extrêmement utile dans les outils d'automatisation et de scripting.
Après avoir pas mal galéré à tenter d'adapter ocrad.js pour qu'il fonctionne avec Actiona , avoir développé un simili système d'OCR basé sur de la comparaison d'image, caractère par caractère, permettant ainsi de reconnaitre avec un très bon ratio des chaines assez complexe mais avec 2 défauts de taille, la lenteur d'exécution et la gestion des polices (chaque polices différentes doit avoir son image pour chaque caractère U_U'), j'ai fini par trouver la solution magique... (pas tout à fait mais comparé à avant tellement si ++).

Petite précision : For Windows
Petite précision n°2 : C'est un script AutoHotkey, il existe une version AutoHotkey sur Linux, donc il fonctionne peut être aussi sur Linux
Petite précision n°3 : Le script AHK est lui même basé sur Tesseract et NHocr pour le japonais et le chinois (Ah et aussi c'est open source (bon en même temps difficile de protéger la source d'un langage de script interprété) pas besoin de tricher si besoin est)

Capture2Text

- Très simple d'utilisation
- Fonctionne avec tout un tas de langue
- Blablabla

- Récupération de la zone de l'image contenant la chaine de caractère à trouver via un raccourci
Ah mince, on peut pas simuler l'appuie sur une toucher avec Actiona :(

- Oui mais on peux aussi le faire avec une ligne de commande
Ah cool on peut faire ça avec Actiona, donc on est sauvé

- Récupération de la chaine de caractère trouvée dans un fichier ou dans le presse papier
tro bi1

Téléchargement : http://sourceforge.net/projects/capture ... ture2Text/

On fait ça comment avec Actiona ?

Alors déjà la commande window : http://capture2text.sourceforge.net/#command_line

Capture2Text.exe x1 y1 x2 y2 [output_file]

Les arguments :
x1 - X1 - Coordonnée de l'écran
y1 - Y1 - Coordonnée de l'écran
x2 - X2 - Coordonnée de l'écran
y2 - Y2 - Coordonnée de l'écran

Exemple :
start Capture2Text.exe 10 152 47 321 output.txt dans un fichier bat
start /wait Capture2Text.exe 10 152 47 321 output.txt si utilisé directement dans la console

Dans notre cas, nous allons utiliser un fichier bat auquel nous allons envoyer en paramètre les coordonnées voulus. L'utilisation d'un fichier bat nous renverra directement le résultat dans le presse papier, la console s'affichant juste une fraction de seconde, puis se fermant automatiquement, voir ne s'affichant même pas.

Création d'un fichier .bat :

- Créer un fichier texte
- Écrire start Capture2Text.exe %1 %2 %3 %4 (les %x correspondent aux paramètres)
- Enregistrer et renommer ce fichier en ocr.bat

Exécuter le .bat avec les actions d'Actiona :

- Action : Commande

- Commande : C:/Users/Violette/Desktop/ocr.bat (Le chemin de votre fichier ocr.bat)
- Paramètres : 10 152 47 321 (par exemple)
- Dossier de travail : C:/Users/Violette/Desktop/ocr (Le chemin de votre exe Capture2Text.exe)

Exécuter le .bat via le code :

Code: Select all

var myObject = new Process({
    workingDirectory: 'C:/Users/Violette/Desktop/ocr',
});

myObject.start('C:/Users/Violette/Desktop/ocr.bat', ['10', '152', '47', '321']);
Ces 2 façons de faire donnent le même résultat, à savoir la chaine reconnue dans le presse papier !

/!\ La même chose via l'action code prend entre 20 et 30 ms et via l'action commande entre 250 et 300 ms.

Voilà, voilà =) !

User avatar
Jmgr
Admin
Posts: 1635
Joined: 07 Dec 2005, 15:45
Contact:

Re: Tutoriel - OCR - Reconnaissance de caractère

Post by Jmgr » 26 May 2015, 13:27

Impressionnant ! Beau boulot.
"My software never has bugs. It just develops random features."

Post Reply