Los ejemplos de C# son aplicables solo a FRE para Windows.
Detección de marcas de verificación en la imagen
Código C#
Código C#
- Reconocimiento de un grupo de marcas de verificación
- Reconocimiento de una sola marca de verificación
- Aprender a reconocer marcas de verificación de tipo personalizado
Reconocimiento de un grupo de marcas de verificación
- establecer correctamente el tipo de marca de verificación, porque las marcas de tipo CMT_Circle y CMT_Square tienen un contorno negro que debe tenerse en cuenta al calcular el porcentaje;
- especificar la región exacta de la marca de verificación, porque el porcentaje de píxeles negros se calculará en toda la región y, si la región incluye áreas irrelevantes, la estimación puede empeorar.
- Cree un objeto FRDocument a partir de una imagen que contenga un grupo de marcas de verificación. Por ejemplo, puede usar el método CreateFRDocumentFromImage del objeto Engine.
- Obtenga la página con la imagen de las marcas de verificación de la colección de páginas del documento (IFRDocument::Pages); para ello, use las propiedades y los métodos de la colección FRPages.
- Obtenga el objeto Layout correspondiente a esta página mediante la propiedad IFRPage::Layout.
- Para cada grupo de marcas de verificación:
- Cree un objeto Region mediante el método IEngine::CreateRegion y agréguele rectángulos con el método IRegion::AddRect.
- Cree un objeto Block del tipo grupo de marcas de verificación y agréguelo a la colección de bloques del layout (ILayout::Blocks) mediante el método ILayoutBlocks::AddNew (use la constante BT_CheckmarkGroup y el objeto Region creado como parámetros de entrada. El método también requiere como tercer parámetro de entrada el índice del bloque en el layout).
- Obtenga el objeto CheckmarkGroup (use el método IBlock::GetAsCheckmarkGroup).
- Para cada marca de verificación del grupo:
- Cree el objeto Region con el método IEngine::CreateRegion y agréguele rectángulos con el método IRegion::AddRect.
- Cree un nuevo bloque de marca de verificación en el grupo con el método ICheckmarkGroup::AddNew (use el objeto Region creado como parámetro de entrada).
- Obtenga el objeto CheckmarkBlock (use el método IBlock::GetAsCheckmarkBlock) y establezca los parámetros necesarios (CheckmarkType, IsCorrectionEnabled).
- Establezca los parámetros necesarios del grupo de marcas de verificación (MinimumCheckedInGroup, MaximumCheckedInGroup).
- Para reconocer las marcas de verificación, use cualquiera de los métodos disponibles que permiten realizar el reconocimiento, como IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages, etc.
Código C#
Código C#
Reconocer una sola marca de verificación
- Cree un objeto FRDocument a partir de una imagen con una marca de verificación. Por ejemplo, puede usar el método CreateFRDocumentFromImage del objeto Engine.
- Obtenga la página con la imagen de la marca de verificación de la colección de páginas del documento (IFRDocument::Pages); use las propiedades y los métodos de la colección FRPages.
- Obtenga el objeto Layout correspondiente a esta página mediante la propiedad IFRPage::Layout.
- Cree el objeto Region con el método IEngine::CreateRegion y añádale rectángulos con el método IRegion::AddRect.
- Cree un objeto Block de tipo marca de verificación y agréguelo a la colección de bloques del layout (ILayout::Blocks) con el método ILayoutBlocks::AddNew (use la constante BT_Checkmark y el objeto Region creado como parámetros de entrada).
- Obtenga el objeto CheckmarkBlock (use el método IBlock::GetAsCheckmarkBlock) y establezca los parámetros necesarios (CheckmarkType, IsCorrectionEnabled).
- Para reconocer la marca de verificación, use cualquiera de los métodos de reconocimiento disponibles, como IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages, etc.
Código C#
Código C#
Aprender a reconocer marcas de verificación personalizadas
- Busque una imagen con algunas marcas de verificación sin marcar del tipo que desea reconocer. Puede ser una imagen de un formulario vacío que contenga esas marcas.
- Cree un objeto FRDocument a partir de esta imagen. Por ejemplo, puede usar el método CreateFRDocumentFromImage del objeto Engine.
- Obtenga la página con la imagen de las marcas de verificación de la colección de páginas del documento (IFRDocument::Pages); use las propiedades y los métodos de la colección FRPages.
- Obtenga el objeto Layout correspondiente a esta página mediante la propiedad IFRPage::Layout.
- Especifique la región y el tipo de cada bloque de marca de verificación de la página:
- Cree el objeto Region mediante el método IEngine::CreateRegion y agréguele los rectángulos de una región de marca de verificación con el método IRegion::AddRect.
- Cree un objeto Block de tipo marca de verificación y agréguelo a la colección de bloques del layout (ILayout::Blocks) mediante el método ILayoutBlocks::AddNew (use la constante BT_Checkmark y el objeto Region creado como parámetros de entrada).
- Obtenga el objeto CheckmarkBlock (use el método IBlock::GetAsCheckmarkBlock) y establezca su propiedad CheckmarkType en CMT_Custom.
- Entrene FineReader Engine para que reconozca este tipo de marcas de verificación: llame al método LearnCheckmarks del objeto FRPage.
- Como resultado, la propiedad TrainingData del objeto CheckmarkBlock que creó antes del entrenamiento contendrá información sobre el tipo personalizado de marca de verificación. Esta información podrá utilizarse para reconocer otras marcas de verificación del mismo tipo. Puede guardarla en un archivo o en memoria mediante el método SaveToMemory (solo Windows) o el método SaveToFile del objeto CheckmarkTrainingData.
- Cree objetos FRDocument a partir de las imágenes que contengan marcas de verificación de este tipo, especifique bloques de marcas de verificación en las páginas y establezca el tipo de marca de verificación en CMT_Custom. El procedimiento se describe en los pasos 2 a 5.
- Inicialice la propiedad TrainingData de cada objeto CheckmarkBlock con el objeto CheckmarkTrainingData obtenido durante el entrenamiento. Por ejemplo, puede copiar el objeto mediante el método CopyFrom o cargarlo desde un archivo o desde la memoria mediante el método LoadFromMemory (solo Windows) o el método LoadFromFile del objeto CheckmarkTrainingData.
- Llame a cualquiera de los métodos de reconocimiento del objeto FRDocument o FRPage; por ejemplo, al método IFRDocument::Recognize.
- Las propiedades BlackThreshold y SuspiciousDistance del objeto CheckmarkBlock le permiten ajustar aún más la configuración si no está satisfecho con los resultados del reconocimiento. Después del entrenamiento, los valores predeterminados de estas propiedades se sustituyen por valores que deberían funcionar en la mayoría de los casos. Cuando carga el objeto CheckmarkTrainingData para un bloque de marcas de verificación, también se cargan los valores de estas propiedades. Puede probar a cambiar los valores de estas propiedades y volver a reconocer las marcas de verificación (repitiendo el paso 10) y, cuando haya encontrado la mejor configuración, volver a guardar el objeto CheckmarkTrainingData y usar el nuevo objeto para reconocer las marcas de verificación de su tipo personalizado.
