Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

|
//

Kofax Transformation Modules (KTM) – Suche per Skript in Wörterbüchern

6.7.2017 | 2 Minuten Lesezeit

Neben Fuzzy-Datenbanken bieten Kofax Transformation Modules (KTM) auch sogenannte Wörterbücher zur Optimierung der Erkennung an. Diese Wörterbücher können in den regulären Ausdrücken eines Formatlokators genutzt werden, um zum Beispiel neben einem Datum der Form „01.12.2015“ auch solche der Form „01. Dezember 2015“ zu finden. Das Wörterbuch würde dann alle Monatsnamen enthalten (Januar, Februar, …).

In den KTM-Fuzzy-Datenbanken kann per Skriptsprache gesucht werden. Dazu gibt es auch Beispielprogramme von KOFAX (z.B. in der Skripting-Hilfe von KTM oder hier: „Best Practices“ ). Entsprechende Beispiele für die Suche in KTM-Wörterbüchern gibt es meines Wissens nach aber nicht. In einem Projekt zur Erkennung von deutschen KFZ-Kennzeichen musste ich die Suche in einem Wörterbuch allerdings per Skript durchführen. Hier möchte ich kurz die Gründe dafür erläutern und ein Beispielskript vorstellen.

Zur Erkennung der KFZ-Kennzeichen reicht normalerweise ein regulärer Ausdruck der Form:

[A-ZÄÖÜ]{1,3}\x20?[\.|\x20|-]\x20?[A-Z]{1,2}[\.|\x20|-]?[0-9]{1,4}

Allerdings liefert dieser auch manchmal „Nicht-KFZ“-Zeichenketten, da vorne ja nur ein bis drei Buchstaben gesucht werden. Schön wäre es, wenn man am Beginn des regulären Ausdrucks statt [A-ZÄÖÜ]{1,3} eine Liste der gültigen Städtekürzel für deutsche Nummernschilder angeben könnte. Damit würde der Kreis falsch erkannter Kennzeichen schon um einiges kleiner. Natürlich kommen einem da sofort die KTM-Wörterbücher in den Sinn. Im Internet finden sich schnell Listen mit diesen Städtekürzeln, und so ist eine enstprechende Wörterbuchdatei (KFZ-Staedte) schnell erstellt:

AIC
AK
AM
AN
ANA

AP
AS
ASL
ASZ
AUR
:
:

Der folgende Formatlokator:

liefert dann auch das richtige Ergebnis:

Beim Test eines weiteren Dokuments kam dann aber schnell Ernüchterung auf – Nichts erkannt:

Hier zeigt sich eine Schwäche bei der Einbindung von Wörterbüchern in reguläre Ausdrücke: es funktioniert nur, wenn der Wörterbuchstring durch ein Leerzeichen, Tab, … vom Rest des regulären Ausdrucks getrennt ist.

Dies ist beim ersten Beispiel der Fall: „COE – EW 247“. Das zweite Beispiel „COE.EW.247“ hat Punkte als Trenner zwischen den einzelnen Teilen des Kennzeichens, und die Einbindung des Wörterbuchs funktioniert nicht wie gewünscht.

Auf die optimierte Erkennung der Städtekürzel wollte ich aber nicht verzichten. Dazu benutze ich zunächst wieder den „originalen“ regulären Ausdruck:

[A-ZÄÖÜ]{1,3}\x20?[\.|\x20|-]\x20?[A-Z]{1,2}[\.|\x20|-]?[0-9]{1,4}

und habe dann das gefundene Städtekürzel per Skript gegen das Wörterbuch „KFZ-Staedte“ geprüft. Bei positiver Prüfung wird nun das KFZ-Kennzeichen übernommen, andernfalls verworfen.

Hier nun ein Beispielskript, das zeigt, wie in einem KTM-Wörterbuch gesucht werden kann:

1Function ExistiertStadtAusAMKZ(kennzeichen) As Boolean
2
3   'Es wird das folgende Format für das Kennzeichen erwartet: COE.EW.247
4
5   Dim DictResItems As CscDictionaryResItems
6   Dim Dict As CscDictionary
7   Dim strData As String
8   Dim strReplaceVal As String
9   Dim QueryText As String
10   Dim pos As Integer
11
12   ExistiertStadtAusAMKZ=False
13   pos=InStr(kennzeichen,".")
14
15   If pos>0 Then
16      QueryText=Left(kennzeichen,pos-1) 'Stadtkürzel
17      Set Dict = Project.Dictionaries.ItemByName("KFZ-Staedte")
18      Set DictResItems=Dict.Search(QueryText,CscEvalMatchQuery,5)
19      If DictResItems.Count>0 Then
20         'strData enthält das gefundene Kürzel
21         'strReplaceVal den optionalen Ersetzungswert aus dem Wörterbuch
22         Dict.GetRecordData(DictResItems(0).RecID,strData,strReplaceVal)
23         ExistiertStadtAusAMKZ=True 'da etwas gefunden wurde
24      Else
25         'nichts gefunden
26         ExistiertStadtAusAMKZ=False
27      End If
28   End If
29
30End Function
|

Beitrag teilen

Gefällt mir

1

//

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.