Hey guys,
I need a short feedback. I want to create an OCR for a Website that is based on Flash. Before I tell you more, my current script:
Code:
Func _select()
;ZAHL 1
For $i = 0 To 9 Step 1
$n = _ImgSearch("_"&$i)
If $n > 895 AND $n < 905 Then
$1 = $i
EndIf
Next
;ZAHL 2
For $i = 0 To 9 Step 1
$n = _ImgSearch("_"&$i)
If $n > 906 AND $n < 916 Then
$2 = $i
EndIf
Next
;ZAHL 3
For $i = 0 To 9 Step 1
$n = _ImgSearch("_"&$i)
If $n > 917 AND $n < 927 Then
$3 = $i
EndIf
Next
;ZAHL 4
For $i = 0 To 9 Step 1
$n = _ImgSearch("_"&$i)
If $n > 928 AND $n < 929 Then
$4 = $i
EndIf
Next
MsgBox(0, "ROFL", $1 & $2 & $3 & $4)
EndFunc
Func _ImgSearch($sPic, $iTimeout = 100, $bClick = 1, $iTol = 5)
Local $iX = 0, $iY = 0, $bResult = 0, $iTimer = TimerInit()
$aPics = StringRegExp($sPic, '([^|]+)', 3)
While TimerDiff($iTimer) < $iTimeout
For $i = 0 To UBound($aPics) - 1
$bResult = _ImageSearch(@ScriptDir & "/Data/" & $aPics[$i] & ".bmp", 1, $iX, $iY, $iTol)
If $bResult = 1 Then ExitLoop(2)
Sleep(50)
Next
WEnd
;If $bClick AND $bResult Then MouseMove($iX, $iY, 1)
;MouseClick("left", $iX, $iY, 1, 0)
Return $iX
EndFunc ;==>_ImgSearch
[Rest nur in deutsch, so gut ist mein Englisch nicht ;D]
Was das Script macht, ist folgendes: Es checkt, ob in der definierten Arena X1 - X2 das Bild _0 bis _9 (For... Schleife) wiederzufinden ist. Falls ja, wird die Variable der jeweiligen Stelle der Ziffer ($1 - $4) auf den $i-Wert gesetzt. Am Ende sollte so die gesamte, 4-Stellige Zahl heraus kommen.
Leider klappt das Script noch nicht so ganz, ich werde wohl noch auf GDI+ zurück greifen müssen... die Hauptprobleme sind, dass die Ziffern nicht immer an der selben Stelle sind, da nicht alle Ziffern gleich breit sind sowie der Transpartente Hintergrund hinter den Zahlen, der nicht überall gleich ist...
Meine Frage an euch ist, ob ihr einen effizienteren Weg wisst, um dieses Problem zu beheben (das Script braucht gut 5 Sekunden, bis es die Zahl liefert und funktioniert nicht bei allen).
Gruß
Chris