Creación de un script para la identificación e indización de documentos

ABBYY FineReader Server 14 permite configurar la identificación e indización de documentos con la ayuda de un script. Este script puede utilizarse para detectar el tipo de documento y rellenar los atributos del documento con base en el texto reconocido, códigos de barras, etc. El script se ejecuta por separado para cada documento una vez ensamblado el documento.

¡Importante!El script de identificación e indización de documentos se activa en la estación de procesamiento. Por lo tanto, para que el script funcione correctamente con recursos compartidos, usted debe ejecutar las estaciones de procesamiento desde una cuenta de usuario que tenga los derechos necesarios para acceder a estos recursos.

Para crear y utilizar el script, realice lo siguiente:

  1. En la ficha 5. Indización del cuadro de diálogo Propiedades del flujo de trabajo, especifique los tipos de documento. La indización de documentos sólo está disponible si se ha especificado al menos un tipo de documento.
  2. Para agregar un nuevo tipo de documento, haga clic en el botón Nuevo.... En el cuadro de diálogo Tipo de documento que se abre, especifique un tipo de documento y sus atributos. Haga clic en Aceptar.
  3. Haga clic en el botón Comprobar. En el cuadro de diálogo Editor de scripts que se abre, seleccione el lenguaje de scripting e introduzca el texto del script. La referencia "this" o "Me" se refiere al objeto DocumentToIndex.

Nota. Para poner en cola el documento para que sea procesado en la estación de indización al término del script de indización, configure el parámetro SkipManualIndexing del objeto DocumentToIndex como FALSE.

  1. Para comprobar el script, haga clic en el botón Comprobar. Para guardar el script, haga clic en Aceptar.

Para obtener más detalles sobre el uso de scripts, consulte Utilización de scripts en ABBYY FineReader Server.

Muestra

El script de muestra que se proporciona a continuación está escrito en JScript y tiene como finalidad indexar documentos en función de un texto reconocido. Como tipo de documento, el programa utiliza un texto personalizado (propiedad CustomText del objeto DocumentToIndex), que se asigna a un documento cuando se ejecuta un script de separación de documentos. El programa busca palabras clave en el texto reconocido en la primera página en función del tipo de documento. Si encuentra las palabras clave, el programa establece el valor de un atributo de documento y omite la indexación manual (propiedad SkipManualIndexing ).

Nota. Este script se utiliza en el escenario de procesamiento de demostración «Demostración de scripting», cuya configuración está incluida en el archivo «ScriptingDemoWorkflow.xml», ubicado en la siguiente carpeta: Muestras (Inicio > Programas > ABBYY FineReader Server 14 > Ejemplos).

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

Controladores de eventos

Los gestores de eventos pueden configurarse para cada tipo de documento. Para crear o habilitar un gestor de eventos, haga clic en el botón Scripts... en el cuadro de diálogo Tipo de documento, seleccione un evento y haga clic en el botón Modificar Script.... Están disponibles los siguientes eventos:

    • Cuando se cambie el tipo de documento

Cuando el tipo del documento cambia Los gestores de este evento se ejecutan cuando el tipo de documento se cambia. Esto puede producirse cuando se especifica un tipo de documento predeterminado en la configuración del flujo de trabajo, cuando otro script cambia el tipo de un documento o cuando se cambia el tipo de un documento en una Estación de Indexación. Los gestores de eventos para el evento Cuando se cambie el tipo de documento pueden usarse para asignar valores predeterminados a los campos del documento usando el objeto IDocumentAttributes.

Nota. Los gestores de eventos para el evento Cuando se cambie el tipo de documento se ejecutan en la estación cuando se cambió el tipo de documento.

A continuación se proporciona un ejemplo de un script de gestor de eventos que asigna un valor predeterminado a un atributo Línea única.

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

  • Cuando se cambie el valor del atributo del documento

Los gestores para este evento se ejecutan en una Estación de Indexación cuando el operador cambia el valor de un campo y finaliza el cambio moviendo el cursor a otro campo. Permiten cambiar los valores de los campos en base a los valores de otros campos usando el objeto IDocumentAttributesChanged. Los gestores para el evento Cuando se cambie el valor del atributo del documento pueden usarse también para cambiar los valores posibles de los campos Lista usando la propiedad del objeto de Atributo PossibleValues. La propiedad consta de un conjunto editable de secuencias.

A continuación se proporciona un ejemplo de un script que añade un valor a un atributo Lista basado en el valor de otros atributos.

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

  • Cuando finalice la indexación del documento

Los gestores para este tipo de evento se ejecutan en una Estación de Indexación cuando la indexación de un documento se detiene por una de las siguientes razones:

    • Un operador ha aceptado el documento
    • Un operador ha rechazado el documento o trabajo
    • Un operador rechazó indexar el documento seleccionando otro documento
    • El documento volvió al servidor tras vencer el periodo de vencimiento de la estación

Los gestores para el evento Cuando finalice la indexación del documento utilizan el objeto IDocumentAttributesIndexingFinished. A continuación se proporciona un ejemplo de script que devuelve el nombre del operador que rechazó un documento.

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

Consulte también:

Utilización de scripts en ABBYY FineReader Server

26.03.2024 13:49:49

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.