Page 2 sur 3
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:28
par theAvenger
Dans ce cas, la solution de mikell est la meilleure, je pense.
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:32
par theAvenger
Je viens de penser à un truc.
Les sites Internet doivent être adaptés aux non-voyants pour pouvoir être mis en ligne. Il doit donc y avoir normalement un texte qui est visible si l'image n'est pas chargée. Ce texte doit indiquer ce que montre l'image (brièvement) et il indiquerait donc ici ton "adresse IP".
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:38
par mikell
Y a une combine glauque qui pourrait aider
Dans le code source tu peux avoir l'adresse de l'image
Si tu lances cette adresse dans un navigateur, tu auras juste l'image sur un fond blanc, dans le coin en haut à gauche
Si en plus tu tapes F11 tu l'auras dans le coin en haut à gauche
de l'écran
Et là tu fais (ou pas...) ta Screencapture et tu utilises mon script
theAvenger, c'est de la balise alt dont tu parles, si elle existait il l'aurait vue dans le code source
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:40
par theAvenger
Je le sais bien. Mais je ne sais pas s'il a déjà chercher dans le code source.
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:45
par mikell
Ben s'il a fait Ctrl-F et qu'il n'a rien trouvé...

Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:48
par theAvenger
En effet, je n'avais pas vu. Je n'ai pas d'autres solutions à proposer.
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:56
par mikell
Autre combine :
Télécharger l'image (InetGet)
La lancer (ShellExecute)
Dans la fenêtre d'affichage qui s'ouvre, y a forcément le nom de l'image dans le titre
Et là utiliser mon script avec WinGetPos

Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 14:58
par theAvenger
Si c'est une image, ça veut dire qu'il y en a une pour chaque "adresse ip" possible. Est-ce que "l'adresse ip" est dans le nom de l'image ?
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 15:02
par mikell
Pas nécessairement mais on s'en fout, le seul point délicat c'est de repérer l'image dans le code-source, après elle aura le même nom à chaque étape
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 15:05
par theAvenger
Ce n'était pas pour un problème de repérage de l'image, mais pour éventuellement récupérer "l'adresse ip" en dur.
Peut-on savoir à quoi va servir le programme ? Les sites internet utilisent en général les images pour qu'on ne puisse pas récupérer le texte à l'aide de bot.
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 15:14
par mikell
'récupérer "l'adresse ip" en dur' depuis un code source, apparemment c'est pas possible, ni par le nom de l'image ni par du texte ni par une balise quelconque
Et ce qu'il essaie de fabriquer, ça s'appelle un bot de récupération d'IP

Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 17:15
par Tlem
@mikell
Mazk a expliquer que ce n'est pas une IP, mais un code sous forme d'IP !
Et puis, ici, pour l'instant il n'a pas été question d'un quelconque rapport avec un jeux.
@Mazk
La meilleure solution sera de passer par la lecture de cette image et de la passer au travers d'un OCR. Pour moi, il n'y à pas d'autre choix, puisque rien n'est indiqué dans le code source de la page (d'après vos informations).
Pour un OCR qui va bien, suivez ce lien :
Reconnaitre du texte affiché à l'écran
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 18:07
par mikell
Qui a parlé de jeux ?
Wikipedia a écrit :Un bot informatique ou robogiciel est un agent logiciel automatique ou semi-automatique qui interagit avec des serveurs informatiques. Un bot se connecte et interagit avec le serveur comme un programme client utilisé par un humain, d'où le terme « bot », qui est la contraction (par aphérèse) de « robot ».
On les utilise principalement pour effectuer des tâches répétitives que l'automatisation permet d'effectuer rapidement. (...)
Pour l'OCR, d'accord mais timmalos dit : "Il arrive souvent qu'on nous demande comment reconnaitre du texte affiché à l'écran
quand toutes les solutions possibles ont été épuisées."
Et Mazk dit dans son 1er post :
"Pour la comparaison je me suis tourné vers ImageSearch.au3 et ImageSearch.dll, bref j'arrive à le faire fonctionner parfaitement et actuellement mon programme arrive à comparer les images et trouver quel chiffre est contenu dans cette image"
donc pourquoi ne pas essayer d'affiner cette solution ? si ça n'aboutit à rien, restera l'OCR qui est quand même une solution plus lourde
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 18:24
par Mazk
Sa fais 2 jour que j'essaye de faire fonctionner Tesseract pour mon problème mais je n'y arrive vraiment pas
EDIT : Bon je vais d'abord essayer ce que mikell me propose ensuite si sa ne marche vraiment pas je me tournerai vraiment vers Tesseract, Mais je veux que mon programme reconnaisse "l'ip" en moins de 5secondes c'est possible avec Tesseract ou la méthode de mikell?
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 18:30
par mikell
T'as pas essayé ça ?
Télécharger l'image,
La lancer,
Utiliser mon script avec WinGetPos sur la fenêtre d'affichage ?
Fais les 2 premières étapes manuellement, si ça marche ça sera presque gagné
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 19:28
par Mazk
Mikell se serait plus rapide si le prog télécharge l'image puis la met dans une nouvelle Gui crée par Koda ? Parceque je veux que en 5seconde l'ip soit à ma disposition si possible ^^'
EDIT : mikell j'ai adapté le code avec ce que tu m'a dit mais sa me met une erreur d'abord voici le code (j'ai mis en rouge ce que j'ai ajouté/modifié) :
► Afficher le texte
Code : Tout sélectionner
#include <ImageSearch.au3>
$img = @scriptdir & "\ip.png"
[color=#FF0000]ShellExecute($img)
$titre = WinGetTitle("ip")[/color]
Global $chars[11] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "point"]
Global $img_chars[11]
For $i = 0 To 10
$img_chars[$i] = @scriptdir & "\chiffres\" & $chars[$i] & ".png"
Next
$x1 = ""
$y1 = ""
$char_w = 9 ; largeur approximative d'un caractère
[color=#FF0000]$img_pos = WinGetPos($titre)[/color] ; localisation de l'image (si elle est dans une gui)
$img_x = $img_pos[0]
$img_y = $img_pos[1]
;$img_w = $img_pos[2]
$img_h = $img_pos[3]
[color=#FF0000]$search_x = 3 [/color] ; s'il y a un petit blanc de 5 px sur la gauche de l'image
$ip = ""
While 1
For $i = 0 to 10 ; cherche dans une zone restreinte :
$result = _ImageSearchArea($img_chars[$i], 0, $img_x+$search_x, $img_y, $char_w, $img_h, $x1, $y1, 0)
if $result=1 Then ; à chaque caractère trouvé,
$ip = $ip & $chars[$i]
$search_x = $search_x + $char_w ; décale la zone de recherche
Exitloop ; sort du for-next et relance la boucle
Else
Exitloop 2 ; sort du while si $result=0
EndIf
Next
Wend
MsgBox(0,"L'adresse ip", $ip)
Quand je le lance ça me lance bien l'image et le titre est correct mais ça me met cette erreur :
Code : Tout sélectionner
>Running:(3.3.6.1):C:\Program Files\AutoIt3\autoit3.exe "C:\Users\Mazk\test.au3"
C:\Users\Mazk\test.au3 (16) : ==> Subscript used with non-Array variable.:
$img_x = $img_pos[0]
$img_x = $img_pos^ ERROR
->19:13:34 AutoIT3.exe ended.rc:1
>Exit code: 1 Time: 1.665
EDIT 2 : J'ai reglé le bug (Fallait ajouter un petit Sleep après l'ouverture de l'image) sa me met aucune erreur sauf que ça ne trouve pas l'ip sa me renvoie une msgbox Vide ><
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 19:51
par mikell
Têtbin que j'ai fait une erreur de syntaxe... Global $chars[11] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "point"]
Mais tu sais, je connais pas la fonction Image Search donc je tatonne
tu ferais pas un petit zip avec tes images, et l'adresse de la page web ou se trouve l'image ?
Re: [..] Lire le texte d'une image
Posté : sam. 25 juin 2011 20:23
par jchd
J'ai un besoin similaire (faire de l'OCR en AutoIt de façon 100% fiable) sur des images de format fixe mais de contenu variable.
Du coup j'ai développé un pseudo-OCR maison, qui n'est en fait q'un scan des lignes verticales de l'image et recherche dans une base SQLite du caractère concerné s'il a déjà été rencontré.
Il y a donc une phase d'apprentissage/stockage qui demande le concours de l'opérateur pour tout nouveau caractère (ou nouvelle fonte ou police), mais sur un jeu de caractères réduit, c'est très rapide.
Sans indiscrétion, c'est pour quel usage (répond en MP si l'usage est "gênant" à avouer... mon usage n'est pas 100% publiable non plus !).
Re: [..] Lire le texte d'une image
Posté : dim. 26 juin 2011 00:40
par mikell
Je renonce...
La fonction _ImageSearchArea me retourne des résultats fantaisistes, et elle est très difficile sur les coordonnées de la zone à inspecter quand on veut restreindre cette zone
Mon idée était de d'abord détecter la zone "vide" au bord gauche de l'image, puis de partir de là pour rechercher dans des zones successives
Dommage, l'idée était logique et le script vraiment pas compliqué
Didiou j'y étais presque...
Code : Tout sélectionner
#include <ImageSearch.au3>
$img = @scriptdir & "\img.png"
ShellExecute($img)
Sleep(1000)
Global $chars[11] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."]
$x1 = 0
$y1 = 0
$ip = ""
$result = _ImageSearch("vide.png",0,$x1,$y1,0)
If $result=1 Then
$search_x = $x1+8
$search_y = $y1
EndIf
For $search_x = $x1+8 To $x1+130 step 9
For $i = 0 to UBound($chars)-1
Sleep(10)
$result = _ImageSearchArea($chars[$i] & ".png", 0, $search_x, $search_y, 10, 200, $x1, $y1, 10)
If $result=1 Then
$ip = $ip & $chars[$i]
Exitloop
EndIf
Next
Next
MsgBox(0,"L'adresse ip", $ip)
Désolé...
Re: [..] Lire le texte d'une image
Posté : dim. 26 juin 2011 01:03
par Mazk
Je vais alors devoir me tourner vers l'OCR obligé? :s
@jchd j'ai pas compris comment tu fait ? En effet se serait pratique pour moi car il n'y a que 11 caractère que et c'est toujours la même police (0,1,2,3,4,5,6,7,8,9 et le point)