Passer au contenu principal
Cet objet représente un bloc unique. Lors de la reconnaissance d’une page, ABBYY FineReader Engine analyse d’abord la mise en page et détecte sur la page des blocs de différents types. Les blocs déterminent la manière dont les zones de l’image sont reconnues et contiennent les informations reconnues après la reconnaissance. Chaque bloc de la page relève de l’un des neuf types suivants : texte, tableau, image matricielle, image vectorielle, Barcode, coche, groupe de coches, Separator et groupe de Separators. Le type du bloc est défini par la propriété Type. L’objet Block expose des méthodes qui permettent de le transtyper en l’un de ses objets enfants et donnent ainsi accès aux attributs étendus d’un bloc d’un type spécifique. La position du bloc sur une image est définie par sa région (propriété Region) et par le calque auquel le bloc appartient (propriété BlockLayerType).
Le bloc obtenu à partir de la mise en page d’une FRPage ne sera plus valide après l’appel à l’une des méthodes qui effectuent l’analyse de la mise en page (comme Analyze ou Process ) pour cette page ou pour le document auquel elle appartient. Après l’analyse, recherchez le bloc souhaité dans la nouvelle mise en page et continuez à travailler avec le nouvel objet Block.

Propriétés

,lecture seule

Retourne l’objet Engine.

Donne accès à larégiondu bloc. Une région est une collection de rectangles. Contrairement aux autres types de blocs, un table block ne peut contenir qu’un seul rectangle dans sa région ; toute tentative d’assigner une région comportant plusieurs rectangles à un table block génèrera une erreur. La région est définie par les coordonnées de ses rectangles (en pixels) sur le planblack-and-whiteredressé de l’image correspondante.

La propriété retourne un objet constant. Pour modifier la région du bloc, vous devez d’abord obtenir un objet Region intermédiaire via la méthodeIEngine::CreateRegion, modifier les paramètres nécessaires, puis assigner l’objet obtenu à la propriété.

, lecture seule

ABBYY FineReader Engine utilise les types de blocs suivants : texte, tableau, image raster, image vectorielle, Barcode, coche, groupe de coches, Separator, groupe de Separators et autoanalyse. (Les blocs d’autoanalyse sont utilisés uniquement dans les composants visuels.) Chaque type de bloc dispose de ses propres propriétés spécifiques.

Le type de bloc est défini à la création et ne peut pas être modifié. Si vous devez changer le type de bloc, vous devrez supprimer le bloc et en créer un nouveau du type requis exactement au même emplacement :

  1. Créez un objetvia la méthodeet copiez la région du bloc à remplacer à l’aide de la méthode.
  2. Supprimez l’ancien bloc du layout en appelant la méthode.
  3. Créez un nouveau bloc du type requis et ajoutez-le à la collection de layout blocks à l’aide de la méthodede l’objet LayoutBlocks. Transmettez la Region copiée depuis l’ancien bloc en tant que paramètre requis.

, lecture seule

Indique la couleur d’arrière-plan du bloc.

La valeur int est calculée à partir du triplet RVB selon la formule : (valeur rouge) + (256 × valeur verte) + (65536 × valeur bleue), où la valeur rouge est le premier composant du triplet, la valeur verte le deuxième et la valeur bleue le troisième. Par exemple, la valeur int de la couleur blanche est 16777215.

Par défaut, la valeur de cette propriété est -1, ce qui signifie que la couleur est transparente.

, lecture seule

Indique le calque du bloc : arrière-plan, premier plan ou masqué. Les blocs peuvent se superposer ; par exemple, un bloc de texte peut se trouver au-dessus d’un bloc d’image en arrière-plan.

PourRasterPictureBlocketVectorPictureBlock, vous pouvez modifier le calque à l’aide de la méthodeSetBlockLayerType.

Par défaut, la valeur de cette propriété est BLT_Foreground.

Contient la description du bloc.

Par défaut, la valeur de cette propriété est une chaîne vide.

Contient le nom du bloc. Il peut s’agir d’une chaîne quelconque.

Par défaut, la valeur de cette propriété est une chaîne vide.

Permet d’associer des informations définies par l’utilisateur, de n’importe quel type, à un objet de type Block .

Méthodes

NameDescription
GetAsBarcodeBlockRenvoie le bloc sous la forme d’un objet BarcodeBlock. Si le bloc n’est pas un bloc Barcode, NULL est renvoyé.
GetAsCheckmarkBlockRenvoie le bloc sous la forme d’un objet CheckmarkBlock. Si le bloc n’est pas un bloc de coche, NULL est renvoyé.
GetAsCheckmarkGroupRenvoie le bloc sous la forme d’un objet CheckmarkGroup. Si le bloc n’est pas un bloc de groupe de coches, NULL est renvoyé.
GetAsRasterPictureBlockRenvoie le bloc sous la forme d’un objet RasterPictureBlock. Si le bloc n’est pas un bloc d’image matricielle, NULL est renvoyé.
GetAsSeparatorBlockRenvoie le bloc sous la forme d’un objet SeparatorBlock. Si le bloc n’est pas un bloc Separator, NULL est renvoyé.
GetAsSeparatorGroupRenvoie le bloc sous la forme d’un objet SeparatorGroup. Si le bloc n’est pas un bloc de groupe Separator, NULL est renvoyé.
GetAsTableBlockRenvoie le bloc sous la forme d’un objet TableBlock. Si le bloc n’est pas un bloc de tableau, NULL est renvoyé.
GetAsTextBlockRenvoie le bloc sous la forme d’un objet TextBlock. Si le bloc n’est pas un bloc de texte, NULL est renvoyé.
GetAsVectorPictureBlockRenvoie le bloc sous la forme d’un objet VectorPictureBlock. Si le bloc n’est pas un bloc d’image vectorielle, NULL est renvoyé.
MoveDécale la région du bloc selon un vecteur donné.

Windows

Block

Linux et macOS

BlockLinuxMac Diagramme d’objets

Paramètre de sortie

Cet objet est le paramètre de sortie des méthodes Item et AddNew de l’objet LayoutBlocks.

Exemples

int picturesCount = 0;
int suspiciousCharsCount = 0;
int totalCharsCount = 0;
int barcodesCount = 0;
// Calcule le nombre de caractères, de caractères suspects, d’images et de codes-barres dans un texte
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++;
 }
}
L’objet est utilisé dans les exemples de code suivants :

Voir aussi

LayoutBlocks Utilisation de Layout et des Blocks Utilisation des propriétés