

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
<a name="text-location"></a>

Le operazioni di Amazon Textract restituiscono la posizione e la geometria degli articoli trovati nella pagina del documento.[DetectDocumentText](API_DetectDocumentText.md)e[GetDocumentTextDetection](API_GetDocumentTextDetection.md)restituisce la posizione e la geometria per linee e parole, mentre[AnalyzeDocument](API_AnalyzeDocument.md)e[GetDocumentAnalysis](API_GetDocumentAnalysis.md)restituisce 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](API_Geometry.md)) informazioni restituite dall'operazione Amazon Textract in a[Block](API_Block.md)oggetto. La`Geometry`L'oggetto contiene due tipi di posizione e informazioni geometriche per gli elementi rilevati:
+ Un asse allineato[BoundingBox](API_BoundingBox.md)Oggetto 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 di[Point](API_Point.md)oggetti che contengono`X`(asse orizzontale) e`Y`(asse verticale) le coordinate della pagina del documento di ciascun punto.

Il JSON per un`Block`L'oggetto è simile a quello riportato di seguito. Nota:`BoundingBox`e`Polygon`.

```
{
    "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 utilizza`BoundingBox`e`Polygon`informazioni per disegnare riquadri attorno a linee e linee verticali all'inizio e alla fine di ogni parola, vedere[Rilevamento del testo del documento con Amazon Textract](detecting-document-text.md). L'output di esempio è simile a quello riportato di seguito.

![](http://docs.aws.amazon.com/it_it/textract/latest/dg/images/janedoe.png)


## Bounding Box
<a name="bounding-box"></a>

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 a`Left`e`Width`) o altezza (vale per`Height`e`Top`). 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 un`Left`valore di 0,5 (350/700) e a`Top`valore di 0,25 (50/200). 

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

![](http://docs.aws.amazon.com/it_it/textract/latest/dg/images/bounding-box.png)


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 il`response`restituiti dal[DetectDocumentText](API_DetectDocumentText.md)Operazione 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
<a name="polygon"></a>

Il poligono restituito da`AnalyzeDocument`è una matrice di[Point](API_Point.md)objects. Ciascuna`Point`ha 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 a`Block`oggetto. Si calcola la posizione di ciascun punto poligonale sulla pagina del documento utilizzando la stessa tecnica utilizzata per`BoundingBoxes`. 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));

    }
```