Posizione dell'articolo 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à.

Posizione dell'articolo in una pagina del documento

Le operazioni di Amazon Textract restituiscono la posizione e la geometria degli articoli trovati nella pagina del documento.DetectDocumentTexteGetDocumentTextDetectionrestituisce la posizione e la geometria per linee e parole, mentreAnalyzeDocumenteGetDocumentAnalysisrestituisce la posizione e la geometria di coppie chiave-valore, tabelle, celle ed elementi di selezione.

Per determinare la posizione in cui un elemento si trova in una pagina di documento, utilizza il riquadro di delimitazione (Geometry) informazioni restituite dall'operazione Amazon Textract in aBlockoggetto. LaGeometryL'oggetto contiene due tipi di posizione e informazioni geometriche per gli elementi rilevati:

  • Un asse allineatoBoundingBoxOggetto contenente la coordinata in alto a sinistra e la larghezza e l'altezza dell'elemento.

  • Un oggetto poligonale che descrive il profilo dell'elemento, specificato come matrice diPointoggetti che contengonoX(asse orizzontale) eY(asse verticale) le coordinate della pagina del documento di ciascun punto.

Il JSON per unBlockL'oggetto è simile a quello riportato di seguito. Nota:BoundingBoxePolygon.

{ "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 selezione attorno agli elementi rilevati. Per un esempio che utilizzaBoundingBoxePolygoninformazioni per disegnare riquadri attorno a linee e linee verticali all'inizio e alla fine di ogni parola, vedereRilevamento del testo del documento con Amazon Textract. L'output di esempio è simile a quello riportato di seguito.

Bounding Box

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

  • Altezza: l'altezza del riquadro di delimitazione come rapporto rispetto all'altezza complessiva della pagina del documento.

  • Sinistra - La coordinata X del punto in alto a sinistra del riquadro di delimitazione come rapporto rispetto alla larghezza complessiva della pagina del documento.

  • Alto - La coordinata Y del punto in alto a sinistra del riquadro di delimitazione come rapporto rispetto all'altezza complessiva della pagina del documento.

  • Larghezza: la larghezza del riquadro di delimitazione come rapporto rispetto alla larghezza complessiva della pagina del documento.

Ciascuna proprietà BoundingBox ha un valore compreso tra 0 e 1. Il valore è un rapporto rispetto alla larghezza complessiva dell'immagine (vale aLefteWidth) o altezza (vale perHeighteTop). Ad esempio, se l'immagine di input è di 700 x 200 pixel e la coordinata superiore sinistra del riquadro di delimitazione è di (350,50) pixel, l'API restituisce unLeftvalore di 0,5 (350/700) e aTopvalore di 0,25 (50/200).

Il diagramma riportato di seguito illustra l'intervallo di una pagina di documento coperto da ciascuna proprietà BoundingBox.

Per visualizzare il riquadro di delimitazione con percorso e dimensioni corretti, devi moltiplicare i valori BoundingBox per la larghezza o l'altezza della pagina del documento (a seconda del valore desiderato) in modo da ottenere i valori in pixel. I valori in pixel servono a visualizzare il riquadro di delimitazione. Un esempio sta utilizzando una pagina documento di 608 pixel di larghezza x 588 pixel di altezza e i seguenti valori del riquadro di selezione 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 delimitazione 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

I valori vengono utilizzati per visualizzare un riquadro attorno al testo analizzato. I seguenti esempi di 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 prende ilresponserestituiti dalDetectDocumentTextOperazione API.

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)

Polygon

Il poligono restituito daAnalyzeDocumentè una matrice diPointobjects. CiascunaPointha una coordinata X e Y per una posizione specifica nella pagina del documento. Come le coordinate BoundingBox, le coordinate poligonali sono normalizzate in base alla larghezza e all'altezza del documento e sono comprese tra 0 e 1.

È possibile utilizzare i punti nella matrice poligonale per visualizzare un riquadro di delimitazione a grana fine attorno aBlockoggetto. Si calcola la posizione di ciascun punto poligonale sulla pagina del documento utilizzando la stessa tecnica utilizzata perBoundingBoxes. Moltiplicare la coordinata X per la larghezza della pagina del documento e moltiplicare 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)); }