> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Script de classification de documents

> Configurez un script de classification de documents dans ABBYY FlexiCapture pour combiner des classificateurs, mettre en cascade la classification et attribuer une classe en fonction du niveau de confiance.

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.

Pour utiliser plusieurs classificateurs pour un même lot, configurez un script de classification. Cela peut être utile lorsque certains documents nécessitent une classification supplémentaire : le premier classificateur attribue une classe à chaque document, puis le script sélectionne un classificateur supplémentaire en fonction du résultat. 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.

<Note>
  Ce script ne peut être configuré que pour un lot d’entraînement à la classification déjà existant. Vous ne pouvez pas le configurer lors de la création d’un nouveau lot.
</Note>

<div id="set-up-a-classification-script">
  ## Configurer un script de classification
</div>

<Steps>
  <Step title="Ouvrir les propriétés du projet">
    Cliquez sur **Project → Propriétés du projet**.
  </Step>

  <Step title="Ouvrir l’onglet Recognition">
    Dans la fenêtre des propriétés du projet, accédez à l’onglet **Recognition**.
  </Step>

  <Step title="Ouvrir l’éditeur de script de classification">
    Dans la section **Classification**, cliquez sur **Définir** à droite de **Utiliser un script**.
  </Step>

  <Step title="Ajouter un classificateur">
    Dans la boîte de dialogue, cliquez sur **Ajouter** et choisissez un lot de classification dans la liste.
  </Step>

  <Step title="Définir un nom d’alias">
    Si vous le souhaitez, modifiez le **Nom d’alias** du classificateur. Le script fait référence au nom indiqué dans la colonne **Nom d’alias** ; vous n’avez donc pas besoin de le réécrire si le nom d’un classificateur change pendant le traitement.
  </Step>

  <Step title="Ouvrir l’éditeur de script">
    Cliquez sur **Edit Script** pour ouvrir la [fenêtre Script Editor](/fr/flexi-capture/interface/script-editor).
  </Step>
</Steps>

<div id="parameters">
  ## Paramètres
</div>

| Name                  | Type                                                                            | Accès            | Description                                                                                                                                                                                                                     |
| --------------------- | ------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BatchTypeClassifier` | [IBatchTypeClassifier](/fr/flexi-capture/appendix/scripts/ibatchtypeclassifier) | Lecture seule    | Un classificateur du type de lot.                                                                                                                                                                                               |
| `IsConfident`         | bool                                                                            | Lecture seule    | Niveau de confiance de la classification. Contrairement aux classificateurs automatiques, lorsque vous utilisez le script, ce paramètre doit être spécifié manuellement dans les propriétés de la page. Voir l'exemple suivant. |
| `Page`                | [IPage](/fr/flexi-capture/appendix/scripts/ipage)                               | Lecture/écriture | Page du document.                                                                                                                                                                                                               |
| `Processing`          | [IProcessingCallback](/fr/flexi-capture/appendix/scripts/iprocessingcallback)   | Lecture/écriture | Objet permettant de consigner des informations sur le traitement.                                                                                                                                                               |

L'exemple suivant spécifie `IsConfident` dans les propriétés de la page :

```csharp theme={null}
IClassificationResult result = Classifiers[0].ClassifyPage( Page );
Page.ResultClassName = result.ClassName;
Page.IsResultClassConfident = result.IsConfident;
```

<div id="classify-a-page-and-set-the-class-name">
  ## Classer une page et définir le nom de la classe
</div>

Ce script classe les pages et ajoute le nom de la classe à leurs propriétés :

```csharp theme={null}
IBatchTypeClassifierResult classifierResult = BatchTypeClassifier.ClassifyPage( Page, null );
Page.ResultClassName = classifierResult.ClassName;
```

<div id="get-classification-confidence">
  ## Obtenir les niveaux de confiance de la classification
</div>

Ce script récupère les niveaux de confiance de la classification :

```csharp theme={null}
IClassificationResult result = Classifiers[0].ClassifyPage( Page );
FCTools.ShowMessage( "Class: " + result.ClassName );
Page.ResultClassName = result.ClassName;
FCTools.ShowMessage( "IsConfident: " + result.IsConfident );
Page.IsResultClassConfident = result.IsConfident;
```

<div id="combine-multiple-classifiers-for-cascade-classification">
  ## Combiner plusieurs classificateurs pour une classification en cascade
</div>

```csharp theme={null}
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);
```

<div id="assign-the-unknown-class-to-low-confidence-documents">
  ## Attribuer la classe Unknown aux documents présentant un faible niveau de confiance
</div>

Utilisez ce script si, dans votre scénario, les documents présentant un faible niveau de confiance ne doivent pas se voir attribuer de classe, même si une classe a déjà été définie pour eux. Un opérateur doit classer manuellement ces documents.

<Note>
  Pour que le script fonctionne, créez au préalable une nouvelle classe — par exemple, "Unknown" — et associez-la à 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](/fr/flexi-capture/classify-mapping-classes).
</Note>

```csharp theme={null}
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 de confiance de classification dans le journal des événements
    Page.Comment = Page.Comment + c.Name + "-" + c.Confidence.ToString() + "; "; // enregistre la valeur de confiance de 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 classé comme incertain
    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 );
```

<Note>
  Les seuils de confiance dans ce script sont fournis uniquement à des fins de démonstration. Modifiez-les en fonction de votre workflow.
</Note>
