Saltar al contenido principal
Este objeto representa un único bloque. Al reconocer una página, ABBYY FineReader Engine primero analiza su diseño y detecta en ella bloques de varios tipos. Los bloques determinan cómo se reconocen las áreas de la imagen y, una vez finalizado el reconocimiento, contienen la información reconocida. Cada bloque de la página pertenece a uno de estos nueve tipos: texto, tabla, imagen ráster, imagen vectorial, código de barras, marca de verificación, grupo de marcas de verificación, separador y grupo de separadores. El tipo de bloque se define mediante la propiedad Type. El objeto Block expone métodos que lo convierten a uno de sus objetos secundarios y, de ese modo, proporcionan acceso a los atributos ampliados de un bloque de un tipo específico. La posición del bloque en una imagen se define por su región (la propiedad Region) y por la capa a la que pertenece (la propiedad BlockLayerType).
El bloque que obtenga del diseño de una FRPage dejará de ser válido después de llamar a cualquiera de los métodos que realizan análisis de diseño (como Analyze o Process ) para esta página o para el documento al que pertenece. Después del análisis, busque el bloque que necesite en el nuevo diseño y continúe trabajando con el nuevo objeto Block.

Propiedades

,de solo lectura

Devuelve el objeto Engine.

Proporciona acceso a laregióndel bloque. Una región es una colección de rectángulos. A diferencia de otros tipos de bloques, un bloque de tabla no puede tener más de un rectángulo en su región; por ello, intentar asignar una región con más de un rectángulo a un bloque de tabla generará un error. La región se define mediante las coordenadas de sus rectángulos (en píxeles) sobre el planoblanco y negrocorregido de la imagen correspondiente.

La propiedad devuelve un objeto constante. Para cambiar la región del bloque, primero debe obtener un objeto Region intermedio mediante el métodoIEngine::CreateRegion, modificar los parámetros necesarios y, a continuación, asignar el objeto obtenido a la propiedad.

, de solo lectura

ABBYY FineReader Engine utiliza los siguientes tipos de bloques: texto, tabla, imagen rasterizada, imagen vectorial, código de barras, marca de verificación, grupo de marcas de verificación, separador, grupo de separadores y autoanálisis. (Los bloques de autoanálisis se utilizan únicamente en Visual Components). Cada tipo de bloque tiene sus propias propiedades específicas.

El tipo de bloque se define en el momento de la creación y no puede modificarse. Si necesita cambiar el tipo de bloque, deberá eliminar el bloque y crear otro del tipo necesario exactamente en el mismo lugar:

  1. Cree un objetomediante el métodoy copie la región del bloque que desea reemplazar con ayuda del método.
  2. Elimine el bloque anterior del diseño llamando al método.
  3. Cree un nuevo bloque del tipo requerido y agréguelo a la colección de bloques de diseño mediante el métododel objeto LayoutBlocks. Pase el objeto Region copiado del bloque anterior como uno de los parámetros requeridos.

, de solo lectura

Especifica el color de fondo del bloque.

El valor int se calcula a partir de la tripleta RGB mediante la fórmula: (valor rojo) + (256 x valor verde) + (65536 x valor azul), donde el valor rojo es el primer componente de la tripleta, el valor verde es el segundo componente y el valor azul es el tercer componente. Por ejemplo, el valor int del color blanco es 16777215.

De forma predeterminada, el valor de esta propiedad es -1, lo que indica que el color es transparente.

, de solo lectura

Especifica la capa del bloque: fondo, primer plano u oculto. Los bloques pueden superponerse; por ejemplo, un bloque de texto puede situarse sobre un bloque de imagen de fondo.

ParaRasterPictureBlockyVectorPictureBlock, puede cambiar la capa mediante el métodoSetBlockLayerType.

De forma predeterminada, el valor de esta propiedad es BLT_Foreground.

Almacena la descripción del bloque.

De forma predeterminada, el valor de esta propiedad es una cadena vacía.

Almacena el nombre del bloque. Puede ser una cadena arbitraria.

De forma predeterminada, el valor de esta propiedad es una cadena vacía.

Permite asociar información definida por el usuario de cualquier tipo con un objeto de tipo Block .

Métodos

NombreDescripción
GetAsBarcodeBlockDevuelve el bloque como un objeto BarcodeBlock. Si el bloque no es un bloque de código de barras, se devuelve NULL.
GetAsCheckmarkBlockDevuelve el bloque como un objeto CheckmarkBlock. Si el bloque no es un bloque de marca de verificación, se devuelve NULL.
GetAsCheckmarkGroupDevuelve el bloque como un objeto CheckmarkGroup. Si el bloque no es un bloque de grupo de marcas de verificación, se devuelve NULL.
GetAsRasterPictureBlockDevuelve el bloque como un objeto RasterPictureBlock. Si el bloque no es un bloque de imagen ráster, se devuelve NULL.
GetAsSeparatorBlockDevuelve el bloque como un objeto SeparatorBlock. Si el bloque no es un bloque separador, se devuelve NULL.
GetAsSeparatorGroupDevuelve el bloque como un objeto SeparatorGroup. Si el bloque no es un bloque de grupo de separadores, se devuelve NULL.
GetAsTableBlockDevuelve el bloque como un objeto TableBlock. Si el bloque no es un bloque de la tabla, se devuelve NULL.
GetAsTextBlockDevuelve el bloque como un objeto TextBlock. Si el bloque no es un bloque de texto, se devuelve NULL.
GetAsVectorPictureBlockDevuelve el bloque como un objeto VectorPictureBlock. Si el bloque no es un bloque de imagen vectorial, se devuelve NULL.
MoveDesplaza la región del bloque según un vector.

Windows

Block

Linux y macOS

BlockLinuxMac Diagrama de objetos

Parámetro de salida

Este objeto es el parámetro de salida de los métodos Item y AddNew del objeto LayoutBlocks.

Ejemplos

int picturesCount = 0;
int suspiciousCharsCount = 0;
int totalCharsCount = 0;
int barcodesCount = 0;
// Calcula el número de caracteres, caracteres sospechosos, imágenes y códigos de barras en un texto
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++;
 }
}
Este objeto se utiliza en los siguientes ejemplos de código:

Consulte también

LayoutBlocks Uso de Layout y Blocks Uso de Propiedades