View a markdown version of this page

Individuazione degli elementi in una pagina del documento - Amazon Textract

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Individuazione degli elementi in una pagina del documento

Le operazioni di Amazon Textract restituiscono la posizione e la geometria degli elementi trovati in una pagina del documento. DetectDocumentTexte GetDocumentTextDetectionrestituisce la posizione e la geometria di linee e parole, mentre GetDocumentAnalysisrestituisce la posizione AnalyzeDocumente la geometria di coppie chiave-valore, tabelle, celle ed elementi di selezione.

Per determinare dove si trova un elemento su una pagina del documento, utilizza le informazioni del bounding box (Geometry) restituite dall'operazione Amazon Textract in un oggetto Block. L'Geometryoggetto contiene due tipi di informazioni sulla posizione e sulla geometria degli elementi rilevati:

  • Un BoundingBoxoggetto allineato all'asse che contiene la coordinata in alto a sinistra e la larghezza e l'altezza dell'elemento.

  • Un oggetto poligonale che descrive il contorno dell'elemento, specificato come una matrice di oggetti Point che contengono le coordinate (asse orizzontale) e X Y (asse verticale) della pagina del documento di ciascun punto.

Il codice JSON di un Block oggetto è simile al seguente. Nota i Polygon campi BoundingBox e.

{ "Geometry": { "BoundingBox": { "Width": 0.053907789289951324, "Top": 0.08913730084896088, "Left": 0.11085548996925354, "Height": 0.013171200640499592 }, "Polygon": [ { "Y": 0.08985357731580734, "X": 0.11085548996925354 }, { "Y": 0.08913730084896088, "X": 0.16447919607162476 }, { "Y": 0.10159222036600113, "X": 0.16476328670978546 }, { "Y": 0.10230850428342819, "X": 0.11113958805799484 } ] }, "Text": "Name:", "TextType": "PRINTED", "BlockType": "WORD", "Confidence": 99.56285858154297, "Id": "c734fca6-c4c4-415c-b6c1-30f7510b72ee" },

È possibile utilizzare le informazioni sulla geometria per disegnare riquadri di delimitazione attorno agli elementi rilevati. Per un esempio che utilizza BoundingBox Polygon le informazioni per disegnare riquadri attorno a linee e linee verticali all'inizio e alla fine di ogni parola, vedi. Rilevamento del testo di un documento con Amazon Textract L'output di esempio è simile al seguente.

Modulo con campi per nome, indirizzo e data di nascita che mostra le informazioni personali di Jane Doe con indirizzo 123 Any Street, Anytown, USA e data di nascita 12-26-1980.

Riquadro di delimitazione

Un riquadro di delimitazione () ha le seguenti proprietà: BoundingBox

  • Altezza: l'altezza del riquadro di selezione come rapporto con l'altezza complessiva della pagina del documento.

  • Sinistra: la coordinata X del punto in alto a sinistra del riquadro di selezione come rapporto della larghezza complessiva della pagina del documento.

  • In alto: la coordinata Y del punto in alto a sinistra del riquadro di selezione come rapporto dell'altezza complessiva della pagina del documento.

  • Larghezza: la larghezza del riquadro di selezione come rapporto tra la larghezza complessiva della pagina del documento.

Ogni BoundingBox proprietà ha un valore compreso tra 0 e 1. Il valore è un rapporto tra la larghezza complessiva dell'immagine (si applica a Left andWidth) o l'altezza (si applica a Height andTop). Ad esempio, se l'immagine di input è di 700 x 200 pixel e la coordinata in alto a sinistra del riquadro di delimitazione è di (350,50) pixel, l'API restituisce un Left valore di 0,5 (350/700) e un Top valore di 0,25 (). 50/200

Il diagramma seguente mostra l'intervallo di una pagina di documento coperto da ciascuna proprietà. BoundingBox

Diagramma che mostra le proprietà Left, Top, Width e Height che definiscono un riquadro di delimitazione su una pagina.

