Vai al contenuto principale
I Visual Components sono implementati in FRE per Windows.
Quando si crea un’applicazione con un’interfaccia utente, è possibile utilizzare i Visual Components di ABBYY FineReader Engine. I Visual Components forniscono blocchi pronti all’uso per realizzare un’interfaccia utente personalizzata per un’applicazione OCR. È possibile mostrare all’utente dell’applicazione i documenti in elaborazione, consentirgli di verificare i risultati del riconoscimento e di modificare il testo riconosciuto. I Visual Components possono risultare utili in tutti gli scenari di elaborazione. Ad esempio, la modifica del testo può essere prevista nello scenario Document Conversion, mentre la verifica è estremamente utile nello scenario Field-Level Recognition. Esaminiamo la semplice applicazione OCR dal punto di vista dell’interfaccia utente. Un documento passa attraverso diverse fasi di elaborazione:
  1. Apertura dell’immagine
È possibile mostrare all’utente l’immagine aperta e consentirgli di spostarsi tra le pagine del documento in elaborazione.
  1. Riconoscimento
Per estrarre dati testuali da un documento, il documento deve essere riconosciuto. È possibile mostrare all’utente il testo riconosciuto e consentirgli di modificarlo.
  1. Verifica
Il testo riconosciuto potrebbe dover essere verificato. È possibile mostrare all’utente sia l’immagine di origine sia il testo riconosciuto, in modo che possano essere confrontati.
  1. Esportazione
Il documento riconosciuto può essere salvato in un formato adatto oppure aperto in un’applicazione esterna. Di seguito è riportata una descrizione dettagliata di come utilizzare i Visual Components di ABBYY FineReader Engine.
I Visual Components richiedono Microsoft Windows Common Controls versione 6.0 o successiva.
Visual Studio consente di inserire controlli ActiveX nella finestra di dialogo. È possibile aggiungere i Visual Components alla finestra Toolbox (la Toolbox è disponibile dal menu View) e lavorare con essi:
  1. Nel menu Tools, fare clic su Choose Toolbox Items (oppure Add/Remove Toolbox Items).
  2. Nella finestra di dialogo che si apre, fare clic sulla scheda COM Components e selezionare i componenti ABBYY DocumentViewer, ABBYY ImageViewer, ABBYY ZoomViewer, ABBYY TextEditor e ABBYY TextValidator.
  3. Fare clic su OK. Le icone degli elementi selezionati sono ora disponibili nella Toolbox. È possibile trascinare ogni icona di Visual Component su una superficie di progettazione. Questa azione aggiunge anche il codice di base per creare un’istanza del Visual Component nel file di progetto attivo.
  4. Dopo aver aggiunto il Visual Component a un form, è possibile specificarne le proprietà disponibili in Visual Studio. Ad esempio, la proprietà SettingsPath di ciascun componente deve essere specificata in fase di progettazione.
Il designer di Visual Studio non supporta i controlli ActiveX a 64 bit. Per questo motivo, non è possibile aggiungere Visual Components a 64 bit a un’applicazione Windows Form. Si tratta di un comportamento noto; problemi simili sono descritti per i controlli Microsoft ActiveX, ad esempio in http://support.microsoft.com/kb/980533/en-us. Come soluzione alternativa a questo problema, FineReader Engine installa sia i Visual Components a 32 bit sia quelli a 64 bit se si seleziona l’installazione dei Visual Components per sviluppatori su un sistema a 64 bit. In questo caso, nel designer di Visual Studio è possibile lavorare con la versione a 32 bit dei componenti. Un’applicazione a 64 bit che utilizza i Visual Components non richiede l’installazione dei Visual Components a 32 bit.
Il componente Component Synchronizer consente di sincronizzare i Visual Components nell’applicazione. Ciò significa che tutte le operazioni di visualizzazione e modifica verranno eseguite in modo sincrono in tutti i componenti connessi. Per sincronizzare i Visual Components:
  1. Al caricamento del form, creare un nuovo oggetto ComponentSynchronizer.
  2. Utilizzare le proprietà DocumentViewer, ImageViewer, ZoomViewer, TextEditor e TextValidator dell’oggetto ComponentSynchronizer per collegare i componenti al sincronizzatore.
Quando un componente è collegato al sincronizzatore tramite l’API, Component Synchronizer funziona come descritto in Come funziona Component Synchronizer.

C#

private void VisualComponentsForm_Load(object sender, System.EventArgs e)
{
 // Collega i componenti 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();
}
Per iniziare a lavorare con ABBYY FineReader Engine, è necessario creare l’oggetto Engine. Per creare l’oggetto Engine, è possibile utilizzare la funzione esportata InitializeEngine. Vedere anche altri modi per caricare l’oggetto Engine. È possibile caricare l’oggetto Engine durante il caricamento dell’immagine o l’inizializzazione del form.

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 );
}
Per visualizzare l’immagine nei Visual Components, è necessario aprirla. È possibile implementare la seguente procedura per aprire l’immagine:
  1. Per caricare le immagini di un singolo documento, è necessario creare l’oggetto FRDocument e aggiungervi le immagini. È possibile procedere in uno dei seguenti modi:
  2. Collegare il documento a Component Synchronizer utilizzando la proprietà Document dell’oggetto ComponentSynchronizer.
