- OutprocLoader オブジェクトを使用してドキュメントを処理し、各ページのレイアウトを取得します。取得したレイアウトを、SaveToStream メソッドでデータ ストリームに書き込みます。
- InprocLoader オブジェクトを使用して、CreateLayoutFromStream メソッドで元のレイアウトのコピーを復元します。このコピーを、その後のレイアウト内容の反復処理に使用します。
- アウトオブプロセス サーバーとして読み込まれた Engine オブジェクトを使用してドキュメントを処理し、各ページのレイアウトを取得します。取得したレイアウトを、SaveToArray メソッドでバイト配列として書き込みます。
- ネイティブに読み込まれた Engine オブジェクト (つまり、libFREngine.so ライブラリから現在のプロセス内に読み込まれたもの) を使用し、IReadStream インターフェイスの実装によって取得したバイト配列を読み取ります。
- ネイティブに読み込まれた Engine オブジェクトを使用して、CreateLayoutFromStream メソッドで元のレイアウトのコピーを復元します。このコピーを、その後のレイアウト内容の反復処理に使用します。
レイアウトブロック
テキストブロック
テキストブロック
このブロック型は、書式付きテキストとして認識される画像領域に対応します。このブロックのプロパティには、TextBlock オブジェクトを介してアクセスできます。このオブジェクトでは、ブロックで囲まれた画像部分から認識されたテキストにもアクセスできます。
表ブロック
表ブロック
このブロック型は表に対応します。この型のブロックは長方形のみ可能です (領域には長方形が 1 つだけ含まれます) 。このブロック型のプロパティには、TableBlock オブジェクトを介してアクセスできます。表の構造は、水平および垂直の表セパレータの 2 つのコレクション (TableSeparators オブジェクト) と、表セルのコレクション (TableCells オブジェクト) によって記述されます。各表セルは、何らかの型のブロックとして扱われます。認識されたテキストは表全体ではなく、個々のセルのプロパティです。セルが画像である場合、セルの境界内に含まれる画像は認識されず、認識テキスト内では画像として表示されます。表セパレータには複数の型があります。セパレータの型は、他のセパレータとの最も近い交点の間にあるセパレータセグメントに対して定義されます。セパレータには次の型があります。
- Absent。この型は、結合セルを横切って「存在するはずの」表セパレータに割り当てられます。
- Unknown。この型は、新しく追加されたすべての表セパレータに既定で割り当てられます。
- Invisible。この型は、元の表には存在しなかったものの、論理的には存在すべき位置に、表構造解析の結果として作成される「仮想的な」表セパレータに割り当てられます。
- Explicit。この型の表セパレータは、元の表の黒線がある位置に現れます。
-
Multiple。この型のセパレータは、表の編集の結果として現れることがあります。

ラスター画像ブロック
ラスター画像ブロック
このブロック型は、ラスター画像として扱われる画像領域を表します。このブロックが囲む画像部分は認識されず、ブロックは「そのまま」エクスポートされます。このブロック型のプロパティは、RasterPictureBlock オブジェクトで表されます。
ベクター画像ブロック
ベクター画像ブロック
このブロック型は、ベクター画像として扱われる画像領域を表します。この型のブロックは、ページが IPageAnalysisParams::DetectVectorGraphics プロパティを TRUE に設定して解析された場合にのみ、レイアウト内に現れます。通常、背景画像はこの型のブロックとして認識されます。このブロック型のプロパティは、VectorPictureBlock オブジェクトで表されます。
バーコードブロック
バーコードブロック
このタイプのブロックで囲まれた画像の一部は、バーコードとして扱われます。ABBYY FineReader Engine は複数の種類のバーコードを認識でき、バーコードの種類を自動的に検出することもできます。認識されたバーコードから読み取られた情報には、BarcodeBlock オブジェクトで表されるバーコードブロック固有のプロパティからアクセスできます。
チェックマークブロック
チェックマークブロック
このタイプのブロックで囲まれた画像の一部は、チェックマークとして扱われます。これは、チェックマークとして認識された画像領域に対応します。認識されたチェックマークから読み取られた情報には、CheckmarkBlock オブジェクトで表されるチェックマークブロック固有のプロパティからアクセスできます。
チェックマークグループブロック
チェックマークグループブロック
このタイプのブロックで囲まれた画像の一部は、チェックマークグループとして扱われます。これは、チェックマークグループとして認識された画像領域に対応します。認識されたチェックマークグループから読み取られた情報には、CheckmarkGroup オブジェクトで表されるチェックマークグループブロック固有のプロパティからアクセスできます。
セパレータブロック
セパレータブロック
このタイプのブロックで囲まれた画像の一部は、セパレータとして扱われます。セパレータは、ページのレイアウト解析中に検出される線です。表の一部であったり、異なるテキスト要素を区切る線であったりします。セパレータの座標と種類には、SeparatorBlock オブジェクトからアクセスできます。
セパレータグループブロック
セパレータグループブロック
このタイプのブロックで囲まれた画像の一部は、セパレータグループとして扱われます。これは、セパレータのグループとして認識された画像領域に対応します。通常、セパレータのグループには長方形を形成する 4 本のセパレータが含まれます。たとえば、表の外枠を構成する 4 本の線はセパレータグループとして認識されます。各セパレータグループには、セパレータブロックのコレクションが含まれます。セパレータグループブロック固有のプロパティは、SeparatorGroup オブジェクトで表されます。
autoanalysis blocks もありますが、これらは Visual Components (Windows 版 FRE の一部) でのみ使用されます。これらは FineReader Engine API では作成も認識もできません。利用できるのは ILayout::VisualBlocks プロパティからのみです。
ブロックを手動で追加する
- FRPage オブジェクトを開き、Layout プロパティからページのレイアウトを取得します。
- IEngine::CreateRegion メソッドを使用して、ブロック用の Region オブジェクトを作成し、IRegion::AddRect メソッドを使用してそのオブジェクトに矩形を追加します。
- 必要なタイプのブロックを作成し、LayoutBlocks オブジェクトの AddNew メソッドを使用してレイアウトブロックのコレクションに追加します。
- ブロックに必要なパラメーターを設定します (ブロックのタイプに対応するブロックプロパティオブジェクトを使用します) 。
ブロック型の変更
- IEngine::CreateRegion メソッドを使用して Region オブジェクトを作成し、IRegion::CopyFrom メソッドを使って置き換えるブロックの領域をコピーします。
- ILayoutBlocks::DeleteAt メソッドを呼び出して、Layout から古いブロックを削除します。
- 必要なタイプの新しいブロックを作成し、LayoutBlocks オブジェクトの AddNew メソッドを使用して レイアウトブロックのコレクションに追加します。必須パラメーターの 1 つとして、古いブロックからコピーした Region を渡します。
