Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

Unterstützung eines automatisierten Kündigungsprozesses mit Kofax KTM

26.10.2016 | 4 Minuten Lesezeit

Die Eingangsdokumente (Brief, Fax oder Email) bei einem unserer Versicherungskunden werden mit Kofax Capture erfasst und durch Kofax Transformation Modules (KTM) klassifiziert und die gewünschten Geschäftsdaten werden dann ebenfalls mit KTM extrahiert.

Durch die frühzeitige Klassifizierung der Dokumente in KTM als Kündigung, kann die Versicherung zeitnah Aktionen starten, um den Kunden eventuell doch noch zu halten. Die dennoch verbleibenden durchzuführenden Kündigungsprozesse sollen dann möglichst automatisiert durchgeführt werden. Dazu musste mit KTM das im Schreiben angegebene Kündigungsdatum extrahiert werden, um damit die nachfolgenden Prozesse starten zu können.

Bei der Realisierung mit KTM Formatlokatoren und regulären Ausdrücken gab es Probleme mit der Datumsextraktion sobald Zeilenumbrüche innerhalb der zu suchenden Kündigungsformulierungen vorkamen. Im Folgenden wird erläutert wie wir diese Probleme mit KTM-Bordmitteln lösen konnten.

Bei Kündigungsschreiben existieren grundsätzlich zwei Arten, wie das Kündigungsdatum angegeben wird:

1. Explizite Angabe des Datums: … kündige ich zum 31.12.2016 meinen

2. Indirekt Datumsangabe: … kündige ich den Vertrag zum nächstmöglichen Termin

Beide Varianten kann man recht einfach mit KTM-Format-Lokatoren und regulären Ausdrücken verarbeiten.

1. Bei explizit angegebenem Datum kann man z.B. wie folgt vorgehen:

Der Lokator liefert dann, wie zu erwarten, das gewünschte Datum:

Werden allerdings die Worte aus den Evaluierungseinstellungen (zum, dem, usw.) vom eigentlichen Datum nicht durch Leerstellen, sondern durch einen Zeilenumbruch getrennt, versagt der Formatlokator:

Abhilfe schafft hier z.B. eine Kombination aus Formatlokatoren und einem Geometrieevaluator:

Ein Formatlokator sucht die Worte (zum, dem, usw.) am Zeilenende:

Das $-Zeichen sorgt dafür, dass nur die Worte an einem Zeilenende gefunden werden.

Ein weiterer Formatlokator sucht nur nach Datumsangaben, die zu Beginn einer Zeile stehen:

Das ^-Zeichen zu Beginn des regulären Ausdrucks sorgt dafür, dass nur Datumsangaben an einem Zeilenanfang gefunden werden.

Nun kann mit einem Geometrieevaluator nach allen Datumsangaben unterhalb des Wort-Formatlokators gesucht werden:

Anhand der entfernungsabhängigen Konfidenz kann man nun das Ergebnis des Geometrieevaluators akzeptieren.

Alternativ zum Geometrieevaluator könnte per Skript überprüft werden, ob das Resultat des Datums-Formatlokators eine Zeile unterhalb des Ergebnisses des Wortlokators liegt.

2. Bei den indirekten Datumsangaben bietet sich eine ähnliche Vorgehensweise an:

Liegt eine der indirekten Datumsangaben vor (zum nächstmöglichen Zeitpunkt, zum nächstmöglichen Termin, zum nächsten zulässigen Termin, usw.), war für die weitere Verarbeitung der Kündigung die Weitergabe eines Dummy-Datums gewünscht.
In diesen Fällen wird dann der 01.01.1970 weitergegeben.

Eine einfache Möglichkeit dies mit Formatlokatoren durchzuführen, wäre die folgende:

In der Praxis haben wir vom Fachbereich eine lange Liste mit möglichen Formulierungen bekommen. Der Umfang dieser Liste wird im weiteren Verlauf noch eine Rolle spielen.