Per visualizzare il riquadro di selezione con la posizione e le dimensioni corrette, moltiplicate BoundingBox i valori per la larghezza o l'altezza della pagina del documento (a seconda del valore desiderato) per ottenere i valori dei pixel. I valori in pixel servono a visualizzare il riquadro di delimitazione. Un esempio è l'utilizzo di una pagina di documento di 608 pixel di larghezza x 588 pixel di altezza e i seguenti valori del riquadro di delimitazione per il testo analizzato:

BoundingBox.Left: 0.3922065 BoundingBox.Top: 0.15567766 BoundingBox.Width: 0.284666 BoundingBox.Height: 0.2930403

La posizione del riquadro di selezione del testo in pixel viene calcolata come segue:

Left coordinate = BoundingBox.Left (0.3922065) * document page width (608) = 238

Top coordinate = BoundingBox.Top (0.15567766) * document page height (588) = 91

Bounding box width = BoundingBox.Width (0.284666) * document page width (608) = 173

Bounding box height = BoundingBox.Height (0.2930403) * document page height (588) = 172

Utilizzate questi valori per visualizzare un riquadro di delimitazione attorno al testo analizzato. I seguenti esempi in Java e Python mostrano come visualizzare un riquadro di delimitazione.

Java
public void ShowBoundingBox(int imageHeight, int imageWidth, BoundingBox box, Graphics2D g2d) { float left = imageWidth * box.getLeft(); float top = imageHeight * box.getTop(); // Display bounding box. g2d.setColor(new Color(0, 212, 0)); g2d.drawRect(Math.round(left / scale), Math.round(top / scale), Math.round((imageWidth * box.getWidth()) / scale), Math.round((imageHeight * box.getHeight())) / scale); }
Python

Questo esempio di Python accetta l'operazione response restituita dall'DetectDocumentTextAPI.

def process_text_detection(response): # Get the text blocks blocks = response['Blocks'] width, height = image.size draw = ImageDraw.Draw(image) print('Detected Document Text') # Create image showing bounding box/polygon the detected lines/text for block in blocks: draw = ImageDraw.Draw(image) if block['BlockType'] == "LINE": box=block['Geometry']['BoundingBox'] left = width * box['Left'] top = height * box['Top'] draw.rectangle([left,top, left + (width * box['Width']), top +(height * box['Height'])],outline='black') # Display the image image.show() return len(blocks)

Poligono

Il poligono restituito da AnalyzeDocument è una matrice di oggetti Point. Ciascuno Point ha una coordinata X e Y per una posizione specifica nella pagina del documento. Come le BoundingBox coordinate, le coordinate del poligono sono normalizzate alla larghezza e all'altezza del documento e sono comprese tra 0 e 1.

È possibile utilizzare i punti nell'array di poligoni per visualizzare un riquadro di delimitazione a grana più fine attorno a un oggetto. Block Si calcola la posizione di ogni punto poligonale sulla pagina del documento utilizzando la stessa tecnica utilizzata per. BoundingBoxes Moltiplicate la coordinata X per la larghezza della pagina del documento e moltiplicate la coordinata Y per l'altezza della pagina del documento.

L'esempio seguente mostra come visualizzare le linee verticali di un poligono.

public void ShowPolygonVerticals(int imageHeight, int imageWidth, List <Point> points, Graphics2D g2d) { g2d.setColor(new Color(0, 212, 0)); Object[] parry = points.toArray(); g2d.setStroke(new BasicStroke(2)); g2d.drawLine(Math.round(((Point) parry[0]).getX() * imageWidth), Math.round(((Point) parry[0]).getY() * imageHeight), Math.round(((Point) parry[3]).getX() * imageWidth), Math.round(((Point) parry[3]).getY() * imageHeight)); g2d.setColor(new Color(255, 0, 0)); g2d.drawLine(Math.round(((Point) parry[1]).getX() * imageWidth), Math.round(((Point) parry[1]).getY() * imageHeight), Math.round(((Point) parry[2]).getX() * imageWidth), Math.round(((Point) parry[2]).getY() * imageHeight)); }

Angolo di rotazione

La parte finale dell'oggetto Geometry è l'angolo di rotazione del testo. L'angolo di rotazione è un numero compreso tra 0 e 360 che rappresenta il grado di rotazione del testo.