Einzelnen Beitrag anzeigen

hanvas

Registriert seit: 28. Okt 2010
167 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: OCR Delphi und Belegerfassung

  Alt 22. Feb 2018, 19:42
Servus,

wenn ich mir das Thema hier anschaue:
http://www.delphipraxis.net/79040-oc...-delphi-3.html

stellt sich mir die Frage (auch wenn mir klar ist, dass es auch Produkte mit einer genaueren Erkennungsleistung gibt): Wie gehen die Programme vor, die Belege nach einem Scan automatisch erfassen und ggf. buchen oder daraus eine Überweisung zaubern?

Grüße
Dazu muss man zunächst einmal zwischen strukturierten, semi strukturierten und nicht strukturierten Daten unterscheiden.

Formulare sind strukturiert. Der Sinn einer Information ergibt sich aus der Position auf dem Formular. Bei einem Überweisungsbeleg ist klar wo der Betrag steht und was die Information bedeutet, ebenso haben Kontoinformationen und Personen ihren festen Platz.

Das ist der einfachste Fall. Aber einfach ist relativ. Gescannte Papiere werden ja nicht immer gerade eingezogen und wenn diese gerade sind, dann möglicherweise ein wenig mehr rechts oder ein wenig mehr links als normal, möglicherweise hat der Lieferant aus dem Lieferschein ja auch ein verknülltes Brotzeitpapier gemacht oder hat den Lieferschein im Regen ausgefüllt.

Die grundsätzliche Vorgehensweise ist immer gleich. Zunächst versucht man zu erkennen um welches Formular (das als Referenz in einer Art Datenbank gehalten wird) es sich handelt. Dann wird das gescannte Bild gerade ausgerichtete und möglicherweise entzerrt. Wenn das geschehen ist wird das Bild mit dem Referenzbild in übereinstimmung gebracht (Bildregistrierung)

Linien und Kästchen welche als Felder auf dem Formular dienen müssen natürlich entfernt werden, da ansonsten über den Rand geschriebene Informationen nicht ordentlich gelesen werden können.

Daneben gibt es noch eine Vielzahl weiterer Operationen und das Thema ist wirklich komplex.

Zitat:
Neben einer möglichst fehlerfreien OCR muss das Programm dann ja die Informationen durch gehen und schauen wo der Rechnungsbetrag steht. Nur wie bekommen das die Programme raus? Bei den wenigsten steht vor dem Rechnungsbetrag noch ein Text.
Das sind meist semistrukturierte Daten. Wie bei einem Formular sind gleiche Informationen, wie Absender, Datum etc. entweder an festen Positionen zu finden oder der Kontext ergibt sich aus Beschriftungen. Wenn man beispielsweise immer Rechnungen von der gleichen Person / Firma bekommt dann ist der Aufbau des Dokumentes nach dem ersten Dokument klar.

Zur Verarbeitung unstrukturierter Dokumente braucht man ein wenig Hintergrundwissen. Beispiel gefällig :

In Deutschland geschriebene Briefe haben immer ungefähr das gleiche Format, links steht der Empfänger, in einer Zeile über dem Empfänger meist der Absender, das Datum meist rechts.

Die Art der nichttextuellen Information kann man häufig auch aus dem Format ableiten. Ein Datum in Deutschland hat meist 10 Buchstaben, zwei für den Tag, zwei für den Monat, vier für das Jahr und zwei Trennzeichen. Alle so aufgebauten Daten sind vermutlich Datumsangaben.

Finden sich Währungszeichen oder Währungsbezeichnungen neben oder über den Angaben handelt es sich vermutlich um Beträge, Anschriften zu erkennen ist seit den 60er Jahren automatisiert.

Daten die in Tabellenform angeordnet sind, mit oder ohne Trennlinien, lasse sich relativ leicht daran erkennen das es Blöcke gibt bei denen der Wortanfang immer an der gleichen X Position beginnt (linksbündig) oder das Wortende an der gleichen X Position endet (rechtsbündig)

Weiss man das tabellierte Daten vorliegen und weiß man das es sich um eine Rechnung / Gutschrift etc. handelt, dann ist der Schluss das es sich um die Positionen der Rechnung handelt nicht mehr weit.

Natürlich gibt es noch viel mehr Regeln, aber ich glaube die grundsätzliche Vorgehensweise wird klar. Wichtig ist das man weiss um welche Art von Dokument es sich handelt, damit man weis welche Regelsätze verwendet werden. Ein Dokument zu klassifzieren ist aber nicht sehr schwer (z.B. Bag of Words)

Wenn man den ungefähren Aufbau ermittelt hat, ermittelt man alle nicht textuellen Daten und versucht diese zuzuordnen, entweder man kennt die Bedeutung aus der Phase zuvor oder die Bedeutung oder ein beschreibendes Wort steht in der Nähe.


cu Ha-Jö
  Mit Zitat antworten Zitat