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.
Para usar varios clasificadores para un solo lote, debe configurar un script de clasificación. Esto es útil cuando algunos documentos necesitan una clasificación adicional: el primer clasificador asigna una clase a cada documento y, a continuación, el script selecciona un clasificador adicional en función del resultado. 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. No puede configurarlo al crear un lote nuevo.
Configurar un script de clasificación
Abrir Propiedades del proyecto
Haz clic en Proyecto → Propiedades del proyecto.
Abrir la pestaña Recognition
En la ventana de propiedades del proyecto, ve a la pestaña Recognition.
Abrir el editor de scripts de clasificación
En la sección Clasificación, haz clic en Establecer a la derecha de Usar script.
Agregar un clasificador
En el cuadro de diálogo, haz clic en Agregar y elige un lote de clasificación de la lista.
Establecer un nombre de alias
Si lo deseas, cambia el Nombre de alias del clasificador. El script hace referencia al nombre de la columna Nombre de alias, por lo que no tendrás que volver a escribirlo si el nombre de un clasificador cambia durante el procesamiento.
Abrir el editor de scripts
| Name | Type | Access | Description |
|---|
BatchTypeClassifier | IBatchTypeClassifier | De solo lectura | Un clasificador del tipo de lote. |
IsConfident | bool | De solo lectura | Confianza de la clasificación. A diferencia de los clasificadores automáticos, cuando se usa el script, este parámetro debe especificarse manualmente en las propiedades de la página. Consulte el siguiente ejemplo. |
Page | IPage | Lectura y escritura | Página del documento. |
Processing | IProcessingCallback | Lectura y escritura | Objeto para registrar información sobre el procesamiento. |
El siguiente ejemplo especifica IsConfident en las propiedades de la página:
IClassificationResult result = Classifiers[0].ClassifyPage( Page );
Page.ResultClassName = result.ClassName;
Page.IsResultClassConfident = result.IsConfident;
Clasificar una página y establecer el nombre de la clase
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;
Obtener el nivel de confianza de la clasificación
Este script obtiene 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;
Combinar varios clasificadores para una clasificación en cascada
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);
Asigne la clase Unknown a los documentos con baja confianza
Utilice este script si su escenario no requiere que se asigne una clase a los documentos con un nivel de confianza bajo, aunque ya se les haya especificado una clase. Un operador debe clasificar dichos documentos manualmente.
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 de clasificación incierta
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 );
Los valores del umbral de confianza de este script se incluyen solo con fines de demostración. Modifíquelos según su workflow.