! DoArchiveOCR.obas (c) Andre Koppel Software 2014
! Das Programm kann im Archiv oder vom Hauptsuchdialog heraus aufgerufen
! werden. Es durchsucht das gesamte Verfahrensarchiv nach PDF-Dateien
! und versucht eine OCR-Verarbeitung durchzuführen. Dafür wird jede
! Datei aus dem Archiv geladen und und die integrierte OCR-Verarbeitung
! aufgerunfen. Wenn die OCR-Verarbeitung erfolgreich war, so wird eine
! neue Version der vorhandenen Datei abgelegt, die jedoch zusätzlich
! einen durchsuchbaren Text enthält.
! Das Programm gibt für jede Aktion eine Erfolgs oder Fehlermeldung aus.
! Im Erfolgsfall wird die Anzahl der konvertierten Wörter ausgegeben.

! Wir brauchen viel RAM, daher fordern wir ein MB an. Wir gehen hier mal
! davon aus, dass kein Dokument mehr als 500000 Zeichen enthält. Wenn das
! nicht reichen sollte, dann kann man die Werte einfach erhöhen
DIMOPTION ON
DIMOPTIONBASE 1
DEF POOL 1000000
INIT VARSPACE

DIM a$[50000]; wordlist$[500000]
! Die Größe des gesamten Archivs können wir mit folgender Zeile abfragen
! Kommentare dazu entsprechend entfernen
! a$=LIST SYSTEM$("archivesize")
! DISP a$ "\n"

! Wenn wir wissen wollen, was aktuell an Eingangspost vorhanden ist,
! erzeugen wir dafür eine Liste. Wir verwenden dafür das Systemkommando
! LIST SYSTEM$ mit dem Parameter "archivelist". Mit ":p" geben wir an,
! das wir nur die Einträge des aktuellen Verfahrens sehen wollen. ":e"
! gibt an, dass wir nur am Posteingang intressiert sind.
a$=LIST SYSTEM$("archivelist:p:e")
l=LIST LEN(a$)
DISP "Einträge: " l "\n"
DISP a$ "\n"
! Wir wollen wissen, wie lange das alles dauert
SETSW 0
RUNSW

! Wir verarbeiten jetzt die Liste mit den Datensatznummern der Archiveinträge
FOR i=1 TO l
  asnr=IVAL(LIST GET$(a$;i))
  res=ARCHIVE OCR(asnr;0)
  DISP "Ergebnis OCR für Archiv-Eintrag: " asnr ": " res
  SWITCH res
    CASE -1  ad$="Eintrag nicht gefunden"
             BREAK
    CASE -2  ad$="keine PDF-Datei"
             BREAK
    CASE -3  ad$="keine Bilddaten oder bereits OCR-Datei"
             BREAK
    CASE -4  ad$="Textinformationen nicht extrahierbar"
             BREAK
    CASE -5  ad$="kann neue Datei nicht im Archiv speichern"
             BREAK
    CASE -10 ad$="Datei kann nicht verarbeitet werden"
             BREAK
    DEFAULT  IF res<1 THEN
               ad$="unbekannter Fehler"
             ELSE
               wordlist$=LIST WORDLIST$(TEXT FROM PDF$(res);0)
               words=LIST LEN(wordlist$)
               ad$="Anzahl Wörter: "&VAL$(words)
             END IF
             BREAK
    END SWITCH
  DISP ", " ad$ "\n"
NEXT
t=SWTIME
DISP "Dauer der Verarbeitunge: " t "[sek]" "\n"

Das ist interessant

Fester Bestandteil von INVEP ist ein leistungsstarkes OCR-System, mit dem eingescannte PDF-Dateien in durchsuchbare PDF/A-Dokumente verwandelt werden können. Die optische Zeichenerkenung arbeitet mit einem KI-System basierend auf einem neuronalem Netz. Einerseits besteht in INVEP die Möglichkeit, die OCR-Verarbeitung für jede Datei manuell anzufordern, andererseits kann dies natürlich auch automatisiert werden.
Dieses OBAS-Script durchsucht das Archiv zum aktuellen Verfahren und führt für jede gefundene PDF-Datei im Posteingang eine OCR-Verarbeitung durch. Wenn diese Verarbeitung erfolgreich war, so wird das neu erzeugte PDF-Dokument als neue Version zum alten Dokument gespeichert. Das alte Dokument bleibt jedoch immer erhalten.

 

 

Beispiel in INVEP laden

Sie können dieses Beispielprogramm in den INVEP-OBAS-Interpreter laden, indem Sie im Interpreter über den Button "Neu/laden" die Option OBAS-Web auswählen. Geben Sie als Nummer für das Beispiel die 13 ein.



Schatten