跳轉到主要內容
此物件代表單一 Block。識別頁面時,ABBYY FineReader Engine 會先分析頁面版面,並偵測頁面上各種類型的區塊。這些 Block 會決定影像區域的識別方式,並在識別後包含已識別的資訊。 頁面上的每個 Block 都屬於以下九種類型之一:text、table、raster picture、vector picture、barcode、checkmark、checkmarks group、separator 和 separators group。Block 的類型由 Type 屬性定義。Block 物件會公開一些方法,將它轉型為其某個子物件,從而提供對特定類型 Block 擴充屬性的存取能力。 Block 在影像上的位置由其 region (Region 屬性) 以及其所屬的 layer (BlockLayerType 屬性) 定義。
您從 FRPage 的版面取得的 Block,在對該頁面或其所屬文件呼叫任何執行版面分析的方法 (例如 AnalyzeProcess) 後,就會失效。分析完成後,請在新的版面中找到所需的 Block,並繼續使用新的 Block 物件。

屬性

,唯讀

回傳 Engine 物件。

提供對區塊區域的存取。區域是由多個矩形組成的集合。不同於其他類型的 區塊,表格區塊的區域最多只能有一個矩形,因此若嘗試將包含多個 矩形的區域指派給表格區塊,將會發生錯誤。區域是依據其矩形在對應影像 校正傾斜後的黑白平面上的座標 (以像素為單位) 來定義。

此屬性會回傳常數物件。若要變更區塊區域, 您必須先使用IEngine::CreateRegion方法取得一個中間的 Region 物件,變更所需參數後,再將取得的 物件指派給此屬性。

, 唯讀

ABBYY FineReader Engine 使用下列區塊類型:文字、 表格、點陣圖片、向量圖片、條碼、核取記號、核取記號群組、 分隔線、分隔線群組,以及 autoanalysis。 (Autoanalysis 區塊僅用於 Visual Components。) 每種區塊類型都有各自的 專屬屬性。

區塊型別會在建立時決定,且無法變更。若 您需要變更區塊型別,則必須刪除該區塊, 並在完全相同的位置建立另一個所需型別的區塊:

  1. 使用方法建立物件,並使用方法複製您要取代之區塊的區域。
  2. 呼叫方法,從版面配置中刪除舊區塊。
  3. 建立所需型別的新區塊,並使用 LayoutBlocks 物件的方法,將其加入版面配置區塊集合中。將您從舊區塊複製的 Region 作為其中一個必要參數傳入。

, 唯讀

指定區塊的背景顏色。

int 值是根據 RGB 三元組,使用下列公式計算得出: ( red value ) + (256 x green value ) + (65536 x blue value ) ,其中 red value 是三元組的第一個分量,green value 是第二個 分量,blue value 是第三個分量。例如,白色的 int 值為 16777215。

預設情況下,此屬性的值為 -1,表示該 顏色為透明。

, 唯讀

指定區塊所在的圖層:背景、前景或隱藏。 區塊可以彼此重疊,例如文字區塊可位於 背景圖片區塊之上。

對於RasterPictureBlockVectorPictureBlock,您可以使用SetBlockLayerType方法變更圖層。

此屬性的預設值為 BLT_Foreground。

儲存 Block 的描述。

此屬性的預設值為空字串。

儲存 Block 的名稱,可為任意字串。

此屬性的預設值為空字串。

允許您將任意型別的使用者自訂資訊與 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 物件之 ItemAddNew 方法的輸出參數。

範例

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 與 Blocks 使用 Properties