Kofax Transformation Modules (KTM): ‚Freiformerkennung‘ für handschriftliche Nummern

1 Kommentar

Freiformerkennung versucht im Gegensatz zur formularbasierten Erkennung, bestimmte Werte wie etwa eine Versicherungsnummer, irgendwo auf einem Dokument zu finden. Hilfreich dabei ist immer eine bestimmte Struktur des gesuchten Wertes, der dann meist über reguläre Ausdrücke gesucht wird. Darüber hinaus werden zusätzlich auch noch sogenannte Schlagwörter zur Suche genutzt, die oftmals in der ‚Nähe‘ der gesuchten Werte stehen (z.B. ‚Versicherungsnummer‘, ‚VersNr.‘, … vor einer Versicherungsnummer).

Diese Technik bieten die meisten der am Markt befindlichen Klassifikations-/Extraktionsprodukte an. Bei Maschinenschriften liefern auch alle mehr oder weniger ähnliche Ergebnisse.

Beim von uns eingesetzten Produkt Kofax Transformation Modules (KTM) sind die passenden Tools die sogenannten ‚Format Lokatoren‘. Siehe dazu auch die bisher erschienen Blogartikel über KTM (1).

Im Folgenden soll gezeigt werden, wie man auch handschriftliche Nummern, die eine bestimmte Struktur aufweisen, irgendwo auf einem Dokument finden kann.

In unserem Beispiel suchen wir auf den Dokumenten handschriftlich notierte Versicherungsnummern, die folgenden Aufbau haben: 1x-xxxxxx-xx. Dabei steht das x für eine Ziffer zwischen 0 und 9, Beispielnummer: 14-386723-89.

Beispieldokument:

PB1

Im KTM-Projekt muss das Dokument zunächst auf die richtige Dokumentenklasse klassifiziert werden (im Beispiel: InsuranceDocs). Dies kann mit irgendeiner der verfügbaren Klassifikationsmethoden erfolgen (siehe dazu: Klassifizierung mit KTM).

Im KTM Projekt hat die Klasse ‚InsuranceDocs‘ noch das Feld ‚InsuranceNumber‘ und den Lokator ‚Numbers‘ (erweiterter Zonenlokator):

PB1

Hier zunächst die Grundidee für die ‚Freiformerkennung‘ der handschriftlichen Nummern:

  1. Ein erweiterter Zonenlokator liest den Text der gesamten Seite, indem die Zone des Lokators entsprechend groß definiert wird.
  2. Meiner Erfahrung nach liest die RecoStar-Engine Zahlen besser als die FineReader-Engine. Daher wird im erweiterten Zonenlokator RecoStar mit einem numerischen Profil [0-9-] eingesetzt.
  3. Das Ergebnis des erweiterten Zonenlokators ist eine Zeichenkette bestehend aus Ziffern und -.
  4. Im Skript der Dokumentenklasse ‚InsuranceDocs‘ wird innerhalb der Zeichenkette mit regulären Ausdrücken nach einer Versicherungsnummer gesucht.
  5. Optimalerweise lässt sich die gefundene Nummer noch gegen eine Bestandsdatenbank prüfen und wird dann dem Ergebnisfeld ‚InsuranceNumber‘ zugewiesen.

 

Aufbau des erweiterten Zonenlokators

Ziehen Sie die Zone über den Bereich der Beispielseite, in dem die handschriftlichen Nummern vorkommen können:

AZL01

Weisen Sie der Zone eine RecoStar-Zonen-Engine mit folgenden Einstellungen zu:

azl03

Entfernen Sie den Haken bei ‚Registration failure makes zone invalid‘, da bei unstrukturierten Dokumenten die Registrierung fehlschlagen wird, und wir das Ergebnis auf jeden Fall erhalten wollen:

azl02

Der Test des erweiterten Zonenlokators liefert dann folgendes Ergebnis:

azl04

Das sieht zunächst chaotisch aus, aber in der vierten Zeile von unten, sieht man schon die gewünschte Versicherungsnummer 14-386723-89. Diese muss nun noch per Skripting aus der Ergebniszeichenkette extrahiert werden.

 

