OCR eines Sreenshots mit Positionsbestimmung des gesuchten Textes

  • Hi alle zusammen,


    dieses Projekt soll helfen ein Problem in AutoIt zu beseitigen, bzw. zu umgehen.


    Soweit ich mich informiert habe gibt es immer wieder Probleme mit der Steuerung von GUIs die mit sog. QWidgets aufgebaut sind.
    In meinem konkreten Fall hatte ich Probleme mit der Ansteuerung von Google Earth. Jede Schaltfläche dort ist ein Typ der Klasse QWidget. Das Problem ist, dass diese Instanzen anscheinend Variabel vergeben werden, es kann also vorkommen, dass eine Controll beim einen Programmstart eine ID von QWidget12 besitzt und beim nächsten aufruf die ID QWidget23 hat.


    Im englischsprachigen AutoIt-Forum wird in diesem Zusammenhang als Lösung immer wieder von OCR gesprochen. Also Texterkennung.
    Es sind auch einige Code-Beispiele vorhanden in denen beschrieben wird wie diese Texterkennung realisiert wird.


    Ziel des Projekts soll es sein aus dem Screenshot einer GUI den den vorhandenen Text auszulesen und nach einem beliebigen String zu durchsuchen um anschließend die X-Y-Position dieses Strings zu bestimmen. Damit wäre es dann möglich ID-unabhängig Controlls wechselnder position zu bedienen.


    Meine Erfahrunen mit AutoIt halten sich noch in Grenzen, ich hoffe aber, dass ich es mit ein wenig Hilfe von den Mitgliedern diese Forums schaffe das Projekt zu verwirklichen.
    Da hier im Forum noch nichts vergleichbares zu finden war scheint es außerdem ein sehr sinnvolles Projekt zu sein da es die Einsatzmöglichkeiten von AutoIt extrem erhöhen würde.

  • Hört sich interessant an, aber ich bin leider noch zu unerfahren um mitzuhelfen.


    Ich wünsch dir aber viel Erfolg^
    Mfg
    Jautois

  • OCR mit AutoIt? Na dann, viel Spaß!
    OCR an sich, ist schon eine sehr schwierige Aufgabe. Das dann mit einer Scriptsprache zu programmieren, ist, denke ich, der falsche Ansatz.


    Und das es hier im Forum noch nichts derartiges gibt, sollte meine Aussage eigentlich untermauern. ;)


    Ich lasse mich aber gerne eines besseren belehren. Nur zu...

  • Wer ein funktonierenes Programm mit OCR in AutoIt schreibt , hat meinen vollen Respekt.
    Ist aber aus meiner Sicht sogut wie unmöglich!

    If $gegenueber = "Arschloch" Then
    $blutdruck = 180
    $aggresion = 100 & "%"
    ProcessClose("Gegenüber.brain")
    EndIf
    :( Auf Fortbildung für 4 Wochen! :(

  • Für einen begrenzten Fall (z.B. nur eine Schriftart, evtl. nur in einer Schriftgröße) lassen sich durchaus Algorithmen finden, die auch mit AutoIt umsetzbar sind.
    Das ist dann zwar keine wirkliche OCR, sondern eher ein "Image Matching" (meine Kreation), aber könnte die Teilaufgabe eben lösen.


    Ein solcher Ansatz ist auch hier im Forum von mir gepostet, allerdings unvollständig geblieben und in C# umgesetzt (brrr).


    peethebee

  • Hallo zusammen,


    ich habe etwas ähnliches unter Zuhilfenahme "externer" Programme mit Autoit kombiniert.


    Das Autoit-skript macht einen Screenshot einer bestimmten Fläche innerhalb eines Grafikscreens(dort steht ein Text), beispielsweise 300x200 Pixel. (Nein, kein captcha, sondern ein grafischer Chat in einem Onlinespiel meines Sohnes...)


    Dieser Screenshot wird als *.jpg-Datei gespeichert, danach mit Hilfe eines Konsolenprogramms in ein Graustufenbild umgewandelt und anschließend wird von einem weiteren Konsolenprogramm der in der "Grafikdatei" stehende Text per OCR erkannt und in eine Textdatei geschrieben.
    Autoit startet also eigentlich nur aus dem laufenden Skript nach dem Speichern der *.jpg eine Batchdatei welche die Umwandlung in *.txt erledigt.


    Eine sehr schnelle und auch erkennungstechnisch sehr gute Lösung für "normale" Bildschirm-Schriften.


    Da ich keine Ahnung habe (Neuling^^) wie hier im Forum mit Links auf irgendwelche Internetseiten umgegangen wird, einfach mal der Tip die Tante mit folgenden Begriffen zu quälen: gocr sollte den ersten Treffer ergeben, mit djpeg gibts weiteres...wenn man nun beide Begriffe zusammen benutzt, landet man unweigerlich beim ersten Treffer auf einer Seite, die eine eindrucksvolle Anwendung der Kombination dieser Programme darstellt.



    .Andy