- Crear una base de datos de clasificación
- Clasificar documentos
Implementación del escenario
Los ejemplos de código de este tema son específicos de Windows.
Paso 1. Carga de ABBYY FineReader Engine
Paso 1. Carga de ABBYY FineReader Engine
Para empezar a trabajar con ABBYY FineReader Engine, debe crear el objeto Engine. El objeto Engine es el objeto principal de la jerarquía de objetos de ABBYY FineReader Engine y proporciona varias configuraciones globales, algunos métodos de procesamiento y métodos para crear los demás objetos.Para crear el objeto Engine, puede usar la función InitializeEngine. Consulte también otras formas de cargar el objeto Engine (Win).
C#
Paso 2. Creación de ClassificationEngine
Paso 2. Creación de ClassificationEngine
Cree un objeto ClassificationEngine, que actúa como factoría de otros objetos de la API de clasificación. Use el método CreateClassificationEngine del objeto Engine.
C#
Paso 3. Preparación de los objetos de clasificación
Paso 3. Preparación de los objetos de clasificación
Los métodos de entrenamiento y clasificación funcionan con un tipo especial de objeto creado a partir de un documento o de una página: ClassificationObject, que contiene toda la información relevante para la clasificación.Para preparar un documento para usarlo en un escenario de clasificación, haga lo siguiente:
- Cargue las imágenes que se van a procesar. Hay varias formas de hacerlo; por ejemplo, puede crear el objeto FRDocument con el método CreateFRDocument del objeto Engine y, a continuación, agregar imágenes desde un archivo al objeto FRDocument creado mediante el método AddImageFile.
- Si va a entrenar o usar un clasificador de un tipo que tiene en cuenta características de texto (CT_Combined, CT_Text), primero reconozca el documento con cualquier método adecuado. Usaremos los métodos Analyze y Recognize del objeto FRDocument. La síntesis del documento no es necesaria para la clasificación.
Aunque la clasificación en sí no admite procesamiento en paralelo, puede necesitarlo para el reconocimiento previo de los documentos en Windows y Linux. Si el número de documentos que va a clasificar es elevado, recomendamos usar Batch Processor u otros métodos de procesamiento en paralelo descritos en Parallel Processing with ABBYY FineReader Engine.
- Use el método CreateObjectFromDocument del objeto ClassificationEngine para crear un objeto ClassificationObject que contenga la información de la primera página del documento. Si necesita usar otra página del documento, llame al método CreateObjectFromPage.
- La propiedad Description de ClassificationObject está vacía de forma predeterminada. Especifique esta propiedad si necesita una descripción pertinente.
En ocasiones, puede suceder que el documento o la página reconocidos no contengan texto reconocido (por ejemplo, si por error se usó una página vacía). En este caso, el ClassificationObject no puede usarse con clasificadores que requieren características de texto. Puede usar su propiedad SuitableClassifiers como comprobación adicional.
C#
Paso 4. Creación de un conjunto de datos de entrenamiento
Paso 4. Creación de un conjunto de datos de entrenamiento
Para entrenar un clasificador que distinga entre varios tipos de documentos, necesita un conjunto de datos categorizado que contenga muestras de cada tipo. Use el objeto TrainingData para completar y administrar este conjunto de datos:
- Cree un objeto vacío con el método CreateTrainingData del objeto ClassificationEngine.
- Acceda a la colección de categorías a través de la propiedad Categories.
- Use varias veces el método AddNew del objeto Categories para agregar una categoría por cada tipo de documento que desee clasificar. El método requiere una
stringcon la etiqueta de la categoría como parámetro de entrada. La etiqueta será devuelta por los métodos de clasificación, por lo que debe ser única dentro del conjunto de categorías. - Para cada objeto Category recién agregado, abra la colección de objetos de clasificación mediante la propiedad Objects. Con el método IClassificationObjects::Add, agregue los objetos de clasificación correspondientes a esta categoría.
Ninguna categoría puede quedar vacía. Por razones obvias, se requieren al menos dos categorías para el entrenamiento. - Una vez configurado el conjunto de datos de entrenamiento, puede que desee guardarlo en un archivo del disco para usarlo más adelante; por ejemplo, si la precisión del modelo entrenado resulta inaceptable y desea agregar o corregir datos para mejorar la calidad. El objeto TrainingData proporciona el método SaveToFile.
C#
Paso 5. Entrenar el modelo de clasificación
Paso 5. Entrenar el modelo de clasificación
La funcionalidad para el entrenamiento de modelos la proporciona el objeto Trainer. Use el método CreateTrainer del objeto ClassificationEngine para crearlo.Contiene todos los ajustes para el tipo de clasificador y el procedimiento de entrenamiento, en dos subobjetos: TrainingParams y ValidationParams. Determine qué ajustes necesita y modifique las propiedades correspondientes:La propiedad ITrainingResult::Model proporciona acceso al modelo de clasificación entrenado. Puede guardarlo en un archivo mediante el método SaveToFile o utilizarlo directamente para clasificar documentos (continúe con el Paso 6).
- El tipo de clasificador (ITrainingParams::ClassifierType). Esta configuración determina qué características del documento se tienen en cuenta al asignar una categoría: las características de la imagen, el contenido del texto reconocido o ambas. Para seleccionar un tipo que utilice el contenido del texto, debe asegurarse de que todos los objetos de clasificación del conjunto de datos de entrenamiento se hayan creado a partir de documentos reconocidos previamente.
- El modo de entrenamiento (ITrainingParams::TrainingMode). Esta configuración determina si el proceso de entrenamiento debe favorecer una alta precisión (cuántos de los elementos seleccionados son correctos), una alta cobertura (cuántos de los elementos correctos se seleccionan) o un equilibrio entre ambas.
- Si se debe usar la validación cruzada de k pliegues (IValidationParams::ShouldPerformValidation). Recomendamos usar la validación cruzada cuando la muestra de entrenamiento no es muy grande, ya que permite entrenar varios modelos con las distintas particiones de la misma muestra y seleccionar el mejor. Si dispone de una gran cantidad de datos categorizados, puede ser mejor desactivar la validación, entrenar el modelo con toda la muestra de entrenamiento y, a continuación, usar los métodos de clasificación (Paso 6) para probar el modelo con otra muestra y calcular por su cuenta las métricas de rendimiento.
- Los parámetros de la validación cruzada de k pliegues: el número de partes en las que se divide la muestra de entrenamiento (IValidationParams::FoldsCount) y el número de iteraciones (IValidationParams::RepeatCount). Tenga en cuenta que el número mínimo requerido de objetos en el conjunto de entrenamiento en cada iteración no puede ser inferior a 4 para el clasificador de texto ni a 8 para el clasificador combinado. Asegúrese de que su muestra de entrenamiento contenga suficientes objetos.
El entrenamiento y la clasificación de modelos se realizarán en modo secuencial en Linux y Windows, independientemente del valor de IMultiProcessingParams::MultiProcessingMode.
C#
Paso 6. Clasificación de documentos
Paso 6. Clasificación de documentos
Para usar el modelo entrenado para clasificar documentos:
- Si el modelo no está cargado actualmente, llame al método CreateModelFromFile del objeto ClassificationEngine para cargarlo desde un archivo en el disco.
- Prepare los objetos de clasificación a partir de los documentos que necesita clasificar, como se describe en el Paso 3.
- Para cada objeto de clasificación, llame al método Classify del objeto Model, pasando ClassificationObject como parámetro de entrada. El método devuelve una colección de objetos ClassificationResult, cada uno de los cuales contiene la etiqueta de la categoría y su probabilidad. Los resultados se ordenan por probabilidad, de mayor a menor. Recupere el resultado y compruebe que el nivel de probabilidad sea aceptable para usted.
Si el clasificador no puede asignar una categoría, se devuelve null en lugar de la colección de resultados.
El entrenamiento y la clasificación del modelo se realizarán en modo secuencial en Linux y Windows, independientemente del valor de IMultiProcessingParams::MultiProcessingMode.
C#
Paso 7. Descarga de ABBYY FineReader Engine
Paso 7. Descarga de ABBYY FineReader Engine
Después de terminar de trabajar con ABBYY FineReader Engine, debe descargar el objeto Engine. Para ello, use la función exportada DeinitializeEngine.
C#
Recursos necesarios
Optimización adicional
- Carga de Engine - Solo para Windows
- Diferentes formas de cargar el objeto Engine
Describe en detalle las distintas formas de cargar el objeto Engine. - Uso de ABBYY FineReader Engine en aplicaciones de servidor multihilo
Analiza las particularidades del uso de FineReader Engine en aplicaciones de servidor.
- Diferentes formas de cargar el objeto Engine
- Reconocimiento - Para Linux y Windows
- Procesamiento en paralelo con ABBYY FineReader Engine
Para preparar rápidamente los documentos o las páginas reconocidos para un clasificador con características de texto, utilice el procesamiento en paralelo para el reconocimiento y, a continuación, desactive el multiprocesamiento para la clasificación.
- Procesamiento en paralelo con ABBYY FineReader Engine
