Zum Hauptinhalt springen
Dieses Thema gilt für FRE unter Linux.
Mit dieser Lademethode können Sie ABBYY FineReader Engine als Out-of-Process-Server in einen separaten Prozess laden. Wenn diese Lademethode verwendet wird, sind alle ABBYY FineReader Engine-Objekte vollständig threadsicher. Jede FineReader Engine-Instanz läuft gleichzeitig mit den anderen Instanzen in einem separaten Prozess. So können Sie einen Pool von Prozessoren erstellen und die verfügbare CPU-Leistung optimal nutzen. Daher eignet sich diese Methode besonders für Serveranwendungen. Verwenden Sie zum Laden von Engine als Out-of-Process-Server in einen separaten Prozess die in der Distribution enthaltenen Dateien:
  • Die Datei OutprocEngineLoader.h deklariert die Initialisierungs- und Deinitialisierungsmethoden des Engine-Objekts (für C++ verwenden Sie die in dieser Header-Datei deklarierten Funktionen InitializeEngine und ExplicitlyUnload).
  • Die Datei FREgnineOutproc.h ist in OutprocEngineLoader.h eingebunden. Sie ist das Gegenstück zur Datei FREngine.h für Multithreading-Lösungen und unterstützt dieselben Methoden und Schnittstellen, mit Ausnahme der Methoden zur Referenzzählung und der Methoden mit SAFEARRAY-Parametern.
  • Die in FREngineOutproc.h deklarierten Methoden behandeln keine Referenzzyklen. Deshalb ist in der Datei OutprocSafePtr.h eine spezielle Implementierung von SafePtr enthalten, die Sie in den Codebeispielen zum Laden als Out-of-Process-Server finden. Sie können diese Header-Datei einbinden oder eine eigene erstellen.
  • Jedes Laden von Engine in einen separaten Prozess erfordert einen TCP-Port. Die Konfigurationsdatei OutprocConfig.ini enthält den Bereich verfügbarer Ports für die Interprozesskommunikation.
  • Wenn Ihre Anwendung mit C++ arbeitet, binden Sie zusätzlich die Bibliothek libOutprocClientLib.so in Ihr Projekt ein.
  • Wenn Sie mit dem Java-Wrapper arbeiten, verwenden Sie com.abbyy.Outproc.FREngine.jar anstelle von com.abbyy.FREngine.jar. Diese Dateien sind im ABBYY FineReader Engine-Distributionspaket enthalten.
Siehe die Codebeispiele Hello (Outproc) und Multithreading, die das Laden von Engine als Out-of-Process-Server demonstrieren und eine wiederverwendbare Lösung für Multithreading-Anwendungen in C++ und Java bereitstellen. Das als Out-of-Process-Server geladene Engine-Objekt weist bei der Verwendung von ABBYY FineReader Engine-Objekten und -Methoden folgende Besonderheiten auf:
  • Sie müssen den sequenziellen Modus der Dokumentverarbeitung festlegen, indem Sie die Eigenschaft MultiProcessingMode des Objekts MultiProcessingParams auf MPM_Sequential setzen.
  • Sie müssen für Parameter, die von IUnknown abgeleitet sind, NULL übergeben. Diese Parameter werden üblicherweise in Exportmethoden verwendet. Um die Exportparameter auf andere Weise zu übergeben, erstellen Sie ein Benutzerprofil mit den gewünschten Einstellungen.
  • Das als Out-of-Process-Server geladene Engine-Objekt unterstützt nicht die Arbeit mit:
    • Callbacks und Methoden mit Parametern, die von Callbacks abgeleitet sind
    • Schnittstellen und Methoden zum Öffnen von Bildern aus dem Speicher
Sie können die Iteration des Dokumentlayouts auch mit dem in Working with Layout and Blocks beschriebenen Verfahren beschleunigen.