Anwendungsszenarien
- Konvertierung mehrseitiger Dokumente mit vielen Seiten. Dazu gehören in der Regel Bücher, lange Berichte usw. In diesem Fall können Sie die Seiten des Dokuments parallel erkennen, anschließend die Synthese im Hauptprozess durchführen und danach erneut parallel exportieren. Wenn Sie einen Pool von Engines verwenden, können Sie auch mehrere mehrseitige Dokumente gleichzeitig verarbeiten. Dabei kann der Speicherverbrauch jedoch sehr hoch sein und sogar zu „Nicht genügend Speicher“-Fehlern führen.
- Konvertierung einer großen Anzahl einseitiger Dokumente. Dies ist der Fall, wenn Sie Rechnungen, Verträge, Briefe usw. verarbeiten. Die Parallelverarbeitung ist in dieser Situation am einfachsten, da einseitige Dokumente nicht voneinander abhängen und nicht gleichzeitig große Speichermengen benötigen.
- Verarbeitung einer großen Anzahl von Bildern und Durchsuchen dieser Bilder nach benötigten Informationen oder sonstige Verarbeitung der Erkennungsergebnisse. Möglicherweise müssen Sie die meisten davon nicht in ein bearbeitbares Format konvertieren, sodass die Geschwindigkeit von Synthese und Export keine Rolle spielt. Der Vorgang, der in mehreren Prozessen ausgeführt wird, besteht darin, die Layout-Blöcke zu durchlaufen und auf die Erkennungsergebnisse für Textblöcke zuzugreifen.
Wenn Sie die Parallelverarbeitung für den Export verwenden möchten, beachten Sie, dass diese Funktion nur für den Export in PDF (außer im Modus
TextOnly) und in das Format PPTX unterstützt wird.Empfehlungen und Einschränkungen
-
Für die Parallelverarbeitung mehrseitiger Dokumente empfehlen wir die Verwendung von FRDocument. Dies ist die am einfachsten zu implementierende Multiprocessing-Methode, da Sie keine zusätzlichen Schnittstellen implementieren müssen.
Öffnen, Vorverarbeitung, Analyse und Erkennung werden parallel durchgeführt; die Dokumentsynthese erfolgt sequenziell im Hauptprozess, anschließend werden der Export in PDF (außer im TextOnly-Modus) und in das PPTX-Format parallel durchgeführt. -
Für die Verarbeitung vieler einseitiger Dokumente, die von einer Quelle (z. B. einem Scanner) empfangen werden, empfehlen wir BatchProcessor.
Der Vorteil dieser Methode besteht darin, dass sie sich verwenden lässt, wenn Sie die Anzahl der Dokumente nicht im Voraus kennen, die Dokumente unterschiedliche Typen haben können und direkt nach ihrem Eintreffen verarbeitet werden müssen. Der Nachteil besteht darin, dass sie mehr Implementierungsaufwand erfordert: Sie müssen Schnittstellen für einen Datei-Adapter und eine benutzerdefinierte Bildquelle implementieren.
Alle Verarbeitungsstufen werden parallel ausgeführt, da bei einseitigen Dokumenten die Seiten- und Dokumentsynthese für jede Seite separat erfolgen.
Paralleler Export wird in Szenarien mit Batch Processor nicht unterstützt.
- Um viele einseitige Dokumente vollständig parallel zu verarbeiten, können Sie einen Pool von Engines verwenden, die mithilfe von COM in separaten Prozessen geladen werden. Diese Methode ist hinsichtlich der Geschwindigkeit am effizientesten und beseitigt automatisch alle Schwierigkeiten im Zusammenhang mit Multithreading: Alle Operationen mit den Objekten von ABBYY FineReader Engine werden mittels COM serialisiert. Sie hat jedoch einige Einschränkungen:
- aufgrund der Verwendung von COM müssen Sie FREngine.dll registrieren;
- wenn Ihr Code in C++ geschrieben ist, erfordert die Arbeit mit COM mehr Routinecode als beispielsweise in C#;
- in diesem Fall läuft die Verarbeitung in einem anderen Prozess ab, sodass Sie Bilder nicht aus dem Speicher öffnen können, und das Durchlaufen der Erkennungsergebnisse dauert länger, da jede Anforderung an einen anderen Prozess und wieder zurück übergeben werden muss;
- und schließlich bedeutet das Laden mehrerer Engine-Instanzen einen höheren Speicherverbrauch, insbesondere da in diesem Fall alle Verarbeitungsstufen parallel ausgeführt werden und mehrere Synthesevorgänge gleichzeitig ablaufen können, was den Speicherverbrauch weiter erhöht.
- Um die Ereignisse abzufangen und zu verarbeiten, die während der Parallelverarbeitung auftreten, können Sie die Schnittstelle IParallelProcessingCallback verwenden. Diese Schnittstelle kann bei der Handhabung problematischer Situationen sehr nützlich sein. Wenn beispielsweise ein Timeout-Fehler auftritt, bietet die Schnittstelle IParallelProcessingCallback je nach Benutzerpräferenzen mehrere Lösungen für das Problem. Weitere Informationen finden Sie unter IParallelProcessingCallback::OnWaitIntervalExceeded.
Ereignisse, die während der Parallelverarbeitung einer Seite auftreten, werden in Ereignisse für das gesamte Dokument umgewandelt.
Ergebnisse der Geschwindigkeitstests
| <br /> | Einseitige Dokumente | Ein mehrseitiges Dokument | Durchsuchen der Ergebnisse ohne Export |
|---|---|---|---|
| Sequentielle Verarbeitung | 60 | 51 | 87 |
| Verarbeitung mit FRDocument | 41 | 117 | 57 |
| Verarbeitung mit FRDocument (mit PageFlushingPolicy = PFP_KeepInMemory) | 55 | 141 | 82 |
| Verarbeitung mit Batch Processor | 99 | 115 | 294 |
| Verarbeitung mit einem Pool von Engines | 165 | 10 | 102 |
Verarbeitung mit dem FRDocument-Objekt
- Legen Sie den Wert der Eigenschaft MultiProcessingMode des Unterobjekts MultiProcessingParams des Objekts Engine fest. Die Parallelverarbeitung wird verwendet, wenn diese Eigenschaft auf MPM_Parallel oder MPM_Auto gesetzt ist und sowohl die Anzahl der Seiten im Dokument als auch die Anzahl der verfügbaren CPU-Kerne größer als eins ist.
- Stellen Sie die Anzahl der auszuführenden Prozesse mit der Eigenschaft RecognitionProcessesCount ein und geben Sie bei Bedarf die Werte weiterer Eigenschaften an.
- AddImageFile, AddImageFileFromMemory, AddImageFileFromStream, AddImageFileWithPassword, AddImageFileWithPasswordCallback
- Preprocess, PreprocessPages
- Analyze, AnalyzePages
- Recognize, RecognizePages
- Process, ProcessPages
- Export, ExportPages, ExportToMemory — nur für den Export in PDF (außer im TextOnly-Modus) und in das PPTX-Format
C#-Code
C#-Code
Verarbeitung mit dem Batch Processor
- Implementieren Sie die Schnittstellen IImageSource und IFileAdapter, die Zugriff auf die Bildquelle und die darin enthaltenen Dateien bereitstellen.
- [optional] Implementieren Sie die Schnittstelle IAsyncProcessingCallback, um die Verarbeitung zu steuern. Mit den Methoden dieser Schnittstelle können Sie Fehler behandeln und/oder die Verarbeitung abbrechen.
- [optional] Richten Sie Multiprocessing mithilfe des Unterobjekts MultiProcessingParams des Objekts Engine ein. Beachten Sie, dass die Eigenschaft MultiProcessingMode nicht gesetzt werden muss, da bei der Arbeit mit dem Batch Processor standardmäßig Parallelverarbeitung verwendet wird. Passen Sie die Anzahl der auszuführenden Prozesse mithilfe der Eigenschaft RecognitionProcessesCount an und geben Sie bei Bedarf Werte für weitere Eigenschaften an.
- Rufen Sie die Methode CreateBatchProcessor des Engine-Objekts auf, um das BatchProcessor-Objekt zu erhalten.
- Rufen Sie die Methode Start dieses Objekts auf, um den Prozessor zu initialisieren und asynchrone Erkennungsprozesse zu starten. Beim Aufruf dieser Methode können Sie die Bildquelle angeben und Referenzen auf die Schnittstelle IAsyncProcessingCallback sowie Parameterobjekte übergeben.
- Rufen Sie die Methode GetNextProcessedPage in einer Schleife auf, bis sie 0 zurückgibt. Das bedeutet, dass sich keine Bilder mehr in der Quelle befinden und alle verarbeiteten Bilder an den Benutzer zurückgegeben wurden.
C#-Code
C#-Code
Verarbeitung mit einem Pool von Engines
C# code
C# code
- Kontoberechtigungen können mit dem Dienstprogramm DCOM Config eingerichtet werden (geben Sie entweder DCOMCNFG in die Befehlszeile ein oder wählen Sie Systemsteuerung > Verwaltung > Komponentendienste). Suchen Sie in der Konsolenstruktur den Ordner Komponentendienste > Computer > Arbeitsplatz > DCOM-Konfiguration, klicken Sie mit der rechten Maustaste auf ABBYY FineReader Engine 12.5 Loader (Local Server), und klicken Sie auf Properties. Ein Dialogfeld wird geöffnet. Klicken Sie auf die Registerkarte Security. Klicken Sie unter Launch Permissions auf Customize und dann auf Edit, um die Konten festzulegen, die die Anwendung starten dürfen.
Beachten Sie, dass auf einem 64-Bit-Betriebssystem die registrierte DCOM-Anwendung in der 32-Bit-MMC-Konsole verfügbar ist, die mit der folgenden Befehlszeile gestartet werden kann:
- Um
FREngine.dllbei der Installation Ihrer Anwendung auf einem Computer des Endbenutzers zu registrieren, verwenden Sie das Dienstprogrammregsvr32. Wenn Sie ein 64-Bit-Betriebssystem verwenden, wird standardmäßig die 64-Bit-Version vonregsvr32ausgeführt. Verwenden Sie die folgende Befehlszeile:
- Wenn Sie Engine als Out-of-Process-Server implementieren, legen Sie den sequenziellen Modus der Dokumentverarbeitung fest, indem Sie die Eigenschaft MultiProcessingMode des Objekts MultiProcessingParams auf MPM_Sequential setzen.
