Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

Orientierungsprobleme bei der Dokumentenerkennung (Kofax Transformation Modules)

7.7.2019 | 3 Minuten Lesezeit

Bei der intelligenten Dokumentenklassifizierung und Datenextraktion von Eingangspost in Unternehmen müssen die Eingangskanäle Papier, Email und Fax berücksichtigt werden. Normalerweise ist die Orientierung der digitalisierten Dokumente (0°, 90°, 180° oder 270° gedreht) dabei egal. Im Rahmen der OCR-Erkennung erkennt das System die Drehung des Dokuments und richtet es wieder ‚lesbar‘ aus.

Manchmal versagt dieser automatische Ausrichtungsmechanismus, da insbesondere Faxe meist die sogenannte Fax-Kopfzeile besitzen, die häufig 180° gedreht zum Faxtext steht. Dies passiert z.B., wenn die zu faxende Seite verkehrt herum in das Faxgerät gelegt wird. Aber auch Papierdokumente haben manchmal um 90° gedrehte Anmerkungen/Nummern links oder rechts vom eigentlichen Text stehen. Dieser Blog Post erklärt, wie das Problem dank eines KTM-Skripts lösbar ist.

Insbesondere bei Faxen wird dann von der OCR die um 180° gedrehte Fax-Kopfzeile zuerst gelesen und die eigentlich falsche Orientierung des Dokuments wird nicht korrigiert:

Unsere Kunden setzen häufig die Lösung „Kofax Transformation Modules“ (KTM) zur automatisierten Verarbeitung ihrer Eingangspost ein. Die oben beschriebene Problematik der manchmal nicht durchgeführten Rotationskorrektur tritt auch bei diesem Produkt auf. Zur Lösung gibt es von Kofax einen Hinweis (Kofax-Knowledgebase-Artikel 19794).

Über ein Stück KTM-Skript werden rechteckige Bereiche an den Seitenrändern gelöscht, so dass die OCR den dort gedruckten Text nicht mehr findet. Diese Bereichslöschung findet nur an dem im Speicher geladenen Dokument statt. Das Original bleibt unverändert. Die Breite dieser Bereiche (im Beispiel unten: 100) muss dann an das Beleggut angepaßt werden:

1Private Sub Document_BeforeClassifyXDoc(ByVal pXDoc As CASCADELib.CscXDocument, ByRef bSkip As Boolean)
2Dim oImage As CscImage
3Dim lMargin As Long
4
5lMargin = 100
6
7'Get current image for page 1
8Set oImage = pXDoc.CDoc.Pages(0).GetImage()
9
10'Erase a margin around the edge of the image
11oImage.EraseRect 0, 0, lMargin, oImage.Height
12oImage.EraseRect oImage.Width-lMargin, 0, lMargin, oImage.Height
13oImage.EraseRect 0, 0, oImage.Width, lMargin
14oImage.EraseRect 0, oImage.Height-lMargin, oImage.Width, lMargin
15
16'Clean up memory
17Set oImage = Nothing
18
19End Sub

Zum Austesten der Bereichsgröße habe ich mir das im Speicher geänderte Dokument als TIF-Datei in das tempöräre Verzeichnis geschrieben. Dort konnte ich mir dann die Auswirkung der Löschung per Viewer ansehen (siehe Skript unten).

oImage.EraseRect löscht den Bereich, indem es ihn ‚weiß‘ macht. Dadurch ist der gelöschte Bereich auf einem Dokument mit in der Regel weißem Hintergrund oft schlecht zu identifizieren. Stattdessen kann man auch oImage.Redact einsetzen, bei dem die Bereiche geschwärzt werden. So kann man recht einfach die Bereichsgröße austesten:

1Private Sub Document_BeforeClassifyXDoc(ByVal pXDoc As CASCADELib.CscXDocument, ByRef bSkip As Boolean)
2Dim oImage As CscImage
3Dim lMargin As Long
4
5lMargin = 100
6
7'Get current image for page 1
8Set oImage = pXDoc.CDoc.Pages(0).GetImage()
9
10'Erase a margin around the edge of the image
11oImage.Redact 0, 0, lMargin, oImage.Height
12oImage.Redact oImage.Width-lMargin, 0, lMargin, oImage.Height
13oImage.Redact 0, 0, oImage.Width, lMargin
14oImage.Redact 0, oImage.Height-lMargin, oImage.Width, lMargin
15
16'Save image to temp
17oImage.Save("C:\temp\Redact.tif",CscImgFileFormatTIFFFaxG4)
18
19'Clean up memory
20Set oImage = Nothing
21End Sub

Das Originaldokument:

Das veränderte interne Dokument:

Dieses dadurch veränderte Verhalten der Rotation ist leider nicht im KTM Project Builder nachzuvollziehen, es funktioniert dann aber zur Laufzeit. Im KTM Project Builder kann man allerdings mit der oben erwähnten oImage.Save-Funktionalität das im Speicher geänderte Bild zur Überprüfung abspeichern. Die Zeile mit oImage.Save sollte allerdings nur im Project Builder aktiv sein und zur Laufzeit deaktiviert werden.

Dieses einfache Bereichslöschen hat in unseren Kundenprojekten dafür gesorgt, dass alle Faxe richtig ausgerichtet wurden und wir das gewünschte OCR-Ergebnis zur Datenextrakton erhielten. Bei Faxen reicht es auch schon aus, nur den oberen Rand mit der Fax-Kopfzeile zu schwärzen.

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

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.