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) :/ .

    Spoiler anzeigen

    %

    V0006-33

    N00050 P 18

    N00052 P 2

    N00054 P 2

    N00056 P 0

    N00058 P 0

    N00060 P 1

    N00062 P 1

    N00064 P 0

    N00066 P 8

    N00068 P 8

    N00100 P 1700

    N00104 P 16503

    N00108 P 73785

    N00112 P 474

    N00116 P 1001

    N00120 P 0

    N00124 P 0

    N00132 P 630

    N00136 P 680

    N00140 P 12960

    N00144 P 89999

    N00148 P 14290

    N00152 P 3060

    N00156 P 44200

    N00160 P 48640

    N00164 P 1

    N00168 P 1

    N00172 P 1

    N00176 P 0

    N00184 P 1

    N00188 P 1

    N00192 P 35000

    N00196 P 51249

    N00200 P 0

    N00204 P 3060

    N00208 P 44200

    N00212 P 48640

    N00216 P 1

    N00220 P 1

    N00224 P 1

    N00228 P 0

    N00236 P 1

    N00240 P 1

    N00244 P 35000

    N00248 P 51249

    N00252 P 0

    N00256 P 509

    N00260 P 84140

    N00264 P 48825

    N00268 P 1

    N00272 P 1

    N00276 P 1

    N00280 P 0

    N00288 P 1

    N00292 P 1

    N00296 P 0

    N00300 P 0

    N00304 P 0

    N00308 P 1200

    N00312 P 77120

    N00316 P 49580

    N00320 P 1

    N00324 P 1

    N00328 P 1

    N00332 P 0

    N00340 P 1

    N00344 P 1

    N00348 P 0

    N00352 P 0

    N00356 P 0

    N00360 P 1970

    N00364 P 57710

    N00368 P 47900

    N00372 P 1

    N00376 P 1

    N00380 P 1

    N00384 P 0

    N00392 P 1

    N00396 P 1

    N00400 P 25000

    N00404 P 25000

    N00408 P 9739

    N00412 P 1970

    N00416 P 57710

    N00420 P 47900

    N00424 P 1

    N00428 P 1

    N00432 P 1

    N00436 P 0

    N00444 P 1

    N00448 P 1

    N00452 P 25000

    N00456 P 25000

    N00460 P 9739

    N00464 P 509

    N00468 P 84140

    N00472 P 48825

    N00476 P 1

    N00480 P 1

    N00484 P 1

    N00488 P 0

    N00496 P 1

    N00500 P 1

    N00504 P 0

    N00508 P 20000

    N00512 P 0

    N00516 P 4010

    N00520 P 66300

    N00524 P 46385

    N00528 P 400

    N00532 P 2171

    N00536 P 1

    N00540 P 0

    N00548 P 1

    N00552 P 1

    N00556 P 28000

    N00560 P 77000

    N00564 P 2000

    N00568 P 2060

    N00572 P 77980

    N00576 P 49580

    N00580 P 1200

    N00584 P 2000

    N00588 P 1

    N00592 P 0

    N00600 P 1

    N00604 P 1

    N00608 P 70000

    N00612 P 77000

    N00616 P 4000

    N01150 P 0

    N01154 P 0

    N01158 P 0

    N01162 P 0

    N01166 P 0

    N01170 P 0

    N01174 P 0

    N01178 P 0

    N01182 P 0

    N01186 P 0

    N01190 P 0

    N01194 P 0

    N01198 P 0

    N01202 P 0

    N01206 P 0

    N01210 P 0

    N01214 P 0

    N01218 P 0

    N01222 P 0

    N01226 P 0

    N01230 P 0

    N01234 P 0

    N01238 P 0

    N01242 P 0

    N01246 P 0

    N01250 P 0

    N01254 P 0

    N01258 P 0

    N01262 P 0

    N01266 P 0

    N01412 P 700

    N01416 P 100

    N01420 P 90000

    N01440 P -500

    N01444 P 100

    N01448 P 48000

    N01468 P -500

    N01472 P 0

    N01476 P 50000

    N01496 P 0

    N01500 P 0

    N01504 P 90000

    N01524 P 0

    N01528 P -200

    N01532 P 90000

    N01552 P -650

    N01556 P 20

    N01560 P 50000

    N01580 P -650

    N01584 P 120

    N01588 P 48000

    N01608 P -2500

    N01612 P -240

    N01616 P 6000

    N01636 P 300

    N01640 P -230

    N01644 P 12000

    N01664 P 1150

    N01668 P 210

    N01672 P 90000

    N01960 P 0

    N01964 P 0

    N01968 P 0

    N01972 P 0

    %

    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 (3. September 2021 um 20:48) 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 :

    Spoiler anzeigen

    Programm (Scheiben)

    Scheibe T10

    Nuten 1

    E =1.961

    Z=16.758

    R =74.255

    A =0.457

    B=0.721

    C =0.107

    R1=0.475

    R2=0.304

    a =60.436

    c=84.192

    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 :

    Spoiler anzeigen

    Fonts for Tesseract training

    Tesseract documentation

    View on GitHub

    Fonts for Tesseract training

    Tesseract training can use images made from text which was rendered with a list of fonts. Those

    fonts must be available on the host where the training process is running.

    The fonts that were used to train 3.05’s OCR engine and the legacy OCR engine in 4.0.0 are

    defined in training/language-specific.sh.

    Many more fonts are listed in langdata/font_properties. If you add fonts to the first file (or specify

    them explicitiy via command line parameter), you must add them to the second as well.

    The fonts that were used to train the LSTM OCR engine in 4.0.0 are defined in <lang>/okfonts.txt

    files in the langdata_Istm repo.

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