Saltar al contenido principal
Un clasificador de ABBYY FlexiCapture procesa los documentos enviados y determina su clase. Esto le permite elegir una Definición de Document que se usará para la extracción de campos. Cada clasificador corresponde a un lote de entrenamiento de clasificación específico. Si desea usar varios clasificadores para un solo lote, debe configurar un script de clasificación. Esto puede ser útil cuando hay documentos que deben someterse a una clasificación adicional. En este caso, el primer clasificador se usará para clasificar los documentos según su clase y, a continuación, se seleccionará un clasificador adicional desde el script en función de los resultados de la clasificación. Por ejemplo, los documentos pueden clasificarse primero en “facturas” y “contratos”, y luego las facturas pueden clasificarse más detalladamente según el nombre de la empresa.
Este script solo puede configurarse para un lote de entrenamiento de clasificación ya existente y no puede configurarse al crear un lote nuevo.
Para configurar un script de clasificación:
  1. Abra Project → Project Properties…
  2. Vaya a la pestaña Recognition en la ventana de propiedades del proyecto.
  3. Abra el editor del script de clasificación haciendo clic en Set… a la derecha de Use script en la sección Classification.
  4. En el cuadro de diálogo, seleccione un clasificador adecuado haciendo clic en Add… y eligiendo un lote de clasificación de la lista.
  5. Ahora puede cambiar el Alias Name de un clasificador. Esto evita que tenga que reescribir un script si el nombre de un clasificador cambia durante el procesamiento. El script hará referencia al nombre específico indicado en la columna Alias Name.
  6. Abra la ventana del editor de scripts haciendo clic en Edit Script…

Parámetros

Name

Tipo

Acceso

Descripción

BatchTypeClassifier

IBatchTypeClassifier

De solo lectura

El clasificador del tipo de lote.

IsConfident

bool

De solo lectura

Nivel de confianza de la clasificación. A diferencia de los clasificadores automáticos, cuando se trabaja con el script este parámetro debe especificarse manualmente en las propiedades de la página.

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

Page

IPage

Lectura/escritura

Página del documento.

Processing

IProcessingCallback

Lectura/escritura

Objeto para registrar información sobre el procesamiento.

Este script clasifica páginas y añade el nombre de una clase a sus propiedades:
IBatchTypeClassifierResult classifierResult = BatchTypeClassifier.ClassifyPage( Page, null );
Page.ResultClassName = classifierResult.ClassName;
El siguiente script de ejemplo le permite obtener los niveles de confianza de la clasificación:
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);
El siguiente script puede usarse si, en su escenario, no es necesario asignar una clase a los documentos con un nivel de confianza bajo (aunque ya se les haya especificado una clase). Esos documentos deben clasificarse manualmente por un operador.¡Importante! Para que el script funcione, primero debe crearse una clase nueva; por ejemplo, “Unknown”. Después, debe vincularse a la Definición de Document en el cuadro de diálogo Class Mapping… Para obtener más información, consulte Asignación de clases a secciones de Definición 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() ); // registra el valor de confianza de la clasificación en el registro de eventos
    Page.Comment = Page.Comment + c.Name + "-" + c.Confidence.ToString() + "; "; // registra el valor de confianza de la clasificación en los comentarios de la página
}
if (classVars.Count>0)
{
    if (classVars[0].Confidence<80) Page.IsResultClassConfident=false; // umbral de confianza por debajo del cual un documento se clasificará como clasificado con incertidumbre
    else Page.IsResultClassConfident=true;
if (classVars[0].Confidence<20) Page.ResultClassName="Unknown"; // umbral de confianza por debajo del cual se asignará a un documento la clase "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 );
Nota: Los valores del umbral de confianza de este script son solo para fines de demostración y el usuario puede modificarlos según el workflow concreto.