Anwendungsszenarien
- Konvertierung mehrseitiger Dokumente mit einer hohen Seitenzahl. Dazu gehört in der Regel die Verarbeitung von Büchern, langen Berichten 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, allerdings kann der Speicherverbrauch sehr hoch sein und sogar zu „Nicht genügend Arbeitsspeicher“-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 diesem Szenario am einfachsten, da einseitige Dokumente nicht voneinander abhängen und nicht gleichzeitig große Mengen an Speicher benötigen.
- Verarbeitung einer großen Anzahl von Bildern und deren Durchsuchung nach benötigten Informationen oder anderweitige Arbeit mit Erkennungsergebnissen. 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, 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 PPTX-Formate 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 Methode für das Multiprocessing, da Sie keine zusätzlichen Schnittstellen implementieren müssen.
Das Öffnen, die Vorverarbeitung, die Analyse und die Erkennung werden parallel ausgeführt; die Dokumentensynthese erfolgt sequenziell im Hauptprozess. Anschließend wird der Export in die Formate PDF (außer im Modus TextOnly) und PPTX parallel ausgeführt. -
Um viele einseitige Dokumente zu verarbeiten, die von einer Quelle (z. B. einem Scanner) empfangen werden, empfehlen wir BatchProcessor.
Der Vorteil dieser Methode besteht darin, dass sie sich eignet, wenn Sie die Anzahl der Dokumente im Voraus nicht kennen, die Dokumente unterschiedliche Typen haben können und direkt beim Eintreffen verarbeitet werden müssen. Der Nachteil ist, dass sie einen höheren Implementierungsaufwand erfordert: Sie müssen Schnittstellen für einen Dateiadapter und eine benutzerdefinierte Bildquelle implementieren.
Alle Verarbeitungsstufen werden parallel ausgeführt, da bei einseitigen Dokumenten die Seiten- und die Dokumentensynthese für jede Seite separat erfolgen.
Der parallele Export wird in Szenarien mit Batch Processor nicht unterstützt.
Ereignisse, die während der Parallelverarbeitung einer Seite auftreten, werden in Ereignisse für das gesamte Dokument umgewandelt.
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.
- Passen Sie die Anzahl der auszuführenden Prozesse mit der Eigenschaft RecognitionProcessesCount an und geben Sie bei Bedarf die Werte anderer Eigenschaften an.
- AddImageFile, AddImageFileFromMemory, AddImageFileFromStream, AddImageFileWithPassword, AddImageFileWithPasswordCallback
- Preprocess, PreprocessPages
- Analyze, AnalyzePages
- Recognize, RecognizePages
- Process, ProcessPages
- Export, ExportPages, ExportToMemory — nur für den Export in die Formate PDF (außer im Modus TextOnly) und PPTX
Verarbeitung mit Batch Processor
- Implementieren Sie die Schnittstellen IImageSource und IFileAdapter, die den 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] Konfigurieren Sie Multiprocessing mithilfe des Unterobjekts MultiProcessingParams des Objekts Engine. Beachten Sie, dass Sie die Eigenschaft MultiProcessingMode nicht festlegen müssen, da bei der Arbeit mit Batch Processor standardmäßig Parallelverarbeitung verwendet wird. Legen Sie die Anzahl der auszuführenden Prozesse mit der Eigenschaft RecognitionProcessesCount fest und geben Sie bei Bedarf die Werte anderer Eigenschaften an.
- Rufen Sie die Methode CreateBatchProcessor des Engine-Objekts auf, um das BatchProcessor-Objekt abzurufen.
- Rufen Sie die Methode Start dieses Objekts auf, um den Prozessor zu initialisieren und asynchrone Erkennungsprozesse zu starten. In diesem Methodenaufruf können Sie die Bildquelle angeben und Verweise auf die Schnittstelle IAsyncProcessingCallback sowie auf Parameterobjekte übergeben.
- Rufen Sie die Methode GetNextProcessedPage in einer Schleife auf, bis die Methode 0 zurückgibt. Das bedeutet, dass sich keine weiteren Bilder mehr in der Quelle befinden und alle verarbeiteten Bilder an den Benutzer zurückgegeben wurden.
