Ubicación del elemento en una página de documento - Amazon Textract

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

Las operaciones de Amazon Textract devuelven la ubicación y la geometría de los artículos encontrados en una página de documento.DetectDocumentTextyGetDocumentTextDetectiondevuelve la ubicación y la geometría de líneas y palabras, mientras queAnalyzeDocumentyGetDocumentAnalysisDevuelve 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) información devuelta por la operación Amazon Textract Texact en unBlockobject. LaGeometryobjeto contiene dos tipos de ubicación e información geométrica para elementos detectados:

  • Un eje alineadoBoundingBoxobjeto 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 dePointobjetos que contienenX(eje horizontal) yYcoordenadas de página de documento (eje vertical) de cada punto.

El JSON para unBlockEl objeto tiene un aspecto similar al siguiente. Tenga en cuenta laBoundingBoxyPolygon.

{ "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 utilizaBoundingBoxyPolygoninformación para dibujar cuadros alrededor de líneas y líneas verticales al principio y al final de cada palabra, consulteDetección de texto de documento con Amazon Textract. El ejemplo de resultado es similar al siguiente.

Bounding Box

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 aLeftyWidth) o altura (se aplica aHeightyTop). 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 unLeftvalor de 0,5 (350/700) y unTopvalor de 0,25 (50/200).

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

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 elresponsedevuelto por elDetectDocumentTextOperació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)

El polígono devuelto porAnalyzeDocumentes una matriz dePointobjects. CadaPointtiene 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 unBlockobject. La posición de cada punto poligonal en la página del documento se calcula utilizando la misma técnica utilizada paraBoundingBoxes. 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)); }