ABBYY FineReader Engine の文書処理は、ページの前処理、解析、認識、ページ合成、文書合成、エクスポートという複数の段階で構成されています。このセクションでは、ページの前処理、解析、認識、およびページ/文書合成について説明します。エクスポートパラメーターの詳細については、エクスポートパラメーターの調整を参照してください。
それでは、処理の各段階を順に見ていきましょう。
- ページの前処理
この段階では、FineReader Engine が画像品質を自動的に向上させ、OCR の妨げとなる欠陥を補正します。たとえば、ページの向き、画像の反転、幾何学的な歪みなどです。
- レイアウト解析
解析では、FineReader Engine がさまざまな種類のデータを含む領域を検出します。これらの領域は「ブロック」と呼ばれます。
- 認識
ブロック内にある画像の部分が、ブロックの種類に応じた方法で認識されます。
- ページ合成
テキストと背景の色、ハイパーリンク、その他の書式が検出されます。
- 文書合成
最後に、フォントスタイルとドキュメントの論理構造が再現されます。FineReader Engine は、認識されたドキュメント内の見出しを検出し、目次を再構築し、画像や表のキャプションなど、ドキュメント構造の要素を検出します。
処理を開始する前に、Parameter オブジェクトを使用して、ページの前処理、解析、認識、および合成のパラメーターを設定できます。すべての処理パラメーターにアクセスするための主要なオブジェクトは、DocumentProcessingParams オブジェクトです。このオブジェクトには、各処理段階に影響を与えるサブオブジェクトのセットが含まれています。
処理段階に応じて、DocumentProcessingParams オブジェクトへのポインター、またはそのサブオブジェクトへのポインターを入力パラメーターとして処理メソッドに渡すことができ、処理結果に影響を与えます。FRDocument オブジェクトと FRPage オブジェクトは、ページの前処理、解析、認識、および合成のメソッドを提供します。
ページの前処理、解析、認識、および合成の処理は、プロファイルを使用して調整することもできます。また、よく使用されるシナリオの多くは、十分にテストされた定義済みプロファイルでカバーされています。詳細については、プロファイルの使用を参照してください。
各ページの処理パラメーターを設定するには、DocumentProcessingParams オブジェクトの PageProcessingParams サブオブジェクトのプロパティを使用します。PageProcessingParams オブジェクトは、ページ処理パラメーターを設定する一連のオブジェクトの親オブジェクトです。
また、PageProcessingParams オブジェクトでは、各処理ステージの有効/無効を切り替えることもできます。たとえば、ブロックを手動で指定する予定でレイアウト解析が不要な場合は、PageProcessingParams オブジェクトの PerformAnalysis プロパティを FALSE に設定できます。
文書処理のパラメーターを設定するには、ページ処理パラメーターに加えて、SynthesisParamsForDocument オブジェクトを使用して文書合成のパラメーターも設定する必要があります。文書合成の実行中には、フォントスタイルと書式が検出されます。文書のフォントやスタイルを扱う FineReader Engine のオブジェクトは、文書合成の完了後に初めて意味を持つようになります。
次の場合は、文書合成の段階を省略できます。
- 認識したテキストを TXT 形式にエクスポートする場合。この形式へのエクスポートでは、合成情報は使用されません。
- 文書を PDF ImageOnly 形式にエクスポートする場合。このモードでは、認識テキストと Layout 情報は使用されません。
それ以外のすべての場合では、文書合成を実行する必要があります。文書合成を省略すると、エクスポート時にエラーが発生します。
名前に “Process” を含むメソッド (たとえば IFRDocument::Process) には、文書合成の段階が含まれます。一方、FRPage オブジェクトの処理メソッドにはこれが含まれないため、それらを使用した後、エクスポートの前に、文書合成を実行するメソッドを明示的に呼び出す必要があります。
文書合成の段階は、高速化してメモリ使用量を削減できます。ページ合成中に SynthesisParamsForPage オブジェクトの DetectFontFormattingAtPageLevel プロパティを TRUE に設定すると、文書合成時のフォントパラメーターおよび文書構造の検出 (SynthesisParamsForDocument オブジェクトの DetectFontFormatting と DetectDocumentStructure) を無効にできます。ただし、品質が低下する可能性があります。
文書のテキストまたは Layout が変更されるたびに (ブロックの追加や削除、テキストの編集など) 、文書合成メソッドを再度呼び出すことをお勧めします。FRDocument の SynthesizePages メソッドでは、変更された文書ページのコレクションを指定できるため、必要なデータのみが再計算されます。
上で説明した Parameter オブジェクトを使用する手順を段階的に示すと、次のようになります。
-
Engine オブジェクトの CreateDocumentProcessingParams メソッドを使用して、DocumentProcessingParams オブジェクトを作成します。
-
PageProcessingParams サブオブジェクトで必要なプロパティを設定します。作成時には適切なデフォルト値で初期化されるため、すべてのサブオブジェクトのすべてのプロパティを設定する必要はありません。デフォルト値以外にしたいプロパティだけを調整すれば十分です。
レイアウト解析機能で使用するパラメーターを設定する際は、認識に影響する PageProcessingParams のサブオブジェクトのプロパティにも、正しい値を設定することを忘れないでください。これは、これらのパラメーターがすべてレイアウト解析中に作成されるブロックにコピーされ、その後の認識で使用されるためです。また、画像の一部の分析では認識処理が含まれる場合もあるため、この設定を推奨します。
-
必要に応じて、SynthesisParamsForDocument サブオブジェクトの必要なプロパティを設定します。作成時には適切なデフォルト値で初期化されるため、すべてのオブジェクトおよびサブオブジェクトのすべてのプロパティを設定する必要はありません。デフォルト値以外にしたいプロパティだけを調整すれば十分です。DocumentProcessingParams オブジェクトの PerformSynthesis プロパティの値が true になっていることを確認してください。
-
DocumentProcessingParams オブジェクト、またはそのサブオブジェクトのセットを、FRDocument、FRPage、Engine の各オブジェクトが持つ処理メソッドのいずれかに渡すことができます。
ドキュメントを認識するには、FRDocument オブジェクトの処理メソッドを使用することをお勧めします。このオブジェクトには、さまざまな処理メソッドが用意されています。前処理、分析、認識、合成を 1 つのメソッドで実行できる最も便利なメソッドは、Process メソッドです。また、このメソッドは、マルチプロセッサおよびマルチコア システムの同時処理機能を最も効率的に利用します。ただし、対応する各メソッドを使用して、前処理、分析、認識、合成を順に実行することもできます。
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
// ドキュメントはすでに作成されており、画像が追加されているものとします
// DocumentProcessingParams を作成してパラメーターを設定
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
FREngine.IPageProcessingParams ppp = dpp.PageProcessingParams;
ppp.PagePreprocessingParams.CorrectOrientationMode = COM_Auto;
// 処理にパラメーターを使用
frDoc.Process( dpp );
同様の手順は、次のコード サンプルでも使用されています。
プロファイルの使用
バーコードの認識
エクスポートパラメーターの調整