메인 콘텐츠로 건너뛰기
이 객체는 단일 블록을 나타냅니다. 페이지를 인식할 때 ABBYY FineReader Engine은 먼저 레이아웃을 분석하여 페이지에서 다양한 유형의 블록을 감지합니다. 블록은 이미지 영역의 인식 방식을 결정하며, 인식 후에는 해당 영역의 인식된 정보를 포함합니다. 페이지의 각 블록은 아홉 가지 유형 중 하나에 속합니다: 텍스트, 테이블, 래스터 이미지, 벡터 이미지, 바코드, 체크마크, 체크마크 그룹, 구분선, 구분선 그룹. 블록의 유형은 Type 속성에 의해 정의됩니다. 블록 객체는 자식 객체 중 하나로 타입 캐스팅하는 메서드를 제공하여 특정 유형의 블록에 대한 확장된 속성에 접근할 수 있게 합니다. 이미지에서 블록의 위치는 Region 속성으로 정의된 영역과 BlockLayerType 속성으로 지정된 레이어에 의해 결정됩니다.
레이아웃에서 얻은 블록은 FRPage의 해당 페이지나 소속 문서에 대해 레이아웃 분석을 수행하는 메서드(예: Analyze 또는 Process )를 호출한 후 무효가 됩니다. 분석 후에는 새로운 레이아웃에서 필요한 블록을 찾아 새로운 블록 객체로 작업을 계속하세요.

속성

,읽기 전용

Engine 객체를 반환합니다.

블록region에 액세스할 수 있습니다. region은 사각형의 컬렉션입니다. 다른 유형의 블록과 달리 테이블 블록의 region에는 사각형이 최대 하나만 포함될 수 있으므로, 둘 이상의 사각형이 있는 region을 테이블 블록에 할당하려고 하면 오류가 발생합니다. region은 해당 이미지의 기울기 보정된흑백평면에서 사각형의 좌표(픽셀 단위)로 정의됩니다.

이 속성은 상수 객체를 반환합니다. 블록 region을 변경하려면 먼저IEngine::CreateRegion메서드를 사용해 중간 Region 객체를 얻고, 필요한 매개변수를 변경한 다음, 그 객체를 이 속성에 할당해야 합니다.

, 읽기 전용

ABBYY FineReader Engine에는 다음과 같은 블록 유형이 있습니다: 텍스트, 테이블, 래스터 이미지, 벡터 이미지, 바코드, 체크마크, 체크마크 그룹, 구분선, 구분선 그룹, 자동 분석. (자동 분석 블록은 Visual Components에서만 사용됩니다.) 각 블록 유형에는 고유한 속성이 있습니다.

블록 유형은 생성 시 결정되며 변경할 수 없습니다. 블록 유형을 변경해야 하는 경우에는 해당 블록을 삭제한 뒤 정확히 같은 위치에 필요한 유형의 새 블록을 만들어야 합니다:

  1. 객체를메서드로 생성한 다음,메서드를 사용해 교체할 블록의 region을 복사합니다.
  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이며, 이는 색상이 투명함을 의미합니다.

, 읽기 전용

블록의 레이어를 지정합니다: background, foreground 또는 hidden. 블록은 서로 겹칠 수 있으며, 예를 들어 텍스트 블록이 배경 이미지 블록 위에 놓일 수 있습니다.

RasterPictureBlockVectorPictureBlock의 경우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

블록

Linux 및 macOS

BlockLinuxMac 객체 다이어그램

Output parameter

이 객체는 LayoutBlocks 객체의 Item, AddNew 메서드의 출력 Parameter입니다.

예제

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과 블록 사용하기 속성 사용하기