La procedura può gestire l’evento di clic di un pulsante che apre le immagini.

C#

private void openImage( string imageFileName )
{
 // Carica ABBYY FineReader Engine
 if( Engine == null )
 {
  loadEngine();
  Engine.ParentWindow = this.Handle.ToInt32();
  Engine.ApplicationTitle = this.Text;
 }
 // Apri immagine
 Document = Engine.CreateFRDocumentFromImage( imageFileName, null );
 // Collega l'immagine ai Visual Components utilizzando Synchronizer
 Synchronizer.Document = Document;
}
Il riconoscimento di un’immagine in Visual Components può essere avviato usando i comandi disponibili nei componenti oppure tramite l’API di FineReader Engine (vedi, ad esempio, il metodo Process dell’oggetto FRDocument).Puoi implementare la seguente procedura per il riconoscimento:
  1. Riconosci il documento usando i metodi dell’oggetto FRDocument.
  2. Il documento è stato modificato al di fuori della GUI di Visual Components, pertanto devi segnalare le modifiche a Visual Components. Usa il metodo Update dell’oggetto FRPage per ogni pagina del documento.
La procedura può gestire l’evento “on click” di un pulsante che avvia il riconoscimento.

C#

private void recognizeDocument()
{
 // Riconosci ed elabora l'intero documento
 Document.Process( Synchronizer.ProcessingParams );
 // Segnala le modifiche a Visual Components
 for( int i = 0; i < Document.Pages.Count; i++ )
 {
  Document.Pages[i].Update();
 }
}
I dati riconosciuti possono essere verificati usando il componente Text Validator. Questo componente fornisce un’interfaccia utente che consente di controllare se un carattere è stato riconosciuto correttamente e, se necessario, di correggerlo.Puoi implementare la seguente procedura per la verifica:
  1. Aggiungi il componente Text Validator al modulo corrente oppure crea un nuovo modulo dedicato.
  2. Collega il componente Text Validator a Component Synchronizer. Usa la proprietà TextValidator dell’oggetto ComponentSynchronizer.
  3. Avvia il processo di verifica usando il metodo Spell dell’oggetto TextValidator.

C#

private void validateButton_Click(object sender, System.EventArgs e)
{
 if( validatorForm == null )
 {
  // Crea un nuovo modulo per la verifica
  validatorForm = new ValidatorForm();
  validatorForm.Owner = this;
  // Collega il validator al synchronizer
  Synchronizer.TextValidator = ( FineReaderVisualComponents.TextValidator ) validatorForm.TextValidator.GetOcx();
  validatorForm.Show();
  // Verifica il testo riconosciuto nel documento collegato
  validatorForm.TextValidator.Spell( null );
 }
}
Il documento riconosciuto può essere salvato usando i comandi disponibili nel Document Viewer, oppure tramite l’API di FineReader Engine.Ad esempio, usa il metodo Export dell’oggetto FRDocument specificando la costante FileExportFormatEnum come uno dei parametri. Dopo aver terminato il lavoro con l’oggetto FRDocument, rilascia tutte le risorse usate da questo oggetto. Usa il metodo IFRDocument::Close. La procedura può gestire l’evento “on click” di un pulsante che avvia l’esportazione.

C#

// Salva un documento riconosciuto in RTF
Document.Export( "<File name>", FREngine.FileExportFormatEnum.FEF_RTF, null );
// Rilascia l'oggetto FRDocument
Document.Close();
Dopo aver terminato il lavoro con ABBYY FineReader Engine, devi scaricare l’oggetto Engine. Per farlo, usa la funzione esportata DeinitializeEngine.
Ti consigliamo di rilasciare Component Synchronizer prima della deinizializzazione di Engine.
La procedura può gestire l’evento “on click” di un pulsante che chiude la finestra dell’applicazione.

C#

[DllImport( "FREngine.dll", CharSet=CharSet.Unicode ), PreserveSig]
private static extern int DeinitializeEngine();
private void unloadEngine()
{
 if( Engine != null )
 {// Se Engine è stato caricato, scaricalo
  Engine = null;
  int hresult = DeinitializeEngine();
  Marshal.ThrowExceptionForHR( hresult );
 }
}
Puoi trovare un’implementazione di esempio della procedura descritta nell’esempio VisualComponents.

Vedi anche

Personalizzazione del menu contestuale e della barra degli strumenti di un Visual Component