Saltar al contenido principal
Visual Components se implementan en FRE para Windows.
Al crear una aplicación con interfaz de usuario, puede usar los Visual Components de ABBYY FineReader Engine. Visual Components proporcionan componentes listos para usar con los que puede crear su propia interfaz de usuario para una aplicación de Reconocimiento óptico de caracteres (OCR). Puede mostrar al usuario de la aplicación los documentos que se están procesando, permitirle verificar los resultados del reconocimiento y editar el texto reconocido. Visual Components pueden resultar útiles en cualquier escenario de procesamiento. Por ejemplo, la edición de texto puede ofrecerse en el escenario de Document Conversion, mientras que la verificación es especialmente útil en el escenario de Field-Level Recognition. Veamos una aplicación de OCR sencilla desde el punto de vista de la interfaz de usuario. Un documento pasa por varias etapas de procesamiento:
  1. Apertura de la imagen
Puede mostrar la imagen abierta al usuario y permitirle desplazarse entre las páginas del documento que se está procesando.
  1. Reconocimiento
Para extraer datos de texto de un documento, primero es necesario reconocerlo. Puede mostrar el texto reconocido al usuario y permitirle editarlo.
  1. Verificación
Puede ser necesario verificar el texto reconocido. Puede mostrar al usuario tanto la imagen de origen como el texto reconocido para que pueda compararlos.
  1. Exportación
El documento reconocido puede guardarse en un formato de almacenamiento adecuado o abrirse en una aplicación externa. A continuación se ofrece una descripción detallada de cómo usar Visual Components de ABBYY FineReader Engine.
Visual Components requieren Microsoft Windows Common Controls versión 6.0 o posterior.
Visual Studio le permite insertar controles ActiveX en su cuadro de diálogo. Puede agregar Visual Components a la ventana Toolbox (Toolbox está disponible en el menú View) y trabajar con ellos:
  1. En el menú Tools, haga clic en Choose Toolbox Items (o Add/Remove Toolbox Items).
  2. En el cuadro de diálogo que se abre, haga clic en la pestaña COM Components y seleccione los componentes ABBYY DocumentViewer, ABBYY ImageViewer, ABBYY ZoomViewer, ABBYY TextEditor y ABBYY TextValidator.
  3. Haga clic en OK. Los iconos de los elementos seleccionados ahora estarán disponibles en Toolbox. Puede arrastrar y soltar cada icono de Visual Component en una superficie de diseño. Esta acción también agrega el código básico necesario para crear una instancia de Visual Component en el archivo activo del proyecto.
  4. Después de agregar Visual Component a un formulario, puede especificar las propiedades disponibles en Visual Studio. Por ejemplo, la propiedad SettingsPath de cada componente debe especificarse en tiempo de diseño.
El diseñador de Visual Studio no admite controles ActiveX de 64 bits. Por ello, no puede agregar Visual Components de 64 bits a una aplicación Windows Forms. Este comportamiento es conocido; se describen problemas similares para los controles Microsoft ActiveX, por ejemplo, en http://support.microsoft.com/kb/980533/en-us. Como solución alternativa a este problema, FineReader Engine instala Visual Components de 32 y 64 bits si selecciona la instalación para desarrolladores de Visual Components en un sistema de 64 bits. En este caso, en el diseñador de Visual Studio, puede trabajar con la versión de 32 bits de los componentes. Una aplicación de 64 bits que usa Visual Components no necesita tener instalados los Visual Components de 32 bits.
El componente Component Synchronizer le permite sincronizar Visual Components en la aplicación. Esto significa que todas las operaciones de visualización y edición se procesarán de forma sincronizada en todos los componentes conectados. Para sincronizar Visual Components:
  1. Al cargar el formulario, cree un nuevo objeto ComponentSynchronizer.
  2. Use las propiedades DocumentViewer, ImageViewer, ZoomViewer, TextEditor y TextValidator del objeto ComponentSynchronizer para conectar los componentes al sincronizador.
Cuando un componente se conecta al sincronizador a través de la API, Component Synchronizer funciona como se describe en Cómo funciona Component Synchronizer.

C#

private void VisualComponentsForm_Load(object sender, System.EventArgs e)
{
 // Conectar componentes al Synchronizer
 Synchronizer = new FineReaderVisualComponents.ComponentSynchronizerClass();
 Synchronizer.DocumentViewer = ( FineReaderVisualComponents.DocumentViewer ) documentViewer.GetOcx();
 Synchronizer.ImageViewer = ( FineReaderVisualComponents.ImageViewer ) imageViewer.GetOcx();
 Synchronizer.ZoomViewer = ( FineReaderVisualComponents.ZoomViewer ) zoomViewer.GetOcx();
 Synchronizer.TextEditor = ( FineReaderVisualComponents.TextEditor ) textEditor.GetOcx();
}
Para empezar a trabajar con ABBYY FineReader Engine, debe crear el objeto Engine. Para crear el objeto Engine, puede usar la función exportada InitializeEngine. Consulte también otras formas de cargar el objeto Engine. Puede cargar el objeto Engine durante la carga de la imagen o durante la inicialización del formulario.

C#