Der Lokator liefert einen Treffer, sobald eine der Formulierungen im Dokument vorkommt:

Wird durch den Formatlokator eine der Formulierungen gefunden, muss das Datum per Skript nur noch auf den 01.01.1970 gesetzt werden.

Allerdings versagt auch hier der Formatlokator sobald die Worte einer der gesuchten Formulierungen durch einen Zeilenumbruch getrennt werden:

Aufgrund der Vielzahl der möglichen Wort-/Zeilenumbruchskombinationen ist hier keine einfache Lösung mit einem Geometrieevaluator möglich bzw. sinnvoll. Eine Lösungsmöglichkeit wäre die Suche nach den Formulierungen im von der OCR-Engine gelieferten Volltext des Dokuments.

Dabei wäre es natürlich vorteilhaft, wenn man im Skript die bereits im Formatlokator ‚DatumIndirekt‘ als RegEx definierten Formulierungen auslesen und benutzen könnte. Dadurch müssten die – in der Praxis sehr umfangreichen – Formulierungen nur in dem Formatlokator ‚DatumIndirekt‘ gepflegt werden.

Dazu muss das Skript zunächst einmal die im Formatlokator definierten Begriffe auslesen. Hierzu wird zunächst die zu KTM gehörende ‚Kofax Cascade Regular Expressions Locator‘-DLL in der Skript-Umgebung referenziert:

Im Skript können dann mit der folgenden Funktion die RegEx-Einträge (also die gewünschten Formulierungen) des Lokators ausgelesen und nach ihnen im OCR-Volltext gesucht werden:

1Function TermFound(ByVal pXDoc As CASCADELib.CscXDocument) As Boolean
2
3   'Returns True, if the terms from locator 'DatumIndirekt' are found within the OCR fulltext
4
5   Dim oLocator As CscRegExpLib.CscRegExpLocator
6   Dim i As Integer
7   Dim Terms() As String
8   Dim Fulltext As String
9
10   'Init Returncode with False
11   TermFound=False
12
13   'get Format Locator 'DatumIndirekt'
14   Set oLocator = Project.ClassByName("YourClass").Locators.ItemByName("DatumIndirekt").LocatorMethod
15
16   ReDim Terms(oLocator.RegularExpressions.Count-1)
17
18   'Put the RegEx-Expressions from Format Locator 'DatumIndirekt' into the array Terms()
19   For i=0 To oLocator.RegularExpressions.Count-1
20      Terms(i)= oLocator.RegularExpressions.ItemByIndex(i).RegularExpression
21   Next
22
23   'Now get the OCR fulltext from page 1
24   Fulltext=pXDoc.Pages.ItemByIndex(0).Text
25
26   'Remove empty spaces, CR and LF
27   Fulltext=Replace(Fulltext,Chr(9),"") 'Tab
28   Fulltext=Replace(Fulltext," ","") 'blank
29   Fulltext=Replace(Fulltext,Chr(13),"") 'CR
30   Fulltext=Replace(Fulltext,Chr(10),"") 'LF
31   '...
32
33   'Search for Terms() in Fulltext
34   For i=0 To oLocator.RegularExpressions.Count-1
35      If InStr(Fulltext,Terms(i))>0 Then
36         'Bingo! Return True
37         TermFound=True
38         Exit For
39      End If
40   Next
41
42End Function

Mit diesem Konstrukt muss man dann nur noch die Formulierungen im Lokator ‚DatumIndirekt‘ pflegen. Es werden dann alle Formulierungen sowohl mit als auch ohne ’störenden‘ Zeilenumbruch gefunden.

Will man die Formulierungen nicht direkt im Formatlokator pflegen, sondern eventuell in einer externen Textdatei, kann man eine ähnliche Technik verwenden, um die regulären Ausdrücke eines Formatlokators während der Laufzeit zu verändern. Siehe dazu:

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

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

Beitrag teilen

Gefällt mir

0

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.