Vai al contenuto principale
Questo oggetto rappresenta un singolo blocco. Durante il riconoscimento di una pagina, ABBYY FineReader Engine analizza innanzitutto il layout e rileva sulla pagina blocchi di vario tipo. I blocchi determinano il modo in cui vengono riconosciute le aree dell’immagine e, al termine del riconoscimento, contengono le informazioni riconosciute. Ogni blocco della pagina appartiene a uno dei nove tipi seguenti: testo, tabella, immagine raster, immagine vettoriale, barcode, segno di spunta, gruppo di segni di spunta, Separator e gruppo di separatori. Il tipo del blocco è definito dalla proprietà Type. L’oggetto Block espone metodi che lo convertono in uno dei relativi oggetti figlio, consentendo così di accedere agli attributi estesi di un blocco di un tipo specifico. La posizione del blocco in un’immagine è definita dalla relativa regione (proprietà Region) e dal livello a cui il blocco appartiene (proprietà BlockLayerType).
Il blocco ottenuto dal layout di una FRPage diventa non valido dopo una chiamata a uno qualsiasi dei metodi che eseguono l’analisi del layout (come Analyze o Process) per questa pagina o per il documento a cui appartiene. Dopo l’analisi, individua il blocco necessario nel nuovo layout e continua a lavorare con il nuovo oggetto Block.

Proprietà

,read-only

Restituisce l’oggetto Engine.

Fornisce accesso allaregionedel blocco. Una regione è una raccolta di rettangoli. A differenza degli altri tipi di blocchi, un blocco di tabella può contenere al massimo un rettangolo nella propria regione; pertanto, il tentativo di assegnare una regione con più di un rettangolo a un blocco di tabella genererà un errore. La regione è definita dalle coordinate dei suoi rettangoli (in pixel) sul pianobianco e neroraddrizzato dell’immagine corrispondente.

La proprietà restituisce un oggetto costante. Per modificare la regione del blocco, è necessario prima ottenere un oggetto Region intermedio tramite il metodoIEngine::CreateRegion, modificare i parametri necessari e quindi assegnare l’oggetto ottenuto alla proprietà.

, read-only

ABBYY FineReader Engine utilizza i seguenti tipi di blocchi: testo, tabella, immagine raster, immagine vettoriale, barcode, segno di spunta, gruppo di segni di spunta, separator, gruppo di separator e autoanalisi. (I blocchi di autoanalisi vengono utilizzati solo nei Visual Components). Ogni tipo di blocco dispone di proprietà specifiche.

Il tipo di blocco viene definito in fase di creazione e non può essere modificato. Se è necessario cambiare il tipo di blocco, occorre eliminare il blocco e crearne un altro del tipo necessario esattamente nella stessa posizione:

  1. Creare un oggettotramite il metodoe copiare la regione del blocco da sostituire tramite il metodo.
  2. Eliminare il vecchio blocco dal layout richiamando il metodo.
  3. Creare un nuovo blocco del tipo richiesto e aggiungerlo alla raccolta di layout blocks tramite il metododell’oggetto LayoutBlocks. Passare la Region copiata dal vecchio blocco come uno dei parametri richiesti.

, read-only

Specifica il colore di sfondo del blocco.

Il valore int viene calcolato dalla tripletta RGB tramite la formula: ( valore rosso ) + (256 x valore verde ) + (65536 x valore blu ), dove il valore rosso è il primo componente della tripletta, il valore verde è il secondo componente e il valore blu è il terzo componente. Ad esempio, il valore int del colore bianco è pari a 16777215.

Per impostazione predefinita, il valore di questa proprietà è -1, il che indica che il colore è trasparente.

, read-only

Specifica il layer del blocco: sfondo, primo piano o nascosto. I blocchi possono sovrapporsi; ad esempio, un blocco di testo può trovarsi sopra un blocco immagine di sfondo.

PerRasterPictureBlockeVectorPictureBlock, è possibile modificare il layer tramite il metodoSetBlockLayerType.

Per impostazione predefinita, il valore di questa proprietà è BLT_Foreground.

Contiene la descrizione del blocco.

Per impostazione predefinita, il valore di questa proprietà è una stringa vuota.

Contiene il nome del blocco. Può essere una stringa arbitraria.

Per impostazione predefinita, il valore di questa proprietà è una stringa vuota.

Consente di associare informazioni definite dall’utente di qualsiasi tipo a un oggetto di tipo Block .

Metodi

NomeDescrizione
GetAsBarcodeBlockRestituisce il blocco come oggetto BarcodeBlock. Se il blocco non è un blocco Barcode, viene restituito NULL.
GetAsCheckmarkBlockRestituisce il blocco come oggetto CheckmarkBlock. Se il blocco non è un blocco di segno di spunta, viene restituito NULL.
GetAsCheckmarkGroupRestituisce il blocco come oggetto CheckmarkGroup. Se il blocco non è un blocco di gruppo di segni di spunta, viene restituito NULL.
GetAsRasterPictureBlockRestituisce il blocco come oggetto RasterPictureBlock. Se il blocco non è un blocco di immagine raster, viene restituito NULL.
GetAsSeparatorBlockRestituisce il blocco come oggetto SeparatorBlock. Se il blocco non è un Separator block, viene restituito NULL.
GetAsSeparatorGroupRestituisce il blocco come oggetto SeparatorGroup. Se il blocco non è un blocco di gruppo di separatori, viene restituito NULL.
GetAsTableBlockRestituisce il blocco come oggetto TableBlock. Se il blocco non è un blocco di tabella, viene restituito NULL.
GetAsTextBlockRestituisce il blocco come oggetto TextBlock. Se il blocco non è un blocco di testo, viene restituito NULL.
GetAsVectorPictureBlockRestituisce il blocco come oggetto VectorPictureBlock. Se il blocco non è un blocco di immagine vettoriale, viene restituito NULL.
MoveApplica uno spostamento alla regione del blocco in base a un vettore.

Windows

Block

Linux e macOS

BlockLinuxMac Diagramma degli oggetti

Parametro di output

Questo oggetto è il parametro di output dei metodi Item e AddNew dell’oggetto LayoutBlocks.

Esempi

int picturesCount = 0;
int suspiciousCharsCount = 0;
int totalCharsCount = 0;
int barcodesCount = 0;
// Calcola il numero di caratteri, caratteri sospetti, immagini e Barcode in un testo
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’oggetto viene utilizzato nei seguenti esempi di codice:

Vedi anche

LayoutBlocks Lavorare con Layout e i Block Lavorare con le proprietà