[DllImport( "FREngine.dll", CharSet=CharSet.Unicode ), PreserveSig]
private static extern int InitializeEngine(
 String customerProjectID,
 String licensePath,
 String licensePassword,
 String FREngineDataFolder,
 String FREngineTempFolder,
 Bool lsSharedCPUCoresMode,
 ref FREngine.IEngine engine );
private void loadEngine()
{
 int hresult = InitializeEngine( "<CustomerProjectID>",
 "<licensePath>",
 "<licensePassword>",
 "<FREngineDataFolder>",
 "<FREngineTempFolder>",
 false,
 ref Engine );
 Marshal.ThrowExceptionForHR( hresult );
}
Para mostrar la imagen en Visual Components, debe abrirla. Puede implementar el siguiente procedimiento para abrir imágenes:
  1. Para cargar imágenes de un solo documento, debe crear el objeto FRDocument y agregarle imágenes. Puede hacerlo de una de las siguientes maneras:
  2. Adjunte el documento a Component Synchronizer mediante la propiedad Document del objeto ComponentSynchronizer.
Este procedimiento puede controlar el evento “on click” de un botón que abre imágenes.

C#

private void openImage( string imageFileName )
{
 // Cargar ABBYY FineReader Engine
 if( Engine == null )
 {
  loadEngine();
  Engine.ParentWindow = this.Handle.ToInt32();
  Engine.ApplicationTitle = this.Text;
 }
 // Abrir imagen
 Document = Engine.CreateFRDocumentFromImage( imageFileName, null );
 // Adjuntar imagen a Visual Components mediante Synchronizer
 Synchronizer.Document = Document;
}
El reconocimiento de una imagen en Visual Components puede realizarse mediante los comandos disponibles en los componentes o mediante la API de FineReader Engine (consulte, por ejemplo, el método Process del objeto FRDocument).Puede implementar el siguiente procedimiento para el reconocimiento:
  1. Reconozca el documento mediante los métodos del objeto FRDocument.
  2. El documento se ha modificado fuera de la GUI de Visual Components; por lo tanto, debe notificar los cambios a Visual Components. Use el método Update del objeto FRPage para cada página del documento.
El procedimiento puede controlar el evento “on click” de un botón que inicia el reconocimiento.

C#

private void recognizeDocument()
{
 // Reconocer y sintetizar todo el documento
 Document.Process( Synchronizer.ProcessingParams );
 // Notificar los cambios a Visual Components
 for( int i = 0; i < Document.Pages.Count; i++ )
 {
  Document.Pages[i].Update();
 }
}
Los datos reconocidos pueden verificarse mediante el componente Text Validator. Este proporciona una interfaz de usuario que permite comprobar si un carácter se ha reconocido correctamente y corregirlo si es necesario.Puede implementar el siguiente procedimiento para la verificación:
  1. Agregue el componente Text Validator al formulario actual o cree un formulario nuevo para él.
  2. Conecte el componente Text Validator a Component Synchronizer. Use la propiedad TextValidator del objeto ComponentSynchronizer.
  3. Inicie el proceso de verificación mediante el método Spell del objeto TextValidator.

C#

private void validateButton_Click(object sender, System.EventArgs e)
{
 if( validatorForm == null )
 {
  // Crear un nuevo formulario para la validación
  validatorForm = new ValidatorForm();
  validatorForm.Owner = this;
  // Conectar el validador al sincronizador
  Synchronizer.TextValidator = ( FineReaderVisualComponents.TextValidator ) validatorForm.TextValidator.GetOcx();
  validatorForm.Show();
  // Validar el texto reconocido en el documento conectado
  validatorForm.TextValidator.Spell( null );
 }
}
El documento reconocido puede guardarse mediante los comandos disponibles en Document Viewer o mediante la API de FineReader Engine.Por ejemplo, use el método Export del objeto FRDocument y pase la constante FileExportFormatEnum como uno de los parámetros. Cuando haya terminado de trabajar con el objeto FRDocument, libere todos los recursos utilizados por este objeto. Use el método IFRDocument::Close. El procedimiento puede controlar el evento “on click” de un botón que inicia la exportación.

C#

// Guardar un documento reconocido en formato RTF
Document.Export( "<File name>", FREngine.FileExportFormatEnum.FEF_RTF, null );
// Liberar el objeto FRDocument
Document.Close();
Cuando termine de trabajar con ABBYY FineReader Engine, debe descargar el objeto Engine. Para ello, use la función exportada DeinitializeEngine.
Recomendamos liberar Component Synchronizer antes de desinicializar Engine.
El procedimiento puede controlar el evento “on click” de un botón que cierra la ventana de la aplicación.

C#

[DllImport( "FREngine.dll", CharSet=CharSet.Unicode ), PreserveSig]
private static extern int DeinitializeEngine();
private void unloadEngine()
{
 if( Engine != null )
 {// Si Engine se cargó, descargarlo
  Engine = null;
  int hresult = DeinitializeEngine();
  Marshal.ThrowExceptionForHR( hresult );
 }
}
Puede encontrar una implementación de ejemplo del procedimiento descrito en el ejemplo VisualComponents.

Consulte también

Personalizar el menú contextual y la barra de herramientas de un Visual Component