Datei auslesen oder Textabfrage

  • Schönen guten Tag,


    ich bin blutiger Autoit Anfänger und habe mich die letzten Tage damit beschäftigt ein kleines Programm für mich und meine Arbeitskollegen zu schreiben, um unseren Alltag etwas angenehmer zu gestallten.

    Jetzt stehe ich allerdings vor einem Problem, bei dem ich nicht wirklich weiterkomme.


    Ich arbeite an Schleifmaschinen und stelle Microwerkzeug her. Je nach Werkzeug, was produziert wird, müssen wir andere Schleifscheiben einbauen, diese variieren in Durchmesser, Flansch, Winkel, Radius.

    Jetzt würde ich gern, dass mein Programm die Scheibenwerte aus unserem Schleifprogramm ausliest und diese in eine Excel-Tabelle einträgt.

    Dies muss vermutlich über eine Texterkennung gelöst werden. Wir speichern zwar unsere Scheiben im Schleifprogramm, jedoch haben sie ein Format welches ich nicht auslesen kann. [.whe]


    Aus diesem Programm müssten alle Scheibenwerte ausgelesen werden.




    und in diese Tabelle eingetragen werden.



    Vielen Vielen Dank für jegliche Hilfe :)

  • Vorab : Willkommen im Forum :)

    Dies muss vermutlich über eine Texterkennung gelöst werden. Wir speichern zwar unsere Scheiben im Schleifprogramm, jedoch haben sie ein Format welches ich nicht auslesen kann. [.whe]

    1.

    Ich gehe mal davon aus, dass Du das Naheliegende, d.h. eine Exportmöglichkeit der Scheibendaten in ein 'neutrales' Format, bereits geprüft hast (ggf. beim Softwarehersteller nachfragen).

    2.

    Könntest Du eine .whe Datei hier posten (muss gezippt werden), oder sind das Betriebsgeheimnisse ?

    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."

  • Hallo Musashi,


    danke für die schnelle Antwort :)


    1. Ja der Export in ein anderes Format ist leider nicht möglich, die Software die wir nutzen ist auch an die 20Jahre alt.

    2. Die Datei habe ich angehängt. In der Datei steht geschrieben das es ein Scheibenpaket mit 4 unterschiedlichen Scheiben ist.

    Das Bild welches ich zuerst gepostet habe zeigt eine der Scheiben (aber nicht exakt diese).



    Dankeschön :) und einen schönen Freitag noch.

  • Das Bild welches ich zuerst gepostet habe zeigt eine der Scheiben (aber nicht exakt diese).

    Die Datei, die Du gepostet hast, läßt sich ganz normal mit z.B. Notepad++ öffnen (siehe Spoiler).


    Ich bin mir allerdings nicht sicher, ob sie alle relevanten Daten zu einer Scheibe enthält. Möglicherweise gibt es dazu (eine) weitere Datei(en) :/ .


    Könntest Du die Datei posten, die exakt zu dem Bild der Scheibe gehört ?

    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."

  • Ja das stimmt sie lassen sich mit einem Editor öffnen, jedoch weis ich nicht wie ich es umsetzen soll das auch immer die richtigen Werte entnommen werden.

    Da wenn es mit einem Editor geöffnet ist, die Scheibenbezeichnung fehlt (Nummerierung der Scheibe im Programm. Erste Scheibe T10 bpsw.)

    und ohne diese Nummer wird es sicherlich sehr schwer die richtigen Werte zu entnehmen.

    Als Beispiel: Für Werkzeug A nehmen wir ein Paket mit 4 Scheiben T10|T11/T12 Doppelbelegung|T14/T15Doppelbelegung|T13/T17Doppelbelegung| im Programm/der Datei könnten allerdings Scheiben von T10-T30 hinterlegt sein.

  • Da wenn es mit einem Editor geöffnet ist, die Scheibenbezeichnung fehlt (Nummerierung der Scheibe im Programm. Erste Scheibe T10 bpsw.) und ohne diese Nummer wird es sicherlich sehr schwer die richtigen Werte zu entnehmen.

    Das Fehlen der Scheibenbezeichnung ist in der Tat ein Problem.

    Die Werte aus der Grafik WhatsApp Image 2021-09-03 at 18.28.29.jpeg findet man zwar in der .whe-Datei

    N00100 P 3170

    N00104 P 17900

    N00108 P 72620

    N00112 P 979

    N00116 P 2000

    N00120 P 0

    N00124 P 0

    N00132 P 1318

    N00136 P 1224

    N00140 P 8140

    N00144 P 15612

    N00148 P 14920


    ,aber sie lassen sich nicht zuordnen (wäre ja auch zu schön gewesen).


    Zur Texterkennung würde mir auf Anhieb https://de.wikipedia.org/wiki/Tesseract_(Software) einfallen

    (siehe auch : https://github.com/tesseract-ocr/tesseract ).

    Von der Software existiert auch eine Kommandozeilen-Variante, bei der man eine Grafik (Format beachten) übergibt und eine Textdatei erhält. Diese könnte man dann mittels Regulärer Ausdrücke auswerten. Das soll auch gar nicht so kompliziert sein.


    Allerdings habe ich bisher noch nicht damit gearbeitet.

    Vielleicht wissen andere User im Forum mehr dazu.


    EDIT : Patrickxxx93

    Im englischen Forum findet man z.B. folgendes :

    Tesseract (Screen OCR) UDF
    This UDF provides text capturing support for applications and controls using Tesseract - an OCR engine currently developed by Google. Tesseract was originally…
    www.autoitscript.com

    Tesseract OCR Get Text Location
    I have had a need for quite a while to redact sensitive information in screenshots before sending them off to 3rd party auditors. Previously I have done this…
    www.autoitscript.com

    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."

    Einmal editiert, zuletzt von Musashi () aus folgendem Grund: Antwort erweitert

  • Wie so häufig kann es sich lohnen, die Frage nach der Sinnhaftigkeit stellen.

    Ich weiß ja nicht wieviele Scheiben im Einsatz sind, aber ggf. ist der Zeitaufwand diese Daten händisch zu erfassen (und zu speichern) am Ende deutlich geringer, als die o.a. Vorgehensweise mittels Texterkennung.


    Die Erstellung der von Dir angegebenen Excel-Datei wurde bisher ja noch gar nicht berücksichtigt.

    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."

  • Aktuell machen wir es auch noch händisch, jedoch schleichen sich dort immer wieder Fehler ein gerade bei neuen Mitarbeitern.

    Wäre der Aufwand nicht so groß hätte ich es dennoch gemacht. Ich schaue mir jedenfalls morgen mal an was du mir hier noch verlinkt hast.

    Trotzdem vielen Dank für deine Zeit und Hilfe :)

  • Da mich Tesseract interessiert, habe ich angefangen "an der Oberfläche zu kratzen" ^^ .


    Ich verwende folgende Version : tesseract-ocr-w32-setup-v5.0.0-alpha.20210811.exe (32 bit)

    Downloadseite : https://github.com/UB-Mannheim/tesseract/wiki

    Zusätzlich noch folgende Datei herunterladen und in das Unterverzeichnis ..\tessdata kopieren :

    tessdata/deu.traineddata at master · tesseract-ocr/tessdata
    Trained models with support for legacy and LSTM OCR engine - tessdata/deu.traineddata at master · tesseract-ocr/tessdata
    github.com


    Als Basisverzeichnis habe ich bei der Installation C:\TesseractOCR-5\Tesseract-OCR\ verwendet.

    Du kannst aber auch den Default verwenden, falls Du möchtest. Dann musst Du den Basispfad im Skript anpassen.


    Da ich Dein Programm natürlich nicht vorliegen habe, wurde zuerst etwas improvisiert.

    Für die Tests lege ein Verzeichnis (z.B. c:\AutoItProjekte\Tesseract ) an. Dies ist Dein @ScriptDir.

    Dorthin kopiere das Skript :

    sowie die Dateien Demoscheibe.jpg und ScheibeT10.JPG


    Um erst mal zu sehen wie Tesseract mit einer 'idealen' Grafik umgeht, habe ich Demoscheibe.jpg erzeugt. Das Ergebnis wird in der Datei result.txt gespeichert und sieht sehr gut aus :


    Mit den Screenshot (ScheibeT10.jpg) läuft es leider nicht ganz so gut. Möglicherweise lässt sich das durch einige Settings noch verbessern.


    Frage :

    Wo / Wie kommen eigentlich die Daten für die verschiedenen Scheiben in das Programm.

    Die Anzeige in VirtualGrind ist ja 'nur' eine Grafik.

    Sind die von Haus aus dabei oder gibt es eine Eingabemaske ?

    Falls es eine Eingabemaske gibt, wäre es ggf. leichter, diese mittels des Windows-Info-Tool von AutoIt auszulesen.

  • Die eingabemaske ist das Feld mit den Scheiben Daten, darüber ändern wir die Scheibe bzw. die Daten. Die Daten der Scheiben werden von uns vermessen, wobei das eintragen im Programm immer gut funktioniert dank grafischer Anzeige, aber das Schreiben auf einen Scheibenzettel nicht immer(je nachdem wer es macht. Und da wir immer mal neue Mitarbeiter haben ist die Fehleranfälligkeit hoch.).Dazu kommt dann noch das wir bei der Arbeit quasi ständig in Berührung sind mit Öl und auch der Arbeitsplatz dementsprechend ölig ist.


    Da wäre es viel sinnvoller ein digitales Buch zu führen welches sich semi automatisch aktualisiert.

  • Das was du gemacht hast sieht schon mal echt gut aus, jedoch bei dem Bild von unserem Programm versucht es halt alles an Text zu erkennen. Da müsste man noch irgendwie versuchen den Bereich zu begrenzen in dem gesucht wird (Das gute ist alle Scheibendaten sind in der selben Reihe und man geht mit BildAUF und BildAB durch die ganzen Scheiben). Gibt es die Möglichkeit mit Tesseract das Fenster eines Programmes anstelle eines Bildes auszulesen ? Hatte heute leider nicht all zu viel Zeit :( meine Tochter hat mich ordentlich beschäftigt ^^.


    Und gibt es noch irgendwo eine ordentliche Dokumentation für Tesseract in Autoit?


    Lg und einen Schönen Abend noch :)

  • Mit den Screenshot (ScheibeT10.jpg) läuft es leider nicht ganz so gut. Möglicherweise lässt sich das durch einige Settings noch verbessern.

    Zwischenbericht :

    So wie es aussieht, hängt die Erkennungsrate maßgeblich davon ab, ob Tesseract die verwendete(n) Schriftart(en) bereits 'kennt'. Ist ja auch nachvollziehbar;) .


    Um das zu verdeutlichen, habe ich einfach einen Bereichs-Screenshot einer Seite der Tesseract-Doku gemacht (siehe TessDoku.jpg im Anhang)

    Wenn ich das o.a. Skript damit laufen lasse, erhalte ich als result.txt :

    Wie man sieht ist die Erkennung quasi fehlerlos.


    Der Screenshot aus Deiner Software macht optisch zwar auch einen guten Eindruck, aber offenbar kommt Tesseract mit dem Font nicht klar, was zu dem weitgehend unbrauchbaren Ergebnis führt.


    Eine Google-Suche nach z.B. Tesseract Font liefert dazu diverse Infos :

    - man kann angeblich zusätzliche Fonts installieren, die bereits 'gelernt' wurden

    - auch das manuelle Lernen eines Font ist möglich, wenn wohl auch auch zeitaufwändig

    - zudem gibt es Drittanbieter, die Tools zum Lernen bereitstellen

    usw.


    Da ich mir Tesseract aber selbst erst kurz angeschaut habe, müsste ich jetzt gründlich recherchieren, was aber offen gesagt meinen Zeitrahmen sprengen würde. Die meisten Standardschriftarten werden ja zuverlässig erkannt.

  • Da haben sich unsere Beiträge wohl gerade überschnitten ^^.

    Gibt es die Möglichkeit mit Tesseract das Fenster eines Programmes anstelle eines Bildes auszulesen ?

    Genau das war der Hintergrund meiner Frage (siehe Beitrag #9) :

    Falls es eine Eingabemaske gibt, wäre es ggf. leichter, diese mittels des Windows-Info-Tool von AutoIt auszulesen.

    Kannst Du mal bitte einen Screenshot eines solchen Fensters posten.

    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."

  • Die Eingabemaske ist im Programm selber. Das was Gelb hinterlegt ist, ist ausgewählt und man kann mit Pfeil Hoch und Runter zu den anderen Daten springen.

    Dann nur noch Zahlen eingeben und mit Enter bestätigen.

    Ich muss aber auch ehrlich sagen das meine "Programmierkenntnisse" mit Tesseract extrem an ihre Grenzen kommen.

    Vor Autoit habe ich nur gelegentlich Homepages in HTML & PhP geschrieben.

    Da werde ich erstmal ein paar Tage brauchen um dein Programm zu verstehen.


    Gibt es den rein in Autoit nichts vergleichbares ?


    Lg

  • Nebenbei :

    Hier der Link aus der Hilfe zum angesprochenen AutoIt Window Info Tool

    Bei neueren Programmen funktioniert das zwar zunehmend nicht mehr, aber Deine Software ist ja älteren Datums.

    Gibt es die Möglichkeit mit Tesseract das Fenster eines Programmes anstelle eines Bildes auszulesen ?

    Das Auslesen der Daten aus einem 'normalen' Programmfenster (anstelle des Bildes) mittels Tesseract dürfte größere Chancen haben, da dort wahrscheinlich ein Standardfont verwendet wird.

    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."

  • Alle die diesen Thread verfolgen denken wahrscheinlich, wir wären blöd ^^ .

    Das Problem ist, dass ich die Software nicht kenne und daher nur im Nebel herumstochern kann.


    Zur Sicherheit : Die 'Grafik' ist die Eingabemaske, korrekt ?

    Es gibt also keine andere 'Standardeingabemaske', wie man sie aus Windows so kennt.

    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."

  • Zur Sicherheit : Die 'Grafik' ist die Eingabemaske, korrekt ?

    Es gibt also keine andere 'Standardeingabemaske', wie man sie aus Windows so kennt.

    Genau.

    Alle die diesen Thread verfolgen denken wahrscheinlich, wir wären blöd ^^ .

    Das Problem ist, dass ich die Software nicht kenne und daher nur im Nebel herumstochern kann.

    Was das Thema angeht bin ich es definitiv :D

  • Vielleicht übersehe ich etwas aber das AutoIt Window Info Tool scheint mir nur manuell die Informationen zu geben und diese auch nicht irgendwo zu hinterlegen?

    Ich bin etwas überrascht, dass das Infotool hier überhaupt läuft.

    Gehe mit dem Cursor des Tool mal auf ein Feld, und poste die Anzeige des Tools als Screenshot. Das Tool liefert normalerweise Infos, um das Feld aus AutoIt ansprechen zu können.

    Gibt es denn rein in Autoit nichts vergleichbares ?

    Das möchte ich mit an Sicherheit grenzender Wahrscheinlichkeit ausschließen.

    Lies Dir erneut den Link https://de.wikipedia.org/wiki/Tesseract_(Software) durch. Das Projekt läuft seit vielen Jahren, mit Unterstützung von Firmen wie Google usw.

    So etwas schreibt man nicht eben mal so in AutoIt ;) .

    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."