Zum Hauptinhalt springen
Ein ABBYY FlexiCapture-Klassifikator verarbeitet eingereichte Dokumente und bestimmt ihre Klasse. So können Sie eine Dokumentdefinition auswählen, die für die Feldextraktion verwendet wird. Jeder Klassifikator entspricht einem bestimmten Klassifikationstraining. Wenn Sie mehrere Klassifikatoren für ein einzelnes Batch verwenden möchten, müssen Sie ein Klassifizierungsskript einrichten. Das kann nützlich sein, wenn Dokumente zusätzlich klassifiziert werden müssen. In diesem Fall wird zunächst der erste Klassifikator verwendet, um die Dokumente ihrer Klasse zuzuordnen. Anschließend wird je nach Klassifikationsergebnis ein zusätzlicher Klassifikator aus dem Skript ausgewählt. So können Dokumente beispielsweise zunächst in „Rechnungen“ und „Verträge“ klassifiziert werden; anschließend können die Rechnungen weiter nach Firmenname klassifiziert werden.
Dieses Skript kann nur für ein bereits vorhandenes Klassifikationstraining eingerichtet werden und nicht beim Erstellen eines neuen Batch.
So richten Sie ein Klassifizierungsskript ein:
  1. Öffnen Sie Project → Project Properties…
  2. Wechseln Sie im Fenster „Project Properties“ zur Registerkarte Recognition.
  3. Öffnen Sie den Editor für das Klassifizierungsskript, indem Sie rechts neben Use script im Abschnitt Classification auf Set… klicken.
  4. Wählen Sie im Dialogfeld einen geeigneten Klassifikator aus, indem Sie auf Add… klicken und ein Klassifizierungs-Batch aus der Liste auswählen.
  5. Nun können Sie den Alias Name eines Klassifikators ändern. Dadurch müssen Sie ein Skript nicht neu schreiben, wenn der Name eines Klassifikators während der Verarbeitung geändert wurde. Das Skript verweist auf den in der Spalte Alias Name angegebenen Namen.
  6. Öffnen Sie das Fenster des Skripteditors, indem Sie auf Edit Script… klicken.

Parameter

Name

Typ

Zugriff

Beschreibung

BatchTypeClassifier

IBatchTypeClassifier

Schreibgeschützt

Ein Klassifikator des Batch-Typs.

IsConfident

bool

Schreibgeschützt

Klassifikations‑Konfidenzwert. Im Gegensatz zur Arbeit mit automatischen Klassifikatoren muss dieser Parameter bei Verwendung des Skripts manuell in den Seiteneigenschaften festgelegt werden.

Beispiel
IClassificationResult result = Classifiers[0].ClassifyPage( Page );
Page.ResultClassName = result.ClassName;
Page.IsResultClassConfident = result.IsConfident;

Page

IPage

Lesen/Schreiben

Dokumentseite.

Processing

IProcessingCallback

Lesen/Schreiben

Das Objekt zum Protokollieren von Informationen über die Verarbeitung.

Dieses Skript klassifiziert Seiten und trägt den Namen einer Klasse in ihre Eigenschaften ein:
IBatchTypeClassifierResult classifierResult = BatchTypeClassifier.ClassifyPage( Page, null );
Page.ResultClassName = classifierResult.ClassName;
Mit dem folgenden Beispielskript können Sie Klassifikations‑Konfidenzwerte abrufen:
IClassificationResult result = Classifiers[0].ClassifyPage( Page );
FCTools.ShowMessage( "Class: " + result.ClassName );
Page.ResultClassName = result.ClassName;
FCTools.ShowMessage( "IsConfident: " + result.IsConfident );
Page.IsResultClassConfident = result.IsConfident;
var res0 = Classifiers.Get ( "Batch" ).ClassifyPage( Page );
IClassConfidences classVars = res0.Classes;
foreach( IClassConfidence c in classVars )
{
FCTools.ShowMessage( c.Name + " --> " + c.Confidence.ToString() );
}
FCTools.ShowMessage( "Class res0: " + res0.ClassName);
if (res0.ClassName == "Invoice")
{
var res1 = Classifiers.Get ( "Batch2" ).ClassifyPage( Page );
IClassConfidences classVars1 = res1.Classes;
foreach( IClassConfidence d in classVars1 )
{
FCTools.ShowMessage( d.Name + " --> " + d.Confidence.ToString() );
}
FCTools.ShowMessage( "Class res1: " + res1.ClassName);
Page.ResultClassName = res1.ClassName;
}
else
{
Page.ResultClassName = res0.ClassName;
}
FCTools.ShowMessage( "Page.ResultClassName: " +Page.ResultClassName);
Das folgende Skript kann verwendet werden, wenn Ihr Szenario nicht erfordert, dass Dokumenten mit einem niedrigen Konfidenzwert eine Klasse zugewiesen wird (auch wenn für sie bereits eine Klasse festgelegt wurde). Solche Dokumente sollten von einem Operator manuell klassifiziert werden.Wichtig! Damit das Skript funktioniert, sollte zuvor eine neue Klasse erstellt werden — zum Beispiel „Unknown“. Anschließend sollte sie im Dialogfeld Class Mapping… mit der Dokumentdefinition verknüpft werden. Weitere Informationen finden Sie unter Zuordnen von Klassen zu Dokumentdefinitions-Abschnitten.
using System;
IClassificationResult result = Classifiers.Get ( "ClassifierBatch" ).ClassifyPage(Page);
Page.ResultClassName = result.ClassName;
IClassConfidences classVars = result.Classes;
Page.Comment = "";
foreach( IClassConfidence c in classVars )
{
    //FCTools.ShowMessage( c.Name + " -- " + c.Confidence.ToString() ); // zeichnet den Klassifikations‑Konfidenzwert im Ereignisprotokoll auf
    Page.Comment = Page.Comment + c.Name + "-" + c.Confidence.ToString() + "; "; // zeichnet den Klassifikations‑Konfidenzwert in den Seitenkommentaren auf
}
if (classVars.Count>0)
{
    if (classVars[0].Confidence<80) Page.IsResultClassConfident=false; // Konfidenzschwellenwert, unterhalb dessen ein Dokument als unsicher klassifiziert gilt
    else Page.IsResultClassConfident=true;
if (classVars[0].Confidence<20) Page.ResultClassName="Unknown"; // Konfidenzschwellenwert, unterhalb dessen einem Dokument die Klasse "Unknown" zugewiesen wird
    if (classVars.Count>1) {
int classesToShow = Math.Min(classVars.Count, 3);
        for(int i=0; i<classesToShow; i++)
{ Page.Comment = Page.Comment + classVars[i].Name + "-" + classVars[i].Confidence.ToString() + "; "; }
    }
}
FCTools.ShowMessage( "Class: " + Page.ResultClassName );
Hinweis: Die Konfidenzschwellenwerte in diesem Skript dienen nur Demonstrationszwecken und können vom Benutzer abhängig von einem bestimmten Workflow geändert werden.