Pular para o conteúdo principal
Os Visual Components são implementados no FRE para Windows.
Ao criar um aplicativo com interface do usuário, você pode usar os Visual Components do ABBYY FineReader Engine. Os Visual Components fornecem blocos prontos para uso para montar sua própria interface do usuário para um aplicativo de OCR. Você pode mostrar ao usuário do seu aplicativo os documentos em processamento, permitir que ele verifique os resultados do reconhecimento e edite o texto reconhecido. Os Visual Components podem ser úteis em todos os cenários de processamento. Por exemplo, a edição de texto pode ser disponibilizada no cenário de Conversão de Documentos, enquanto a verificação é extremamente útil no cenário de Reconhecimento em Nível de Campo. Vamos analisar o aplicativo simples de OCR do ponto de vista da interface do usuário. Um documento passa por várias etapas de processamento:
  1. Abertura de imagem
Você pode mostrar a imagem aberta ao usuário e permitir que ele navegue entre as páginas do documento em processamento.
  1. Reconhecimento
Para extrair dados de texto de um documento, é necessário reconhecê-lo. Você pode mostrar o texto reconhecido ao usuário e permitir que ele o edite.
  1. Verificação
Talvez seja necessário verificar o texto reconhecido. Você pode mostrar ao usuário tanto a imagem de origem quanto o texto reconhecido, para que possam ser comparados.
  1. Exportação
O documento reconhecido pode ser salvo em um formato adequado ou aberto em um aplicativo externo. A seguir, apresentamos uma descrição detalhada de como usar os Visual Components do ABBYY FineReader Engine.
Os Visual Components exigem o Microsoft Windows Common Controls versão 6.0 ou posterior.
O Visual Studio permite inserir controles ActiveX na sua caixa de diálogo. Você pode adicionar os Visual Components à janela Toolbox (a Toolbox está disponível no menu View) e trabalhar com eles:
  1. No menu Tools, clique em Choose Toolbox Items (ou Add/Remove Toolbox Items).
  2. Na caixa de diálogo que é aberta, clique na guia COM Components e selecione os componentes ABBYY DocumentViewer, ABBYY ImageViewer, ABBYY ZoomViewer, ABBYY TextEditor e ABBYY TextValidator.
  3. Clique em OK. Os ícones dos itens selecionados ficarão disponíveis na Toolbox. Você pode arrastar e soltar o ícone de cada Visual Component em uma superfície de design. Essa ação também adiciona o código básico para criar uma instância do Visual Component no arquivo de projeto ativo.
  4. Depois de adicionar o Visual Component a um formulário, você pode especificar as propriedades disponíveis dele no Visual Studio. Por exemplo, a propriedade SettingsPath de cada componente deve ser especificada em tempo de design.
O designer do Visual Studio não oferece suporte a controles ActiveX de 64 bits. Por isso, você não pode adicionar Visual Components de 64 bits a um aplicativo Windows Forms. Esse é um comportamento conhecido; problemas semelhantes são descritos para controles Microsoft ActiveX, por exemplo, em http://support.microsoft.com/kb/980533/en-us. Como solução alternativa para esse problema, o FineReader Engine instala Visual Components de 32 bits e 64 bits se você selecionar a instalação dos Visual Components para desenvolvedor em um sistema de 64 bits. Nesse caso, no designer do Visual Studio, você pode trabalhar com a versão de 32 bits dos componentes. Um aplicativo de 64 bits que usa Visual Components não precisa ter os Visual Components de 32 bits instalados.
O componente Component Synchronizer permite sincronizar os Visual Components no aplicativo. Isso significa que todas as operações de visualização e edição serão processadas de forma síncrona em todos os componentes conectados. Para sincronizar os Visual Components:
  1. Ao carregar o formulário, crie um novo objeto ComponentSynchronizer.
  2. Use as propriedades DocumentViewer, ImageViewer, ZoomViewer, TextEditor e TextValidator do objeto ComponentSynchronizer para conectar os componentes ao sincronizador.
Quando um componente é conectado ao sincronizador por meio da API, o Component Synchronizer funciona conforme descrito em Como o Component Synchronizer funciona.

C#

