

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ubicación del elemento en una página de documento
<a name="text-location"></a>

Las operaciones de Amazon Textract devuelven la ubicación y la geometría de los artículos encontrados en una página de documento.[DetectDocumentText](API_DetectDocumentText.md)y[GetDocumentTextDetection](API_GetDocumentTextDetection.md)devuelve la ubicación y la geometría de líneas y palabras, mientras que[AnalyzeDocument](API_AnalyzeDocument.md)y[GetDocumentAnalysis](API_GetDocumentAnalysis.md)Devuelve la ubicación y la geometría de pares clave-valor, tablas, celdas y elementos de selección.

Para determinar dónde está un elemento en una página de documento, utilice el cuadro delimitador ([Geometry](API_Geometry.md)) información devuelta por la operación Amazon Textract Texact en un[Block](API_Block.md)object. La`Geometry`objeto contiene dos tipos de ubicación e información geométrica para elementos detectados:
+ Un eje alineado[BoundingBox](API_BoundingBox.md)objeto que contiene la coordenada superior izquierda y la anchura y la altura del elemento.
+ Objeto poligonal que describe el contorno del elemento, especificado como una matriz de[Point](API_Point.md)objetos que contienen`X`(eje horizontal) y`Y`coordenadas de página de documento (eje vertical) de cada punto.

El JSON para un`Block`El objeto tiene un aspecto similar al siguiente. Tenga en cuenta la`BoundingBox`y`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"
},
```

Puede utilizar información de geometría para dibujar cuadros delimitadores alrededor de los elementos detectados. Para un ejemplo que utiliza`BoundingBox`y`Polygon`información para dibujar cuadros alrededor de líneas y líneas verticales al principio y al final de cada palabra, consulte[Detección de texto de documento con Amazon Textract](detecting-document-text.md). El ejemplo de resultado es similar al siguiente.

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


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

Un cuadro delimitador (`BoundingBox`) presenta las siguientes propiedades:
+ Height: la altura del cuadro delimitador expresada proporcionalmente respecto a la altura total de página del documento.
+ Left: coordenada X del punto superior izquierdo del cuadro delimitador expresada proporcionalmente respecto a la anchura total de página del documento.
+ Top: La coordenada Y del punto superior izquierdo del cuadro delimitador expresada proporcionalmente respecto a la altura total de la página del documento.
+ Width: anchura del cuadro delimitador expresada proporcionalmente respecto a la anchura total de página del documento.

Cada propiedad de BoundingBox tiene un valor comprendido entre 0 y 1. El valor es una ratio del ancho total de la imagen (se aplica a`Left`y`Width`) o altura (se aplica a`Height`y`Top`). Por ejemplo, si la imagen de entrada es de 700 x 200 píxeles y la coordenada superior izquierda del cuadro delimitador es de (350,50) píxeles, la API devuelve un`Left`valor de 0,5 (350/700) y un`Top`valor de 0,25 (50/200). 

En el siguiente diagrama se muestra el rango de una página de documento que cubre cada propiedad BoundingBox.

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


Para mostrar el cuadro delimitador con su ubicación y tamaño correctos, debe multiplicar los valores de BoundingBox por la anchura o altura de la página del documento (según el valor que desee) para obtener los valores en píxeles. Los valores en píxeles se utilizan para mostrar el cuadro delimitador. Un ejemplo es utilizar una página de documento de 608 píxeles de ancho x 588 píxeles de alto y los siguientes valores de cuadro delimitador para el texto analizado: 

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

La ubicación del cuadro delimitador de texto en píxeles se calcula de la siguiente manera: 

`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`

Puede utilizar estos valores para mostrar un cuadro delimitador enmarcan el texto analizado. En los siguientes ejemplos de Java y Python se muestra cómo mostrar un cuadro delimitador.

------
#### [ 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 ]

En este ejemplo de Python se incluye el`response`devuelto por el[DetectDocumentText](API_DetectDocumentText.md)Operación de la 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 (Polígono)
<a name="polygon"></a>

El polígono devuelto por`AnalyzeDocument`es una matriz de[Point](API_Point.md)objects. Cada`Point`tiene una coordenada X e Y para una ubicación específica de la página del documento. Al igual que las coordenadas de BoundingBox, las coordenadas poligonales se normalizan a la anchura y la altura del documento y están entre 0 y 1. 

Puede utilizar puntos de la matriz de polígonos para mostrar un cuadro delimitador de grano fino alrededor de un`Block`object. La posición de cada punto poligonal en la página del documento se calcula utilizando la misma técnica utilizada para`BoundingBoxes`. Multiplique la coordenada X por el ancho de página del documento y multiplique la coordenada Y por el alto de página del documento.

En el ejemplo siguiente se muestra cómo mostrar las líneas verticales de un polígono.

```
    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));

    }
```