Wie OCR auf bestimmten Bereich durchführen?

  • Morgen Leute.


    Ich suche nach einer Möglichkeit via OCR einen Text an einer bestimmten Stelle auf dem Bildschirm "auszulesen". Bis jetzt habe ich den Text immer mit dem Mauszeiger markiert, in die Zwischenablage genommen und dann an eine Variable übergeben. Da OCR vermutlich schneller ist wollte ich OCR gerne mal probieren.

    Code
    MouseMove(560, 383, 0)
    MouseDown($MOUSE_CLICK_LEFT)
    MouseMove(602, 383, 0)
    MouseUp($MOUSE_CLICK_LEFT)
    Send("^c")
  • Es handelt sich hier "leider" um SAP. Habe jetzt aber schonmal angefangen zu basteln. Das ist einfacher als gedacht. :D

    Code
    #include <ScreenCapture.au3>
    
    Local $hPng
    $hPng = _ScreenCapture_Capture("", 1130, 620, 1300, 650, False)
    _ScreenCapture_SaveImage(@MyDocumentsDir & "\Capture.png", $hPng)
    ShellExecuteWait(@ScriptDir & "\Functions\tesseract\tesseract.exe", @MyDocumentsDir & "\Capture.png" & " " & @MyDocumentsDir & "\result.txt")

    Das funktioniert soweit schonmal. Die Frage ist jetzt wie ich anstatt des result.txt es direkt an eine Variable übergeben kann. Klar, ich könnte das Textfile einfach einlesen. Aber vllt. geht es auch direkt in eine Variable?

  • Hallo @Sascha, du kannst die Ausgabe direkt abfangen, wenn du es mittels der Konsolenparameter von Tesseract an die Konsole ausgibst und ausliest.

    ich mache das in einem Programm so:

    Bitte frag nicht, ob das guter Code ist. Dafür bin ich die falsche Person in diesem Forum :D


    Eine noch einfachere Variante wäre, du liest einfach mit FileRead die Datei @MyDocumentsDir & "\result.txt" aus und speicherst das in einer Datei. Danach kannst du die Datei löschen.

  • autoiter

    Danke für den Code. Ich habe leider festgestellt das OCR nicht wirklich präzise ist. Ich habe Erkennungsfehler. Eigtl. wollte ich OCR ja gegen Cursormarkierung ersetzen da schneller. Aber OCR Fehler sind hier nicht wirklich so prickelnd.


    Moombas

    Oh cool. Aber leider ist das Scripting bei mir deaktiviert und ich kann es selber nicht aktivieren. Da es sinnlos sein wird bei unserem SAP Team nach der Berechtigung zu fragen fällt das leider raus. Shit Großkonzernrichtlinien. :(

  • Wie gesagt ansonsten mit dem Au3Info bzw. Au3Info_x64 mal die benötigten Felder versuchen nachzuschauen ob du die ID etc. bekommst und darüber abfragen kannst.


    Und ganz ehrlich: Wenn Prozessoptimierung = Zeit sparen = Geld sparen nicht gewollt sind, macht der Großkonzern irgendwas falsch. Ich würde an deiner Stelle Nachfragen, mehr als ein "Nein" kann doch nicht passieren.

  • Nein, das Ganze ist etwas anders gelagert. Meine Automatisierung wie ich sie jetzt schon betreibe (ca. 60-70% meiner täglichen Arbeit erledigt AutoIt) möchte ich nicht an die große Glocke hängen. 1. könnten dadurch tats. Arbeitsplätze des ein oder anderen Kollegen gefährdet werden (davon ab hätte ich am Ende dann die Mehrarbeit weil ... ist ja automatisiert. Würde dann sagen wir für 2 Arbeiten aber fürs gleiche Gehalt) und 2. würde ich tats. damit an die "Öffentlichkeit" gehen wird es vllt. dankend aufgenommen aber am Ende kriege ich dafür nicht mehr wie einen warmen Händedruck. Bin schon 20 Jahre hier und kenne den Laden nur allzu gut.


    Ich habe das schon oft genug auf anderen Gebieten bei uns erlebt. Z.b. Access/Excel und Automatisierung mittels VBA. Was ich da schon alles gebasteltet habe und der Firma etliche Stunden an Arbeit gespart habe. Das mache ich zwar gerne neben meiner regulären Arbeit aber auch dafür gibts nicht 1 Cent (weil steht ja nicht im Arbeitsvertrag). Hätte die Firma das extern programmieren lassen wäre das sicher nicht billig geworden.


    Das ist jetzt einfach eine Sache die ich schlicht für mich behalten möchte. Mein KnowHow würde ich mir nur ungern für lau "wegschnappen" lassen. Bin ja sonst eher ein Mensch der andere sehr gerne dran teilhaben lässt. Aber in diesem Fall ... nöööö. Sollen ruhig alle denken ich klick mir manuell einen Wolf.

  • Das von Moombas angesprochene Au3Info bzw. Au3Info_x64 Tool (gehört zum Lieferumfang von AutoIt) funktioniert bei 'modernen GUI's' leider zunehmend nicht mehr. Als Alternative lohnt sich ein Blick auf folgende Links : uiaspy-ui-automation-spy-tool bzw. ui-automation-udfs

    Diese Tool erfordern allerdings etwas Einarbeitungszeit.

    Meine Automatisierung wie ich sie jetzt schon betreibe (ca. 60-70% meiner täglichen Arbeit erledigt AutoIt) möchte ich nicht an die große Glocke hängen.

    Nachvollziehbar ^^.


    nur so am Rande :

    Mitglieder wählen als Username recht häufig die Variante Vorname_Geburtsjahr (also z.B. Peter_81 für 1981). Ob das bei Dir auch so ist, kann ich natürlich nicht sagen.

    Nun ist die Wahrscheinlichkeit, dass sich jemand aus Deiner Firma in dieses Forum verirrt wohl eher gering, trotzdem macht man sich, falls Du diese Variante gewählt hast, ein Stück weit identifizierbar.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."