Extraktion der Versicherungsnummer per Skript

Wir nutzen beispielhaft das ‚Document_AfterProcess‘-Event im Skript der Dokumentenklasse ‚InsuranceDocs‘, um die Versicherungsnummer per regulärem Ausdruck aus der Ergebniszeichenkette des erweiterten Zonenlokators zu extrahieren.

Dazu muss zunächst die ‚Microsoft VBScript Regular Expressions 5.5‘-Bibliothek als Referenz eingebunden werden:

azl05

Diese Microsoft Bibliothek bietet die Möglichkeit in String-Variablen mit regulären Ausdrücken zu suchen (Microsoft VBScript Regular Expressions 5.5 Erläuterungen).

Das eigentliche KTM-Skript sieht dann beispielsweise folgendermaßen aus:

Option Explicit

' Class script: InsuranceDocs

Private Sub Document_AfterProcess(ByVal pXDoc As CASCADELib.CscXDocument)
   Dim String_RecoStar As String
   Dim myRegExp As RegExp
   Dim myMatches As MatchCollection
   Dim myMatch As Match
   Dim InsNbr_Recostar As String

   Set myRegExp = New RegExp

   'get the first alternative from the advanced zone locator
   String_RecoStar=Trim(pXDoc.Locators.ItemByName("Numbers").Alternatives(0).SubFields.ItemByName("UF_Zone0").Text)

   myRegExp.IgnoreCase = True
   myRegExp.Global = True
   'define the regular expression for the insurance numbers
   myRegExp.Pattern = "1(1|2|3|4|5|6|7|8|9)\s?\-\s?\d{6}\s?\-\s?\d{2}"

   Set myMatches = myRegExp.Execute(String_RecoStar)
   If myMatches.Count>0 Then 'if something was found:
      'we just take the first result in this example...
      InsNbr_Recostar=Replace(myMatches.Item(0)," ","") 'get rid of spaces
      If DB_Check(InsNbr_Recostar)=True Then 'if possible validate the number against a database
         'put the value into the InsuranceNumber field
         pXDoc.Fields.ItemByName("InsuranceNumber").Text=InsNbr_Recostar
         pXDoc.Fields.ItemByName("InsuranceNumber").Valid=True
      End If
   End If
End Sub

Function DB_Check(Number As String) As Boolean
   DB_Check=True 'just return True in this example
   'Implement the database validation of the extracted insurance number
End Function

Die Verarbeitung des Beispieldokuments im KTM Project Builder sollte damit zu folgendem Ergebnis führen:

PB2

 

(1) Bisher erschienene Artikel über KTM:

KTM im Versicherungseinsatz: Heller, grauer und dunkler Posteingang

Dokumentenklassifizierung mit Kofax Transformation Modules (KTM)

Kofax Transformation Modules – Formatlokatoren und dynamische reguläre Ausdrücke – Teil 2

Kofax Transformation Modules – Formatlokatoren und dynamische reguläre Ausdrücke

Jürgen Voss

Jürgen Voss unterstützt unsere Kunden bei der Erfassung von Eingangsdokumenten, deren Klassifikation samt Datenextraktion und anschließendem Starten der Geschäftsprozesse.

Die erfassten Dokumente werden dabei in Dokumentenmanagement-systemen wie CenterDevice oder Archivsystemen sicher abgelegt. Dazu zählt auch die E-Mail-Archivierung und die Ablage über die SAP-Archivierungsschnittstelle ArchiveLink.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentare

  • Jürgen Voss

    14. August 2015 von Jürgen Voss

    Hinweis für KTM Versionen >= 5.5.0

    Mit diesen KTM Versionen steht das ‚gemischte Schrift‘-Erkennungsprofil zur Verfügung. Damit ist eine einfachere Lösung möglich.

    Nimmt man dieses Profil als OCR-Seitenprofil enthält das OCR-Ergebnis sowohl die maschinen- als auch die handgeschriebenen Daten. Mit einem Standard-Formatlokator und dessen regulären Ausdrücken können die gewünschten Versicherungsnummern extrahiert werden.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.