private void VisualComponentsForm_Load(object sender, System.EventArgs e)
{
 // Conectar componentes ao 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 começar a trabalhar com o ABBYY FineReader Engine, é necessário criar o objeto Engine. Para criar o objeto Engine, você pode usar a função exportada InitializeEngine. Veja também outras formas de carregar o objeto Engine. Você pode carregar o objeto Engine durante o carregamento da imagem ou na inicialização do formulário.

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 exibir a imagem nos Visual Components, você deve abri-la. Você pode implementar o procedimento a seguir para abrir imagens:
  1. Para carregar imagens de um único documento, crie o objeto FRDocument e adicione imagens a ele. Você pode fazer uma das seguintes opções:
  2. Anexe o documento ao Component Synchronizer usando a propriedade Document do objeto ComponentSynchronizer.
O procedimento pode tratar o evento “on click” de um botão que abre imagens.

C#

private void openImage( string imageFileName )
{
 // Carregar ABBYY FineReader Engine
 if( Engine == null )
 {
  loadEngine();
  Engine.ParentWindow = this.Handle.ToInt32();
  Engine.ApplicationTitle = this.Text;
 }
 // Abrir imagem
 Document = Engine.CreateFRDocumentFromImage( imageFileName, null );
 // Anexar imagem aos Visual Components usando Synchronizer
 Synchronizer.Document = Document;
}
O reconhecimento de uma imagem no Visual Components pode ser iniciado tanto com os comandos disponíveis nos componentes quanto com a API do FineReader Engine (consulte, por exemplo, o método Process do objeto FRDocument).Você pode implementar o seguinte procedimento de reconhecimento:
  1. Reconheça o documento usando os métodos do objeto FRDocument.
  2. O documento foi alterado fora da interface gráfica do Visual Components, portanto é necessário informar essas alterações ao Visual Components. Use o método Update do objeto FRPage para cada página do documento.
O procedimento pode tratar o evento “on click” de um botão que chama o reconhecimento.

C#

private void recognizeDocument()
{
 // Reconhecer e sintetizar todo o documento
 Document.Process( Synchronizer.ProcessingParams );
 // Informar as alterações ao Visual Components
 for( int i = 0; i < Document.Pages.Count; i++ )
 {
  Document.Pages[i].Update();
 }
}
Os dados reconhecidos podem ser verificados usando o componente Text Validator. Ele fornece uma interface de usuário que permite verificar se um caractere foi reconhecido corretamente e corrigi-lo, se necessário.Você pode implementar o seguinte procedimento de verificação:
  1. Adicione o componente Text Validator ao formulário atual ou crie um novo formulário para esse componente.
  2. Anexe o componente Text Validator ao Component Synchronizer. Use a propriedade TextValidator do objeto ComponentSynchronizer.
  3. Inicie o processo de verificação usando o método Spell do objeto TextValidator.

C#

private void validateButton_Click(object sender, System.EventArgs e)
{
 if( validatorForm == null )
 {
  // Criar um novo formulário para validação
  validatorForm = new ValidatorForm();
  validatorForm.Owner = this;
  // Anexar o validador ao sincronizador
  Synchronizer.TextValidator = ( FineReaderVisualComponents.TextValidator ) validatorForm.TextValidator.GetOcx();
  validatorForm.Show();
  // Validar o texto reconhecido no documento anexado
  validatorForm.TextValidator.Spell( null );
 }
}
O documento reconhecido pode ser salvo tanto com os comandos disponíveis no Document Viewer quanto com a API do FineReader Engine.Por exemplo, use o método Export do objeto FRDocument, passando a constante FileExportFormatEnum como um dos parâmetros. Depois de concluir o trabalho com o objeto FRDocument, libere todos os recursos usados por ele. Use o método IFRDocument::Close. O procedimento pode tratar o evento “on click” de um botão que chama a exportação.

C#

// Salvar um documento reconhecido em RTF
Document.Export( "<File name>", FREngine.FileExportFormatEnum.FEF_RTF, null );
// Liberar o objeto FRDocument
Document.Close();
Após concluir seu trabalho com o ABBYY FineReader Engine, você precisa descarregar o objeto Engine. Para isso, use a função exportada DeinitializeEngine.
Recomendamos que você libere o Component Synchronizer antes de desinicializar o Engine.
O procedimento pode tratar o evento “on click” de um botão que fecha a janela do aplicativo.

C#

[DllImport( "FREngine.dll", CharSet=CharSet.Unicode ), PreserveSig]
private static extern int DeinitializeEngine();
private void unloadEngine()
{
 if( Engine != null )
 {// Se o Engine foi carregado, descarregue-o
  Engine = null;
  int hresult = DeinitializeEngine();
  Marshal.ThrowExceptionForHR( hresult );
 }
}
Você pode encontrar uma implementação de exemplo do procedimento descrito no exemplo VisualComponents.

Veja também

Personalizando o menu de contexto e a barra de ferramentas de um componente visual