Erstellen eines Skripts zur Identifizierung und Indexierung von Dokumenten

ABBYY FineReader Server 14 ermöglicht Ihnen, die Identifizierung und Indexierung von Dokumenten mithilfe eines Skripts zu konfigurieren. Dieses Skript kann verwendet werden, um den Dokumententyp zu bestimmen und die Dokumentattribute auf der Grundlage des erkannten Textes, der Strichcodes etc. einzutragen. Das Skript wird für jedes Dokument einzeln ausgeführt, nachdem dieses zusammengesetzt wurde.

Wichtig! Das Skript zur Identifizierung und Indexierung von Dokumenten wird in der Verarbeitungsstation ausgelöst. Damit das Skript mit den freigegebenen Ressourcen richtig funktioniert, müssen Sie die Verarbeitungsstationen daher unter einem Benutzerkonto ausführen, das die erforderlichen Berechtigungen für den Zugriff auf diese Ressourcen hat.

Führen Sie folgende Schritte aus, um das Skript zu erstellen und einzusetzen:

  1. Legen Sie in der Registerkarte Indexierung des Dialogfeldes Workflow-Eigenschaften die Dokumententypen fest. Die Indexierung von Dokumenten ist nur dann verfügbar, wenn wenigstens ein Dokumententyp festgelegt ist.
  2. Um einen neuen Dokumententyp hinzuzufügen, klicken Sie auf Neu.... Legen Sie im sich daraufhin öffnenden Dialogfeld Dokumententyp den Namen des Dokumententyps und dessen Attribute fest. Klicken Sie auf OK.
  3. Klicken Sie auf die Schaltfläche Skript.... Wählen Sie im daraufhin angezeigten Dialogfeld Skripteditor die Skriptsprache aus und geben Sie den Skripttext ein. Die Referenz "this" oder "Me" bezieht sich auf das Objekt DocumentToIndex.
    Hinweis. Um das Dokument nach der Abarbeitung des Indexierungsskripts zur Verarbeitung in der Indexierungsstation in die Warteschlange zu stellen, setzen Sie den Wert SkipManualIndexing des Objekts DocumentToIndex auf FALSE.
  4. Um das Skript zu überprüfen, klicken Sie auf die Schaltfläche Überprüfen. Um das Skript zu speichern, klicken Sie auf OK.

Informationen zur Verwendung von Skripten finden Sie unter Verwenden von Skripten in ABBYY FineReader Server.

Beispiel

Das unten dargestellte Beispielskript ist in JScript geschrieben und dient der Indexierung von Dokumenten auf der Grundlage eines erkannten Textes. Als Dokumenttyp verwendet das Programm einen benutzerdefinierten Text (die Eigenschaft CustomText des Objekts DocumentToIndex), der einem Dokument bei der Ausführung eines Skripts zur Dokumententrennung zugeordnet ist. Das Programm sucht je nach Dokumenttyp auf der ersten Seite nach Schlüsselwörtern. Werden Schlüsselwörter gefunden, legt das Programm den Wert eines Dokumentattributs fest und überspringt die manuelle Indexierung (die Eigenschaft SkipManualIndexing).

Hinweis. Dieses Skript wird bei einem Scripting Demo-Szenario zur Demoverarbeitung verwendet, dessen Einstellungen in ScriptingDemoWorkflow.xml im folgenden Ordner enthalten ist: Beispiele (Start > Programme> ABBYY FineReader Server 14 > Beispiele).

if( CustomText == "" ) {
return;
}
DocumentType = CustomText;
if( DocumentType == "Brochure" ) {
var firstPageText = Pages.Item( 0 ).Text;
if( firstPageText.search( "FineReader Server" ) != -1 ) {
 setAttribute( "ABBYY FineReader Server" );
 SkipManualIndexing = true;
} else if( firstPageText.search( "FlexiCapture" ) != - 1 ) {
 setAttribute( "ABBYY FlexiCapture" );
 SkipManualIndexing = true;
}
}
function setAttribute( newValue )
{
for( i = 0; i < Attributes.Count; i++ ) {
 var attribute = Attributes.Item( i );
 if( attribute.Name == "Product Name" ) {
  attribute.Value = newValue;
  break;
 }
}
}

Event-Handler

Event-Handler können für jeden Dokumententyp eingerichtet werden. Um einen Event-Handler zu erstellen oder zu aktivieren, klicken Sie auf die Schaltfläche Skripte... im Dialogfeld Dokumententyp, wählen ein Ereignis und klicken auf die Schaltfläche Skript bearbeiten.... Die folgenden Ereignise sind verfügbar:

    • Wenn der Dokumententyp geändert wird

