Escenarios de uso
- Convertir documentos multipágina con un gran número de páginas. Por lo general, esto significa procesar libros, informes extensos, etc. En este caso, puede reconocer las páginas del documento en paralelo, luego realizar la síntesis en el proceso principal y volver a exportar en paralelo. También puede, si usa un grupo de Engines, procesar varios documentos multipágina simultáneamente, pero el consumo de memoria puede ser enorme e incluso provocar errores de “memoria insuficiente”.
- Convertir una gran cantidad de documentos de una sola página. Este es el caso cuando procesa facturas, contratos, cartas, etc. El procesamiento en paralelo es lo más sencillo en esta situación, ya que los documentos de una sola página no dependen unos de otros y no requieren grandes cantidades de memoria al mismo tiempo.
- Procesar una gran cantidad de imágenes y buscar en ellas la información necesaria o trabajar con los resultados del reconocimiento de alguna otra manera. Puede que no necesite convertir la mayoría a un formato editable, por lo que la velocidad de la síntesis y de la exportación no es un problema. La operación que se realizará en varios procesos consiste en iterar por los bloques de layout y acceder a los resultados del reconocimiento de los bloques de texto.
Si desea usar el procesamiento en paralelo para la exportación, tenga en cuenta que esta función solo es compatible con la exportación a PDF (excepto el modo TextOnly) y con el formato PPTX.
Recomendaciones y restricciones
-
Para el procesamiento en paralelo de documentos de varias páginas, recomendamos usar FRDocument. Es la opción de multiprocesamiento más fácil de implementar, ya que no es necesario implementar interfaces adicionales.
La apertura, el preprocesamiento, el análisis y el reconocimiento se realizan en paralelo; la síntesis del documento se realiza secuencialmente en el proceso principal y, a continuación, la exportación a PDF (excepto en el modo TextOnly) y a PPTX se realiza en paralelo. -
Para procesar muchos documentos de una sola página que se reciben desde alguna fuente (como un escáner), recomendamos BatchProcessor.
La ventaja de este método es que puede utilizarse cuando no conoce de antemano cuántos documentos habrá, estos pueden ser de distintos tipos y deben procesarse directamente a medida que llegan. La desventaja es que requiere más esfuerzo de implementación: tiene que implementar interfaces para un adaptador de archivos y una fuente de imágenes personalizada.
Todas las etapas del procesamiento se realizan en paralelo porque, en el caso de los documentos de una sola página, la síntesis de página y de documento se realizan por separado para cada página.
La exportación en paralelo no se admite en escenarios con Batch Processor.
Los eventos que se producen durante el procesamiento en paralelo de una página se convierten en eventos del documento completo.
Procesamiento con el objeto FRDocument
- Establezca el valor de la propiedad MultiProcessingMode del subobjeto MultiProcessingParams del objeto Engine. El procesamiento en paralelo se utiliza si esta propiedad se establece en MPM_Parallel o MPM_Auto, y si tanto el número de páginas del documento como el número de núcleos de CPU disponibles son mayores que uno.
- Ajuste el número de procesos que se ejecutarán mediante la propiedad RecognitionProcessesCount y, si es necesario, especifique los valores de otras propiedades.
- AddImageFile, AddImageFileFromMemory, AddImageFileFromStream, AddImageFileWithPassword, AddImageFileWithPasswordCallback
- Preprocess, PreprocessPages
- Analyze, AnalyzePages
- Recognize, RecognizePages
- Process, ProcessPages
- Export, ExportPages, ExportToMemory — solo para exportar a los formatos PDF (excepto el modo TextOnly) y PPTX
Procesamiento con Batch Processor
- Implemente las interfaces IImageSource e IFileAdapter, que proporcionan acceso a la fuente de imágenes y a los archivos que contiene.
- [opcional] Implemente la interfaz IAsyncProcessingCallback para controlar el procesamiento. Los métodos de esta interfaz le permiten gestionar errores y/o cancelar el procesamiento.
- [opcional] Configure el multiprocesamiento mediante el subobjeto MultiProcessingParams del objeto Engine. Tenga en cuenta que no es necesario establecer la propiedad MultiProcessingMode, porque el procesamiento en paralelo se usa de forma predeterminada si trabaja con Batch Processor. Ajuste el número de procesos que se ejecutarán mediante la propiedad RecognitionProcessesCount y, si es necesario, especifique los valores de las demás propiedades.
- Llame al método CreateBatchProcessor del objeto Engine para obtener el objeto BatchProcessor.
- Llame al método Start de este objeto para inicializar el procesador e invocar procesos de reconocimiento asincrónicos. Puede especificar la fuente de imágenes y pasar las referencias a la interfaz IAsyncProcessingCallback y a los objetos de parámetros en la llamada a este método.
- Llame al método GetNextProcessedPage en un bucle hasta que devuelva 0, lo que significa que ya no quedan más imágenes en la fuente y que todas las imágenes procesadas ya se han devuelto al usuario.
