Passer au contenu principal
Un classificateur ABBYY FlexiCapture traite les documents soumis et détermine leur classe. Cela vous permet de choisir une définition de document à utiliser pour l’extraction de champs. Chaque classificateur correspond à un lot d’entraînement à la classification spécifique. Si vous souhaitez utiliser plusieurs classificateurs pour un même lot, vous devez configurer un script de classification. Cela peut être utile lorsque certains documents doivent faire l’objet d’une classification supplémentaire. Dans ce cas, le premier classificateur sera utilisé pour classer les documents selon leur classe, puis un classificateur supplémentaire sera sélectionné à partir du script en fonction des résultats de classification. Par exemple, les documents peuvent d’abord être classés en « factures » et « contrats », puis les factures peuvent être classées plus finement selon le nom de l’entreprise.
Ce script ne peut être configuré que pour un lot d’entraînement à la classification déjà existant et ne peut pas être défini lors de la création d’un nouveau lot.
Pour configurer un script de classification :
  1. Ouvrez Project → Project Properties…
  2. Accédez à l’onglet Recognition dans la fenêtre des propriétés du projet.
  3. Ouvrez l’Editor du script de classification en cliquant sur Set… à droite de Use script dans la section Classification.
  4. Dans la boîte de dialogue, sélectionnez le classificateur approprié en cliquant sur Add…, puis en choisissant un lot de classification dans la liste.
  5. Vous pouvez maintenant modifier l’Alias Name d’un classificateur. Cela vous évite d’avoir à réécrire un script si le nom d’un classificateur a été modifié pendant le traitement. Le script fera référence au nom spécifié dans la colonne Alias Name.
  6. Ouvrez la fenêtre de l’éditeur de script en cliquant sur Edit Script…

Paramètres

Nom

Type

Accès

Description

BatchTypeClassifier

IBatchTypeClassifier

Lecture seule

Le classificateur du type de lot.

IsConfident

bool

Lecture seule

Niveau de confiance de la classification. Contrairement aux classificateurs automatiques, avec un script, ce paramètre doit être défini manuellement dans les propriétés de la page.

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

Page

IPage

Lecture/écriture

Page du document.

Processing

IProcessingCallback

Lecture/écriture

Objet permettant de journaliser les informations de traitement.

Ce script classe les pages et ajoute le nom de la classe à leurs propriétés :
IBatchTypeClassifierResult classifierResult = BatchTypeClassifier.ClassifyPage( Page, null );
Page.ResultClassName = classifierResult.ClassName;
L’exemple de script ci-dessous vous permet d’obtenir les niveaux de confiance de la classification :
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);
Le script suivant peut être utilisé si votre scénario n’exige pas que les documents ayant un faible niveau de confiance soient affectés à une classe (même si une classe leur a déjà été attribuée). Ces documents doivent être classés manuellement par un opérateur.Important ! Pour que le script fonctionne, une nouvelle classe doit d’abord être créée — par exemple, « Unknown ». Ensuite, elle doit être liée à la définition de document dans la boîte de dialogue Mise en correspondance des classes… Pour plus d’informations, voir Mise en correspondance des classes avec les sections de définition de document.
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() ); // enregistre la valeur du niveau de confiance de la classification dans le journal des événements
    Page.Comment = Page.Comment + c.Name + "-" + c.Confidence.ToString() + "; "; // enregistre la valeur du niveau de confiance de la classification dans les commentaires de la page
}
if (classVars.Count>0)
{
    if (classVars[0].Confidence<80) Page.IsResultClassConfident=false; // seuil de confiance en dessous duquel un document sera considéré comme classé de manière incertaine
    else Page.IsResultClassConfident=true;
if (classVars[0].Confidence<20) Page.ResultClassName="Unknown"; // seuil de confiance en dessous duquel un document se verra attribuer la classe "Unknown"
    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 );
Remarque : Les valeurs de seuil de confiance dans ce script sont fournies uniquement à des fins de démonstration et peuvent être modifiées par l’utilisateur en fonction d’un workflow particulier.