Zum Hauptinhalt springen
Dieses Objekt stellt einen einzelnen Block dar. Bei der Erkennung einer Seite analysiert ABBYY FineReader Engine zunächst deren Layout und erkennt Blöcke verschiedener Typen auf der Seite. Blöcke legen fest, wie die Bildbereiche erkannt werden, und enthalten nach der Erkennung die erkannten Informationen. Jeder Block auf der Seite gehört zu einem von neun Typen: Text, Tabelle, Rasterbild, Vektorbild, Barcode, Häkchen, Häkchengruppe, Trennlinie und Trennliniengruppe. Der Typ des Blocks wird durch die Eigenschaft Type definiert. Das Block-Objekt stellt Methoden bereit, die es in eines seiner untergeordneten Objekte umwandeln und dadurch Zugriff auf die erweiterten Attribute eines Blocks eines bestimmten Typs ermöglichen. Die Position des Blocks auf einem Bild wird durch seine Region (die Eigenschaft Region) und die Ebene, zu der der Block gehört (die Eigenschaft BlockLayerType), definiert.
Der Block, den Sie aus dem Layout einer FRPage erhalten, wird nach dem Aufruf einer Methode, die eine Layout-Analyse durchführt (z. B. Analyze oder Process ), für diese Seite oder das Dokument, zu dem sie gehört, ungültig. Suchen Sie den benötigten Block nach der Analyse im neuen Layout und arbeiten Sie mit dem neuen Block-Objekt weiter.

Eigenschaften

,read-only

Gibt das Engine-Objekt zurück.

Ermöglicht den Zugriff auf dieRegiondes Blocks. Eine Region ist eine Sammlung von Rechtecken. Im Gegensatz zu anderen Blocktypen darf ein Tabellenblock in seiner Region höchstens ein Rechteck haben. Daher führt der Versuch, einem Tabellenblock eine Region mit mehr als einem Rechteck zuzuweisen, zu einem Fehler. Die Region wird durch die Koordinaten ihrer Rechtecke (in Pixeln) auf der an der Schieflage korrigiertenSchwarz-WeißEbene des entsprechenden Bildes definiert.

Die Eigenschaft gibt ein konstantes Objekt zurück. Um die Blockregion zu ändern, müssen Sie zunächst mithilfe der MethodeIEngine::CreateRegionein temporäres Region-Objekt erstellen, die erforderlichen Parameter ändern und das erzeugte Objekt dann der Eigenschaft zuweisen.

, nur lesbar

ABBYY FineReader Engine verwendet die folgenden Blocktypen: Text, Tabelle, Rasterbild, Vektorbild, Barcode, Häkchen, Häkchengruppe, Trennlinie, Trennliniengruppe und Autoanalyse. (Autoanalyseblöcke werden nur in Visual Components verwendet.) Jeder Blocktyp verfügt über eigene spezifische Eigenschaften.

Der Blocktyp wird bei der Erstellung festgelegt und kann nicht geändert werden. Wenn Sie den Blocktyp ändern müssen, müssen Sie den Block löschen und an genau derselben Stelle einen anderen Block des erforderlichen Typs erstellen:

  1. Erstellen Sie mit der Methodeein-Objekt und kopieren Sie mithilfe der Methodedie Region des Blocks, den Sie ersetzen möchten.
  2. Löschen Sie den alten Block aus dem Layout, indem Sie die Methodeaufrufen.
  3. Erstellen Sie einen neuen Block des erforderlichen Typs und fügen Sie ihn mithilfe der Methodedes Objekts LayoutBlocks zur Sammlung der Layoutblöcke hinzu. Übergeben Sie die Region, die Sie aus dem alten Block kopiert haben, als einen der erforderlichen Parameter.

, nur lesbar

Gibt die Hintergrundfarbe des Blocks an.

Der int-Wert wird aus dem RGB-Tripel nach folgender Formel berechnet: ( Rotwert ) + (256 x Grünwert ) + (65536 x Blauwert ), wobei der Rotwert die erste Komponente des Tripels ist, der Grünwert die zweite Komponente und der Blauwert die dritte Komponente. Beispielsweise beträgt der int-Wert der Farbe Weiß 16777215.

Standardmäßig ist der Wert dieser Eigenschaft -1, was bedeutet, dass die Farbe transparent ist.

, nur lesbar

Gibt die Ebene des Blocks an: Hintergrund, Vordergrund oder ausgeblendet. Blöcke können überlagert sein; so kann beispielsweise ein Textblock über einem Hintergrundbildblock liegen.

BeiRasterPictureBlockundVectorPictureBlockkönnen Sie die Ebene mithilfe der MethodeSetBlockLayerTypeändern.

Standardmäßig ist der Wert dieser Eigenschaft BLT_Foreground.

Speichert die Beschreibung des Blocks.

Standardmäßig ist der Wert dieser Eigenschaft eine leere Zeichenkette.

Speichert den Namen des Blocks. Dies kann eine beliebige Zeichenkette sein.

Standardmäßig ist der Wert dieser Eigenschaft eine leere Zeichenkette.

Ermöglicht die Verknüpfung benutzerdefinierter Informationen beliebigen Typs mit einem Objekt des Typs Block.

Methoden

NameBeschreibung
GetAsBarcodeBlockGibt den Block als Objekt BarcodeBlock zurück. Ist der Block kein Barcode-Block, wird NULL zurückgegeben.
GetAsCheckmarkBlockGibt den Block als Objekt CheckmarkBlock zurück. Ist der Block kein Häkchenblock, wird NULL zurückgegeben.
GetAsCheckmarkGroupGibt den Block als Objekt CheckmarkGroup zurück. Ist der Block kein CheckmarkGroup-Block, wird NULL zurückgegeben.
GetAsRasterPictureBlockGibt den Block als Objekt RasterPictureBlock zurück. Ist der Block kein Rasterbildblock, wird NULL zurückgegeben.
GetAsSeparatorBlockGibt den Block als Objekt SeparatorBlock zurück. Ist der Block kein Trennlinienblock, wird NULL zurückgegeben.
GetAsSeparatorGroupGibt den Block als Objekt SeparatorGroup zurück. Ist der Block kein Trennliniengruppen-Block, wird NULL zurückgegeben.
GetAsTableBlockGibt den Block als Objekt TableBlock zurück. Ist der Block kein Tabellenblock, wird NULL zurückgegeben.
GetAsTextBlockGibt den Block als Objekt TextBlock zurück. Ist der Block kein Textblock, wird NULL zurückgegeben.
GetAsVectorPictureBlockGibt den Block als Objekt VectorPictureBlock zurück. Ist der Block kein Vektorbildblock, wird NULL zurückgegeben.
MoveVerschiebt die Region des Blocks um einen Vektor.

Windows

Block

Linux und macOS

BlockLinuxMac Objektdiagramm

Ausgabeparameter

Dieses Objekt ist der Ausgabeparameter der Methoden Item und AddNew des Objekts LayoutBlocks.

Beispiele

int picturesCount = 0;
int suspiciousCharsCount = 0;
int totalCharsCount = 0;
int barcodesCount = 0;
// Berechnet die Anzahl der Zeichen, fraglichen Zeichen, Bilder und Barcodes in einem Text
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++;
 }
}
Das Objekt wird in den folgenden Codebeispielen verwendet:

Siehe auch

LayoutBlocks Arbeiten mit Layout und Blöcken Arbeiten mit Eigenschaften