Scénarios d’utilisation
- Conversion de documents multipages contenant un grand nombre de pages. Il s’agit généralement de livres, de longs rapports, etc. Dans ce cas, vous pouvez reconnaître les pages du document en parallèle, puis effectuer la synthèse dans le processus principal et relancer ensuite l’export en parallèle. Si vous utilisez un pool d’Engines, vous pouvez également traiter simultanément plusieurs documents multipages, mais la consommation de mémoire peut être très importante, au point d’entraîner des erreurs de type « out of memory ».
- Conversion d’un grand nombre de documents d’une page. C’est le cas, par exemple, lorsque vous traitez des factures, des contrats, des lettres, etc. Le traitement parallèle est alors la solution la plus simple, car les documents d’une page sont indépendants les uns des autres et ne nécessitent pas une grande quantité de mémoire simultanément.
- Traitement d’un grand nombre d’images pour y rechercher des informations spécifiques, ou exploitation des résultats de reconnaissance d’une autre manière. Il est possible que vous n’ayez pas besoin de convertir la plupart d’entre elles dans un format modifiable ; dans ce cas, la vitesse de la synthèse et de l’export n’est pas un enjeu. L’opération exécutée dans plusieurs processus consiste alors à parcourir les blocs de mise en page et à accéder aux résultats de reconnaissance des blocs de texte.
Si vous souhaitez utiliser le traitement parallèle pour l’export, gardez à l’esprit que cette fonctionnalité n’est prise en charge que pour l’export au format PDF (à l’exception du mode TextOnly) et au format PPTX.
Recommandations et restrictions
-
Pour le traitement parallèle de documents multipages, nous recommandons d’utiliser FRDocument. C’est la solution multiprocessus la plus simple à mettre en œuvre, car vous n’avez aucune interface supplémentaire à implémenter.
L’ouverture, le prétraitement, l’analyse et la reconnaissance sont effectués en parallèle ; la synthèse de documents est effectuée de manière séquentielle dans le processus principal, puis l’export aux formats PDF (sauf en mode TextOnly) et PPTX est effectué en parallèle. -
Pour traiter un grand nombre de documents d’une page reçus depuis une source (par exemple, un scanner), nous recommandons BatchProcessor.
L’avantage de cette méthode est qu’elle peut être utilisée lorsque vous ne connaissez pas à l’avance le nombre de documents, que ceux-ci peuvent être de types différents et qu’ils doivent être traités dès leur arrivée. Son inconvénient est qu’elle demande davantage d’efforts d’implémentation : vous devez implémenter des interfaces pour un adaptateur de fichiers et une source d’images personnalisée.
Toutes les étapes du traitement sont effectuées en parallèle car, dans le cas de documents d’une page, la synthèse de la page et du document est effectuée séparément pour chaque page.
L’export parallèle n’est pas pris en charge dans les scénarios utilisant Batch Processor.
Les événements survenus lors du traitement parallèle d’une page sont convertis en événements concernant l’ensemble du document.
Traitement à l’aide de l’objet FRDocument
- Définissez la valeur de la propriété MultiProcessingMode du sous-objet MultiProcessingParams de l’objet Engine. Le traitement parallèle est utilisé si cette propriété est définie sur MPM_Parallel ou MPM_Auto, et si le nombre de pages du document et le nombre de cœurs CPU disponibles sont tous deux supérieurs à un.
- Ajustez le nombre de processus à exécuter à l’aide de la propriété RecognitionProcessesCount et, si nécessaire, spécifiez les valeurs des autres propriétés.
- AddImageFile, AddImageFileFromMemory, AddImageFileFromStream, AddImageFileWithPassword, AddImageFileWithPasswordCallback
- Preprocess, PreprocessPages
- Analyze, AnalyzePages
- Recognize, RecognizePages
- Process, ProcessPages
- Export, ExportPages, ExportToMemory — uniquement pour l’export aux formats PDF (sauf en mode TextOnly) et PPTX
Traitement avec Batch Processor
- Implémentez les interfaces IImageSource et IFileAdapter, qui permettent d’accéder à la source d’images et aux fichiers qu’elle contient.
- [facultatif] Implémentez l’interface IAsyncProcessingCallback pour gérer le traitement. Les méthodes de cette interface vous permettent de gérer les erreurs et/ou d’annuler le traitement.
- [facultatif] Configurez le multiprocessus à l’aide du sous-objet MultiProcessingParams de l’objet Engine. Notez qu’il n’est pas nécessaire de définir la propriété MultiProcessingMode, car le traitement parallèle est utilisé par défaut lorsque vous utilisez Batch Processor. Réglez le nombre de processus à exécuter à l’aide de la propriété RecognitionProcessesCount et spécifiez les valeurs des autres propriétés si nécessaire.
- Appelez la méthode CreateBatchProcessor de l’objet Engine pour obtenir l’objet BatchProcessor.
- Appelez la méthode Start de cet objet pour initialiser le processeur et lancer les processus de reconnaissance asynchrones. Vous pouvez spécifier la source d’images, transmettre les références à l’interface IAsyncProcessingCallback et les objets paramètres dans l’appel à cette méthode.
- Appelez la méthode GetNextProcessedPage dans une boucle jusqu’à ce qu’elle renvoie 0, ce qui signifie qu’il n’y a plus d’images dans la source et que toutes les images traitées ont été renvoyées à l’utilisateur.
