Scenari d’uso
- Conversione di documenti multipagina con un elevato numero di pagine. Questo implica generalmente l’elaborazione di libri, report lunghi e simili. In questo caso, è possibile riconoscere le pagine del documento in parallelo, eseguire la sintesi nel processo principale ed effettuare nuovamente l’esportazione in parallelo. Utilizzando un pool di Engine, è inoltre possibile elaborare simultaneamente più documenti multipagina, ma il consumo di memoria può essere elevato e portare persino a errori di tipo “out of memory”.
- Conversione di un gran numero di documenti di una sola pagina. Questo è il caso in cui si elaborano fatture, contratti, lettere e simili. L’elaborazione parallela è la soluzione più semplice per questa situazione, poiché i documenti di una sola pagina sono indipendenti l’uno dall’altro e non richiedono grandi quantità di memoria contemporaneamente.
- Elaborazione di un gran numero di immagini per ricercare informazioni specifiche o per lavorare in altro modo con i risultati del riconoscimento. Nella maggior parte dei casi potrebbe non essere necessario convertirle in un formato modificabile, pertanto la velocità di sintesi ed esportazione non rappresenta un problema. L’operazione che verrà eseguita in più processi consiste nell’iterare tra i Block del layout e nell’accedere ai risultati del riconoscimento per i block di testo.
Se si desidera utilizzare l’elaborazione parallela per l’esportazione, tenere presente che questa funzionalità è supportata solo per l’esportazione in PDF (ad eccezione della modalità TextOnly) e nei formati PPTX.
Raccomandazioni e restrizioni
-
Per l’elaborazione parallela di documenti multipagina, si consiglia di utilizzare FRDocument. Si tratta del metodo multiprocessing più semplice da implementare, poiché non richiede l’implementazione di interfacce aggiuntive.
Apertura, pre-elaborazione, analisi e riconoscimento vengono eseguiti in parallelo; la sintesi del documento avviene sequenzialmente nel processo principale, seguita dall’esportazione nei formati PDF (eccetto la modalità TextOnly) e PPTX, che viene eseguita in parallelo. -
Per elaborare numerosi documenti a pagina singola ricevuti da una sorgente (ad esempio uno scanner), si consiglia di utilizzare BatchProcessor.
Il vantaggio di questo approccio è che può essere impiegato quando non si conosce in anticipo il numero di documenti, che possono essere di tipi diversi e devono essere elaborati non appena arrivano. Lo svantaggio è che richiede un maggiore sforzo di implementazione: è necessario realizzare interfacce per un adattatore file e una sorgente di immagini personalizzata.
Tutte le fasi di elaborazione vengono eseguite in parallelo, poiché nel caso di documenti a pagina singola la sintesi della pagina e del documento avviene separatamente per ciascuna pagina.
L’esportazione parallela non è supportata negli scenari con Batch Processor.
Gli eventi che si verificano durante l’elaborazione parallela di una pagina vengono convertiti in eventi di un documento intero.
Elaborazione con l’oggetto FRDocument
- Impostare il valore della proprietà MultiProcessingMode del sottooggetto MultiProcessingParams dell’oggetto Engine. L’elaborazione parallela viene utilizzata se questa proprietà è impostata su MPM_Parallel o MPM_Auto e il numero di pagine nel documento e il numero di core CPU disponibili sono entrambi maggiori di uno.
- Regolare il numero di processi da eseguire tramite la proprietà RecognitionProcessesCount e specificare i valori delle altre proprietà, se necessario.
- AddImageFile, AddImageFileFromMemory, AddImageFileFromStream, AddImageFileWithPassword, AddImageFileWithPasswordCallback
- Preprocess, PreprocessPages
- Analyze, AnalyzePages
- Recognize, RecognizePages
- Process, ProcessPages
- Export, ExportPages, ExportToMemory — solo per l’esportazione in PDF (ad eccezione della modalità TextOnly) e nel formato PPTX
Elaborazione tramite Batch Processor
- Implementare le interfacce IImageSource e IFileAdapter, che forniscono l’accesso alla sorgente di immagini e ai file in essa contenuti.
- [facoltativo] Implementare l’interfaccia IAsyncProcessingCallback per gestire l’elaborazione. I metodi di questa interfaccia consentono di gestire gli errori e/o annullare l’elaborazione.
- [facoltativo] Configurare l’elaborazione multipla tramite il sottooggetto MultiProcessingParams dell’oggetto Engine. Si noti che non è necessario impostare la proprietà MultiProcessingMode, poiché l’elaborazione parallela è attiva per impostazione predefinita quando si utilizza il Batch Processor. Regolare il numero di processi da eseguire tramite la proprietà RecognitionProcessesCount e specificare i valori delle altre proprietà, se necessario.
- Chiamare il metodo CreateBatchProcessor dell’oggetto Engine per ottenere l’oggetto BatchProcessor.
- Chiamare il metodo Start di questo oggetto per inizializzare il processore e avviare i processi di riconoscimento asincroni. In questa chiamata è possibile specificare la sorgente di immagini e passare i riferimenti all’interfaccia IAsyncProcessingCallback e agli oggetti parametro.
- Chiamare il metodo GetNextProcessedPage in un ciclo fino a quando il metodo non restituisce 0, il che indica che non vi sono altre immagini nella sorgente e che tutte le immagini elaborate sono state restituite all’utente.
