Vai al contenuto principale
Questo argomento si applica a FRE for Linux.
Questo metodo di caricamento consente di caricare ABBYY FineReader Engine come server out-of-process in un processo separato. Se si utilizza questo metodo, tutti gli oggetti di ABBYY FineReader Engine sono completamente thread-safe. Ogni istanza di FineReader Engine viene eseguita in un processo separato contemporaneamente alle altre istanze. Ciò consente di creare un pool di processori e di sfruttare appieno la potenza di calcolo della CPU disponibile. Per questo motivo, questo metodo è particolarmente adatto alle applicazioni server. Per caricare Engine in un processo separato come server out-of-process, utilizzare i file forniti nel pacchetto di distribuzione:
  • Il file OutprocEngineLoader.h dichiara i metodi di inizializzazione e deinizializzazione dell’oggetto Engine (per C++ utilizzare le funzioni InitializeEngine e ExplicitlyUnload dichiarate in questo file di intestazione).
  • Il file FREgnineOutproc.h è incluso in OutprocEngineLoader.h. È l’equivalente del file FREngine.h per le soluzioni multithread e supporta gli stessi metodi e le stesse interfacce, ad eccezione dei metodi per il conteggio dei riferimenti e dei metodi con parametri SAFEARRAY.
  • I metodi dichiarati in FREngineOutproc.h non gestiscono i cicli di riferimento. Per questo motivo, nel file OutprocSafePtr.h è disponibile un’implementazione specifica di SafePtr, che è possibile trovare negli esempi di codice che descrivono il caricamento come server out-of-process. È possibile includere questo file di intestazione oppure crearne uno personalizzato.
  • Ogni caricamento di Engine in un processo separato richiede una porta TCP. Il file di configurazione OutprocConfig.ini contiene l’intervallo delle porte disponibili per la comunicazione tra processi.
  • Se l’applicazione è sviluppata in C++, collegare inoltre al progetto la libreria libOutprocClientLib.so.
  • Se si utilizza il wrapper Java, usare com.abbyy.Outproc.FREngine.jar invece di com.abbyy.FREngine.jar. Questi file sono inclusi nel pacchetto di distribuzione di ABBYY FineReader Engine distribution package.
Vedere gli esempi di codice Hello (Outproc) e Multithreading, che mostrano come caricare Engine come server out-of-process e forniscono una soluzione riutilizzabile per applicazioni multithread in C++ e Java. L’oggetto Engine caricato come server out-of-process presenta alcune particolarità nell’uso degli oggetti e dei metodi di ABBYY FineReader Engine:
  • È necessario specificare la modalità sequenziale di elaborazione dei documenti impostando la proprietà MultiProcessingMode dell’oggetto MultiProcessingParams su MPM_Sequential.
  • È necessario passare NULL per i parametri derivati da IUnknown. Questi parametri sono comunemente utilizzati nei metodi di esportazione. Per passare i parametri di esportazione in modo alternativo, creare un profilo utente con le impostazioni desiderate.
  • L’oggetto Engine caricato come server out-of-process non supporta l’uso di:
    • callback e metodi con parametri derivati da callback
    • interfacce e metodi per l’apertura di immagini dalla memoria
È anche possibile velocizzare l’iterazione del layout del documento con lo schema descritto in Working with Layout and Blocks.