Handler für dieses Ereignis werden ausgeführt, sobald der Typ eines Dokuments geändert wird. Das kann passieren, wenn ein Standarddokumententyp in den Workflow-Einstellungen angegeben wurde, ein anderes Skript den Typ eines Dokuments ändert oder wenn der Typ eines Dokuments auf der Indexierungsstation geändert wird. Event-Handler für das Ereignis Bei Änderung des Dokumententyps kann für die Zuweisung vorbestimmter Werte für Dokumentenfelder verwendet werden, die das Objekt IDocumentAttributes verwenden.

Hinweis. Event-Handler für das Ereignis Bei Änderung des Dokumententyps werden auf der Station ausgeführt, auf der der Typ des Dokuments geändert wurde.

Ein Beispiel für ein Event-Handler-Skript, das einen vorbestimmten Wert einem einzeiligen Attribut zuordnet, finden Sie unten.

for( i = 0; i < Attributes.Count; i++ ) {
   var attribute = Attributes.Item(i);;
   if( attribute.Type == 2 ) {
       attribute.Value = attribute.Name + " " + WorkflowName + " DocType1 value";
   }
}

  • Wenn der Wert eines Dokumentattributs geändert wird

Handler für dieses Ereignis werden auf einer Indexierungsstation ausgeführt, sobald ein Operator den Wert eines Feldes ändert und die Änderung abschließt, indem der Mauszeiger in ein anderes Feld bewegt wird. Sie erlauben die Änderung der Werte von Feldern auf der Basis der Werte anderer Felder, die das Objekt IDocumentAttributesChanged verwenden. Handler für das Ereignis Bei Änderung des Attributwertes des Dokuments kann außerdem für die Änderung möglicher Werte der Felder Liste anhand der Eigenschaft PossibleValues des Attributobjekts geändert werden. Diese Eigenschaft besteht aus einer bearbeitbaren Reihe von Zeichenfolgen.

Ein Beispiel eines Skripts, das einen Wert einem Listenattribut auf der Basis des Werts des anderen Attributs hinzufügt, finden Sie unten.

  if( ChangedAttributeName == "First name" || ChangedAttributeName == "Last name" ) {
   LogMessage( "Field changed " + ChangedAttributeName  );
   var firstNameValue = "";
   var lastNameValue = "";
   for( i = 0; i < Attributes.Count; i++ ) {
       var attribute = Attributes.Item(i);
       if( attribute.Name == "First name" && attribute.IsDefined ) {
           firstNameValue = attribute.Value;
       } else if( attribute.Name == "Last name" && attribute.IsDefined ) {
           lastNameValue = attribute.Value;
       }
   }
   if( firstNameValue != "" && lastNameValue != "" ) {
       var fullNameValue = firstNameValue + " " + lastNameValue;
       for( i = 0; i < Attributes.Count; i++ ) {
           var attribute = Attributes.Item(i);
           if( attribute.Name == "Full name" ) {
               attribute.Value = fullNameValue;
           } else if( attribute.Name == "List" && attribute.Type == 1 ) {
               LogMessage( "Add to list " + fullNameValue  );
               attribute.PossibleValues.DeleteAll();
               attribute.PossibleValues.Insert( 0, fullNameValue );
           }
       }
   }
}

  • Nach Abschluss der Dokumentindizierung

Handler für diesen Ereignistyp, die auf einer Indexierungsstation ausgeführt werden, wenn die Indexierung aus einem der folgenden Gründe angehalten wurde:

  • Ein Operator hat das Dokument akzeptiert.
  • Ein Operator hat das Dokument oder den Job abgelehnt.
  • Ein Operator hat die Indexierung des Dokuments abgelehnt, indem er ein anderes Dokument ausgewählt hat.
  • Das Dokument wurde an den Server zurückgegeben, nachdem der Zeitüberschreitungszeitraum der Station überschritten war.

Handler für das Ereignis When Document Indexing Is Finished verwenden das Objekt IDocumentAttributesIndexingFinished. Ein Beispiel eines Skripts, das den Namen eines Operators zurückgibt, der ein Dokument abgelehnt hat, finden Sie unten.

if (IndexingResult == 1){
 LogMessage("Document Rejected by "+IndexingUserName);;
}

Weitere Informationen

Verwenden von Skripten in ABBYY FineReader Server

26.03.2024 13:49:48

Please leave your feedback about this article

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.