Création d'un script pour l'identification et l'indexation de documents

ABBYY FineReader Server 14 vous permet de configurer l'identification et l'indexation de documents à l'aide d'un script. Ce script peut être utilisé pour détecter le type de document et pour renseigner les attributs du document en fonction du texte reconnu, des codes barre, etc. Le script s'exécute séparément pour chaque document après l'assemblage du document.

Important! Le script d'identification et d'indexation de documents se déclenche au niveau du poste de traitement. Par conséquent, pour que le script fonctionne correctement avec les ressources partagées, vous devez lancer les postes de traitement sous un compte utilisateur disposant des droits nécessaires pour accéder à ces ressources.

Pour créer et utiliser le script, procédez comme suit :

  1. Dans l'onglet 5. Indexation de la boîte de dialogue Propriétés du workflow, spécifiez les types de documents. L'identification de documents est uniquement disponible si au moins un type de document est spécifié.
  2. Pour ajouter un nouveau type de document, cliquez sur Nouveau.... Dans la boîte de dialogue Type de document qui s'ouvre, spécifiez un nom de type de document et ses attributs. Cliquez sur OK.
  3. Cliquez sur le bouton Script.... Dans la boîte de dialogue Éditeur de script qui s'ouvre, sélectionnez le langage du script et saisissez le texte du script. Les références « this » ou « Me » désignent l'objet DocumentToIndex.

Note. Pour mettre le document dans la file d'attente en vue d'un traitement par le poste d'indexation à la fin du script d'indexation, réglez la valeur de SkipManualIndexing de l'objet DocumentToIndex sur FALSE.

  1. Pour vérifier le script, cliquez sur le bouton Vérifier. Pour enregistrer le script, cliquez sur OK.

Exemple

L'exemple de script proposé ci-dessous est écrit en JScript. Il est destiné à l'indexation de documents à partir d'un texte reconnu. En tant que type de document, le programme utilise un texte personnalisé (la propriété CustomText de l'objet DocumentToIndex) affecté à un document lors de l'exécution d'un script de séparation de documents. Le programme recherche des mots clés dans la première page du texte reconnu en fonction du type de document. Si les mots clés sont trouvés, le programme définit la valeur d'un attribut de document et ignore l'indexation manuelle (propriété SkipManualIndexing).

Note. Ce script est utilisé dans le scénario de traitement de démonstration de Scripting Demo, dont les paramètres sont inclus dans ScriptingDemoWorkflow.xml dans le dossier suivant : Exemples (Démarrer > Programmes > ABBYY FineReader Server 14 > Exemples).

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 handlers

Des gestionnaires d'événements peuvent être mis en place pour chaque type de document. Pour créer ou activer un gestionnaire d'événements, cliquez sur le bouton Scripts... dans la boîte de dialogue Type du document, choisissez un événement, puis cliquez sur le bouton Modifier le script.... Les événements suivants sont disponibles :

    • Lorsque le type de document est modifié

Les gestionnaires associés à cet événement s'exécutent quand le type d'un document est modifié. Cela peut se produire quand un type de document par défaut est défini dans les paramètres du workflow, quand un autre script modifie le type d'un document ou quand le type d'un document est modifié sur un Poste d'indexation. Les gestionnaires d'événements associés à l'événement OnDocumentTypeChanged peuvent être utilisés pour assigner des valeurs prédéfinies aux champs du document en passant par l'objet IDocumentAttributes.

Note. Les gestionnaires d'événements associés à l'événement OnDocumentTypeChanged sont exécutés sur le poste où le type du document a été modifié.

Un script de gestionnaire d'événements qui assigne une valeur prédéfinie à un attribut Une seule ligne est fourni en exemple ci-dessous.

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

  • Lorsque la valeur d'attribut du document est modifiée

Les gestionnaires associés à cet événement sont exécutés sur un Poste d'indexation quand un opérateur change la valeur d'un champ et valide la modification en déplaçant le curseur sur un autre champ. Ils permettent de modifier les valeurs des champs en fonction des valeurs d'autres champs en passant par l'objet IDocumentAttributesChanged. Les gestionnaires associés à l'événement OnDocumentAttributeValueChanged peuvent aussi être utilisés pour modifier les valeurs possibles des champs Liste en passant par la propriété PossibleValues de l'objet Attribute. La propriété se compose d'un ensemble modifiable de chaînes de caractères.

Un script qui ajoute une valeur à un attribut Liste en fonction de la valeur d'autres attributs est fourni en exemple ci-dessous.

  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 );
           }
       }
   }
}

  • Lorsque l'indexation du document est terminée

Les gestionnaires associés à ce type d'événement s'exécutent sur un Poste d'indexation quand l'indexation d'un document est interrompue pour l'une des raisons suivantes :

    • Un opérateur a accepté le document
    • Un opérateur a rejeté le document ou la tâche
    • Un opérateur a refusé d'indexer le document en sélectionnant un autre document
    • Le document a été renvoyé au serveur après expiration du délai d'attente du poste

Les gestionnaires associés à l'événément OnDocumentIndexingFinished utilisent l'objet IDocumentAttributesIndexingFinished. Un script qui retourne le nom d'un opérateur ayant rejeté un document est fourni en exemple ci-dessous.

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

Voir également

Utilisation de scripts sous ABBYY FineReader Server

26.03.2024 13:49:50

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.