使用シナリオ
- ページ数の多い複数ページの文書を変換する場合。一般的には、書籍や長いレポートなどの処理がこれに当たります。この場合は、文書の各ページを並列に認識し、その後メインプロセスで合成を実行してから、再び並列にエクスポートできます。また、Engine のプールを使用している場合は、複数の複数ページ文書を同時に処理することもできますが、メモリ消費が非常に大きくなり、「out of memory」エラーの原因になることがあります。
- 大量の1ページ文書を変換する場合。これは、請求書、契約書、書簡などを処理するケースです。1ページ文書は互いに依存せず、一度に大量のメモリも必要としないため、このようなケースでは並列処理が最も簡単です。
- 大量の画像を処理し、必要な情報を検索したり、認識結果を別の方法で利用したりする場合。それらの大半を編集可能な形式に変換する必要はないため、合成やエクスポートの速度は問題になりません。複数のプロセスで実行する処理は、レイアウトブロックを順にたどり、テキストブロックの認識結果にアクセスすることです。
エクスポートで並列処理を使用する場合、この機能がサポートされているのは PDF へのエクスポート (TextOnly モードを除く) と PPTX 形式のみである点に注意してください。
推奨事項と制限事項
-
複数ページの文書を並列処理するには、FRDocument の使用をお勧めします。追加のインターフェイスを実装する必要がないため、マルチプロセッシング向けの実装が最も容易な方法です。
オープン、前処理、解析、認識は並列で実行されます。文書合成はメインプロセスで順次実行され、その後、PDF へのエクスポート (TextOnly モードを除く) と PPTX 形式へのエクスポートは並列で実行されます。 -
何らかのソース (スキャナーなど) から受け取る多数の 1 ページ文書を処理するには、BatchProcessor をお勧めします。
この方法の利点は、文書数が事前にわからない場合でも使用でき、さらに文書の種類が異なっていても、到着したものから直接処理しなければならない場合に対応できることです。欠点は、実装の手間がよりかかることです。ファイルアダプター用のインターフェイスと、カスタム画像ソース用のインターフェイスを実装する必要があります。
1 ページ文書の場合は、ページ合成と文書合成がページごとに個別に実行されるため、すべての処理段階が並列で実行されます。
Batch Processor を使用するシナリオでは、並列エクスポートはサポートされていません。
ページの並列処理中に発生したイベントは、文書全体のイベントに変換されます。
FRDocument オブジェクトを使用した処理
- Engine オブジェクトの MultiProcessingParams サブオブジェクトで、MultiProcessingMode プロパティの値を設定します。このプロパティが MPM_Parallel または MPM_Auto に設定されており、かつ文書のページ数と使用可能な CPU コア数の両方が 1 より大きい場合、並列処理が使用されます。
- RecognitionProcessesCount プロパティを使用して実行するプロセス数を調整し、必要に応じて他のプロパティの値も指定します。
- AddImageFile, AddImageFileFromMemory, AddImageFileFromStream, AddImageFileWithPassword, AddImageFileWithPasswordCallback
- Preprocess, PreprocessPages
- Analyze, AnalyzePages
- Recognize, RecognizePages
- Process, ProcessPages
- Export, ExportPages, ExportToMemory — PDF 形式へのエクスポート (TextOnly モードを除く) および PPTX 形式の場合のみ
Batch Processor を使用した処理
- 画像ソースとその中のファイルへのアクセスを提供する IImageSource および IFileAdapter インターフェイスを実装します。
- [任意] 処理を管理するために IAsyncProcessingCallback インターフェイスを実装します。このインターフェイスのメソッドを使用すると、エラーを処理したり、処理をキャンセルしたりできます。
- [任意] Engine オブジェクトの MultiProcessingParams サブオブジェクトを使用してマルチプロセッシングを設定します。Batch Processor を使用する場合、既定で並列処理が使用されるため、MultiProcessingMode プロパティを設定する必要はありません。RecognitionProcessesCount プロパティを使用して実行するプロセス数を調整し、必要に応じて他のプロパティの値を指定します。
- Engine オブジェクトの CreateBatchProcessor メソッドを呼び出して、BatchProcessor オブジェクトを取得します。
- このオブジェクトの Start メソッドを呼び出して、プロセッサを初期化し、非同期の認識プロセスを起動します。このメソッドの呼び出しでは、画像のソースを指定し、IAsyncProcessingCallback インターフェイスおよび parameters オブジェクトへの参照を渡すことができます。
- メソッドが 0 を返すまで、ループ内で GetNextProcessedPage メソッドを呼び出します。これは、ソース内にこれ以上画像がなく、処理済みのすべての画像がユーザーに返されたことを意味します。
