メインコンテンツへスキップ
このオブジェクトは、単一のブロックを表します。ページを認識する際、ABBYY FineReader Engine はまずページのレイアウトを解析し、ページ上のさまざまな型のブロックを検出します。ブロックは画像領域の認識方法を決定し、認識後は認識された情報を保持します。 ページ上の各ブロックは、text、table、raster picture、vector picture、barcode、checkmark、checkmarks group、separator、separators group の9つの型のいずれかに属します。ブロックの型は Type プロパティで定義されます。Block オブジェクトは、自身を子オブジェクトのいずれかに型変換するメソッドを提供しており、これにより特定の型のブロックの拡張属性にアクセスできます。 画像上のブロックの位置は、その領域 (Region プロパティ) と、そのブロックが属するレイヤー (BlockLayerType プロパティ) によって定義されます。
FRPage のレイアウトから取得したブロックは、このページ、またはそのページが属するドキュメントに対してレイアウト解析を実行するいずれかのメソッド (AnalyzeProcess など) を呼び出すと無効になります。解析後は、新しいレイアウト内で必要なブロックを見つけ、新しい Block オブジェクトを使用して作業を続けてください。

プロパティ

,read-only

Engine オブジェクトを返します。

ブロックのregionへのアクセスを提供します。region は矩形のコレクションです。他のブロック型とは異なり、テーブルブロックの region に含められる矩形は最大1つです。そのため、複数の矩形を含む region をテーブルブロックに割り当てようとするとエラーが発生します。region は、対応する画像の傾き補正済みblack-and-whiteプレーン上における矩形の座標 (ピクセル単位) によって定義されます。

このプロパティは定数オブジェクトを返します。ブロックの region を変更するには、まずIEngine::CreateRegionメソッドを使用して中間の Region オブジェクトを取得し、必要なパラメーターを変更したうえで、取得したオブジェクトをプロパティに割り当ててください。

, read-only

ABBYY FineReader Engine では、テキスト、テーブル、ラスター画像、ベクター画像、バーコード、チェックマーク、チェックマークグループ、区切り線、区切り線グループ、および自動解析というブロック型が使用されます (自動解析ブロックはビジュアルコンポーネントでのみ使用されます) 。各ブロック型には固有のプロパティがあります。

ブロック型は作成時に決定され、後から変更することはできません。ブロック型を変更する必要がある場合は、既存のブロックを削除し、まったく同じ場所に必要な型の新しいブロックを作成してください。

  1. メソッドを使用してオブジェクトを作成し、メソッドを使用して、置き換えるブロックの region をコピーします。
  2. メソッドを呼び出して、レイアウトから古いブロックを削除します。
  3. 必要な型の新しいブロックを作成し、LayoutBlocks オブジェクトのメソッドを使用してレイアウトブロックのコレクションに追加します。古いブロックからコピーした Region を必須パラメーターの1つとして渡します。

, read-only

ブロックの背景色を指定します。

int 値は、次の式を使用して RGB トリプレットから計算されます: (赤の値) + (256 × 緑の値) + (65536 × 青の値) 。ここで、赤の値はトリプレットの第1成分、緑の値は第2成分、青の値は第3成分です。たとえば、白の int 値は 16777215 です。

デフォルトでは、このプロパティの値は -1 で、色が透明であることを示します。

, read-only

ブロックのレイヤー (背景、前景、または非表示) を指定します。ブロックは重ね合わせることができます。たとえば、テキストブロックを背景の画像ブロックの上に重ねることができます。

RasterPictureBlockおよびVectorPictureBlockについては、SetBlockLayerTypeメソッドを使用してレイヤーを変更できます。

デフォルトでは、このプロパティの値は BLT_Foreground です。

ブロックの説明を格納します。

デフォルトでは、このプロパティの値は空の文字列です。

ブロックの名前を格納します。任意の文字列を使用できます。

デフォルトでは、このプロパティの値は空の文字列です。

任意の型のユーザー定義情報を Block 型のオブジェクトに関連付けることができます。

メソッド

名前説明
GetAsBarcodeBlockブロックを BarcodeBlock オブジェクトとして返します。ブロックがバーコード ブロックでない場合は、NULL が返されます。
GetAsCheckmarkBlockブロックを CheckmarkBlock オブジェクトとして返します。ブロックがチェックマーク ブロックでない場合は、NULL が返されます。
GetAsCheckmarkGroupブロックを CheckmarkGroup オブジェクトとして返します。ブロックがチェックマーク グループ ブロックでない場合は、NULL が返されます。
GetAsRasterPictureBlockブロックを RasterPictureBlock オブジェクトとして返します。ブロックがラスター画像ブロックでない場合は、NULL が返されます。
GetAsSeparatorBlockブロックを SeparatorBlock オブジェクトとして返します。ブロックがセパレーター ブロックでない場合は、NULL が返されます。
GetAsSeparatorGroupブロックを SeparatorGroup オブジェクトとして返します。ブロックがセパレーター グループ ブロックでない場合は、NULL が返されます。
GetAsTableBlockブロックを TableBlock オブジェクトとして返します。ブロックがテーブルブロックでない場合は、NULL が返されます。
GetAsTextBlockブロックを TextBlock オブジェクトとして返します。ブロックがテキスト ブロックでない場合は、NULL が返されます。
GetAsVectorPictureBlockブロックを VectorPictureBlock オブジェクトとして返します。ブロックがベクター画像ブロックでない場合は、NULL が返されます。
Moveブロックの領域を指定したベクトル分だけ移動します。

Windows

Block

Linux および macOS

BlockLinuxMac オブジェクト図

出力パラメーター

このオブジェクトは、LayoutBlocksオブジェクトのItemメソッドおよびAddNewメソッドの出力パラメーターです。

サンプル

int picturesCount = 0;
int suspiciousCharsCount = 0;
int totalCharsCount = 0;
int barcodesCount = 0;
// テキスト内の文字数、疑わしい文字数、画像数、バーコード数を計算します
void computeStatisticsForBlock(FREngine.IBlock block)
{
 if (block.Type == FREngine.BlockTypeEnum.BT_Table)
 {
  FREngine.ITableBlock tableBlock = block.GetAsTableBlock();
  for (int iCell = 0; iCell < tableBlock.Cells.Count; iCell++)
  {
   computeStatisticsForBlock(tableBlock.Cells[iCell].Block);
  }
 }
 else if (block.Type == FREngine.BlockTypeEnum.BT_Text)
 {
  FREngine.ITextBlock textBlock = block.GetAsTextBlock();
  int paragraphsCount = textBlock.Text.Paragraphs.Count;
  for (int iPar = 0; iPar < paragraphsCount; iPar++)
  {
   FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar];
   string text = par.Text;
   totalCharsCount += text.Length;
   FREngine.ICharParams charParams = engine.CreateCharParams();
   for (int iChar = 0; iChar < text.Length; iChar++)
   {
    par.GetCharParams(iChar, charParams);
    if (charParams.IsSuspicious)
    {
     suspiciousCharsCount++;
    }
   }
  }
 }
 else if (block.Type == FREngine.BlockTypeEnum.BT_RasterPicture || block.Type == FREngine.BlockTypeEnum.BT_VectorPicture)
 {
  picturesCount++;
 }
 else if (block.Type == FREngine.BlockTypeEnum.BT_Barcode)
 {
  barcodesCount++;
 }
}
このオブジェクトは、次のコード サンプルで使用されています。

関連項目

LayoutBlocks Layout と Block の操作 プロパティ の操作