Feuerwehr - Alarmfax -> Prüfung ob Datei da ist, Verarbeitung

  • Hallo!
    Für unsere Feuerwehr will ich ein Alarmfax auslesen. Ich will per OCR an bestimmten Positionen den Text auslesen und jeweils die einzelnen Texte in jeweils eine Datei schreiben. Diese werden per PHP-Script dann
    ausgelesen und an den Alarmumsetzer übergeben. Das mit der OCR und in eine Datei schreiben ist nicht das Problem. Aber:

    Problem 1: Ich muss in ein Verzeichnis gucken ob ein Alarmfax drin liegt. (*.tif, fortlaufender Dateiname)

    Problem 2: Wenn das so ist, dann muss ich an einer bestimmten Position eine OCR machen, ob da auch wirklich Alarmfax" drinsteht, da es auch ein Abschlussbericht sein könnte.

    Ich könnte das hier ja genauso machen und das gesannte in eine Datei legen, diese wieder auslesen und dann
    hätte ich ja eine Variable. Aber dann?

    Ich brauche also Ideen und Hilfe :)
    Viele Grüße

    Slider

    • Offizieller Beitrag

    Du benötigst:
    - Endlosschleife in der dein Stammordner auf neue Dateien geprüft wird, hier das Prüfintervall festlegen mit Sleep in der Schleife
    - Variable, die den Namen der letzten aktuellen Datei speichert (hatten wir vor kurzem gerade das Thema: Neueste Datei in einem Ordner suchen, schau mal mit der SuFu)
    - gegen diese Variable prüfst du bei jedem Schleifendurchlauf, ob die jetzt neueste Datei einen anderen Namen hat als in der Variable steht
    - wenn ja, ist ein neues Fax da, das du deiner Verarbeitung zuführen kannst
    (Ich würde sicherheitshalber dann explizit alle Dateinamen verwalten und prüfen, es könnten ja auch mehrere Faxe eingegangen sein. Kannst du gut mit _FileListToArray erledigen. Wenn nur die Faxe in dem Ordner landen, hast du schon nur durch die Anzahl der Dateien den Hinweis ob etwas Neues hinzugekommen ist.)

  • So ganz habe ich Dich nicht verstanden. Programmiert habe ich mal auf dem C64 in Basic und später in Pascal, dass ist über 15 Jahre her :)

    Brauche also echt Eure Hilfe. Dieses habe ich nun gefunden:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=youngest.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    $search=FileFindFirstFile("*")
    While 1
    $lastfile=FileFindNextFile($search)
    If $lastfile="" Then ExitLoop
    If FileGetAttrib($lastfile)<>"D" Then ; Nur Dateien checken, keine Verzeichnisse
    If IsDeclared("joungest") Then
    If FileGetTime($lastfile,Default,1)<$joungest Then $joungest=$lastfile
    Else
    $joungest=$lastfile
    EndIf
    EndIf
    WEnd
    MsgBox(0,"","Jüngste: "&$joungest)
    Run ($joungest)

    [/autoit]


    MSGbox und Run einfach löschen....

    Dannn so weitermachen? Siehe hier:

    Spoiler anzeigen
    [autoit]

    Run("D:\Programme\FreeOCR25\FreeOCR.exe")
    MouseMove(25,1030)
    Sleep(5000)
    ; Abfrage Alarmfax

    [/autoit] [autoit][/autoit] [autoit]

    ; Start Sonstige Faxe

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Start Alarmfax
    MouseClick("left",1070,150,1)
    MouseMove(25,1030)
    Sleep(1000)
    MouseClick("left",110,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    MouseClick("left",650,270,1)
    MouseMove(25,1030)
    Sleep(1000)
    MouseClick("left",1150,610,1)
    MouseMove(25,1030)
    Sleep(1000)

    [/autoit] [autoit][/autoit] [autoit]

    ; Clear Window
    MouseClick("left",790,145,1)
    MouseMove(25,1030)
    Sleep(1000)

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffaort.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffaort")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffastrasse.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffastrasse")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffakreuzung.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffakreuzung")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffaobjekt.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffaobjekt")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffaobjektnr.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffaobjektnr")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffaeinsatzart.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffaeinsatzart")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffastichwort.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffastichwort")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffameldebild.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffameldebild")

    [/autoit] [autoit][/autoit] [autoit]

    ; *ffabemerkung.txt*
    ; Kasten
    MouseMove(170,500)
    MouseDown("left")
    MouseMove(600,537)
    MouseUp("left")
    MouseMove(25,1030)
    Sleep(1000)
    ; Scannvorgang
    MouseClick("left",230,90,1)
    MouseMove(25,1030)
    Sleep(1000)
    ; Speichern
    Send("ffabemerkung")

    [/autoit] [autoit][/autoit] [autoit]

    ; Ende des Programms
    MouseMove(25,1030)
    Sleep(10000)
    MouseClick("left",10,10,1)
    send ("!+{F4}")
    MouseMove(25,1030)

    [/autoit]

    1. Bei "Abfrage Alarmfax" wollte ich einen Bereich einscannen und in eine Datei schreiben. Wie hole ich aus der Datei den Text in eine Variable und verarbeite
    das mit einer If-Abfrage weiter?

    2. Wie komme ich vom Ende wieder ganz nach oben?

  • Hi,
    also ich verstehe jetzt nicht so ganz, wie das funktionieren soll. Was willst du einscannen. Meinst du mit einscannen OCR oder mit dem Scanner?
    Dann wo liegen die Dateien. Wie kommen die in den Ordner?
    Vergiss am besten alles was mit MouseClick etc. zu tun hat :P.
    FreeOcr benutzt Google Tesseract, dass wie sich rausgestellt hat ideal ansprechbar ist (finde ich jedenfalls). Dann benutz lieber direkt das CommandLine-Tool, das geht 10 mal einfacher.
    Sind die Dateien von Hand geschrieben?
    Könntest du uns eine Solche Datei mal zeigen?
    Und vielleicht mal ganz kurz erklären, wie das ganze generell funktionieren soll nachher, weil so ganz blicke ich da nicht durch ...

    anno2008

  • Es kommt von der Leitstelle ein Fax. Dies lasse ich dann vom Windows-Fax-Dienst empfangen und wird zur *.tif ind einem Ordner. Dieses Fax enthält verschiedene Worte/Texte (z.B. Alarmstichwort, Einsatzort, Strasse, Bemerkungen etc...)

    Diese Worte bzw. Texte muss ich in verschiedene Datein speichern. Aus den Datein werden sie dann per *.php weiterverarbeitet -> Das ist aber nicht mehr mein Job, macht ein Kamerad.

    Das mit Tesseract gucke ich mir nochmal an, wenn das hier jetzt erstmal läuft. Danke für den Tip :)

    Nochmal zur Funktionsweise:
    1. Ordner wird überprüft ob neues Fax gekommen ist
    2. Wenn nein, dann Punkt 1.
    3. Wenn ja, dann Punkt 4.
    4. Dann prüfen ob an einer bestimmten Stelle "Alarmfax" steht
    5. Wenn "nein", gehe wieder zu Punkt 1.
    6.Wenn ja, dann scanne gewisse Bereiche und schreibe das gescannte in mehrer Datein
    7. Wenn alles gescannt wurde gehe wieder zu Punkt 1.

  • würde dir gerne helfen ..

    aber willst du wirklich auf einer "alarmstelle" die "führung" einem AUTOIT-TOOL in die hand geben ?!

    bist du dir da sicher ?! hängen da nicht menschen laben drann ?!

    ... müsste ja dann schon doppelt und dreifach gesichert werden ..

    so tool überwacht tool .. alarmmeldung, wenn ..... bla bla ..

  • Nein, es geht um Beschleunigung:
    Die ausgelesenen Daten sollen dann auf einem 42" TFT in der Fahrzeughalle ausgegeben werden, damit die Kameraden nicht extra in den Funkraum rennen müssen.

    Und:
    Darum beim Anziehen zu wissen was los ist. Das bekommt man teilweise eben nicht mit, gerade nachts.

    Ich habe eben den Job, nur einigen gescannten Inhalt in den Datein anzugeben, den Rest macht ein Kamerad mit PHP.

  • Trotz aller dem,

    stell dir vor, AutoIt hat einen Error.
    Und gibt einen Alarm aus, obwohl keiner existiert.
    Das ist doch dann sehr irreführend!

  • Ja, generell ist es ja nicht mal so schwer.
    Aber es nervt ein bisschen dir die Würmer aus der Nase zu ziehen...

    Ist nur 1 Tif-Datei im Verzeichnis?
    Wenn nicht, soll die neuste genommen werden?
    Sollen alle ausgelesen werden?
    Wie stellst du dir das vor?
    Sind die Dateien von Hand geschrieben?
    Könntest du uns eine Solche Datei mal zeigen?
    Wie funktioniert das mit dem Windows-Fax-Dienst. Automatisch, oder von Hand? Landet die Datei dann direkt im Ordner?

    Gehe mal auf alle Fragen ein, dann werde ich mal sehn, was sich machen lässt...

    Das ist ja schon mal ein guter Anfang :thumbup: , aber du musst konkreter werden. Und wir sind auch nicht dafür da deine Scripte zu schreiben. Wir können dir helfen.

    anno2008