Mini-ocr (reconnaissance de caractère) pour lire les infos affichés par un autre programme

Description

Mon problème : Récupérer les (très nombreuses) informations textuelles affichées dans la fenêtre d'une autre application dont je ne connais rien et qui ne permet pas le copier / coller (j'ai plusieurs centaines de milliers de lignes à récupérer).

Suite à diverses recherches, entre autres sur delphifr, je me rends compte que si certains ont eu le même problème, personne n'a proposé de solution propre du type interception des messages arrivant dans la fenêtre de l'application en question. Il ne me reste plus qu'à secouer mes neurones et agiter mes petits doigts !

Solution trouvée
Principe général :
- L'utilisateur délimite l'emplacement de la fenêtre à traduire.
- Le programme fait une capture de la zone.
- Un (mini-)programme d'OCR décode l'image et transforme ça en texte (voir plus bas).
- Le programme fait « scroller » la fenêtre et refait une capture, puis OCR, scroll... jusqu'à plus soif.

L'OCR est, quant à lui, basé sur le principe suivant :
- Détection automatique des lignes d'écriture.
- Ajustement éventuel par l'utilisateur, qui peut aussi définir des colonnes (par exemple si on veut décoder des affichages type fichier Excel ou Access).
- Le programme découpe chaque ligne en petits tronçons chaque tronçon étant séparé du suivant par une colonne de pixel sans écriture.
- Chaque petit tronçon est ensuite comparé aux formes déjà reconnues. Si il est connu, le programme fait la traduction, sinon il demande à l'utilisateur de reconnaître la forme qu'il s'empresse de stocker pour la fois suivante.

Pour le détail de certaines options voir doc word.

Conclusion :


Pour la capture de l'image, ce n'est pas ce que j'ai fait de mieux, mais je n'ai pas d'autre idée (ou plutôt suffisamment de connaissance). Les plus gros inconvénients sont :
- On ne sait pas quand la fenêtre a fini de faire les scrolls. Si on va trop vite, on va capturer deux fois la même image ! D'où la nécessité d'un petit « sleep » qui ralentit le programme.
- Il ne faut surtout plus toucher à l'ordinateur pendant qu'il travaille (et comme c'est un peu long si vous avez beaucoup de choses à prendre...)

Pour l'OCR, je n'ai pas cherché à optimiser la vitesse plus que ça. Il y a sûrement des choses à faire.

Il y a des contraintes non négligeables d'utilisation. Voir le fichier doc. Un certain nombre pourrait être levé, sans trop de difficultés en modifiant un peu (beaucoup) les programmes (écartement des lignes en particulier).

Pour le reste voir le source. J'ai mis beaucoup de commentaires (bon, je sais, y'en a jamais assez !).

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.