View a markdown version of this page

Localización de elementos 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.

Localización de elementos en una página de documento

Las operaciones de Amazon Textract devuelven la ubicación y la geometría de los elementos que se encuentran en la página de un documento. DetectDocumentTexty GetDocumentTextDetectiondevuelven la ubicación y la geometría de las líneas y las palabras, AnalyzeDocumenty GetDocumentAnalysisdevuelven la ubicación y la geometría de los pares clave-valor, las tablas, las celdas y los elementos de selección.

Para determinar dónde se encuentra un elemento en la página de un documento, utilice la información del cuadro delimitador (geometría) devuelta por la operación Amazon Textract en un objeto Block. El Geometry objeto contiene dos tipos de información geométrica y de ubicación para los elementos detectados:

  • Un BoundingBoxobjeto alineado con el eje que contiene la coordenada superior izquierda y la anchura y la altura del elemento.

  • Un objeto poligonal que describe el contorno del elemento, especificado como una matriz de objetos Point que contiene X las coordenadas de cada punto de la página del documento Y (eje horizontal) y (eje vertical).

El JSON de un Block objeto tiene un aspecto similar al siguiente. Anote los Polygon campos BoundingBox y.

{ "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 la información geométrica para dibujar cuadros delimitadores alrededor de los elementos detectados. Para ver un ejemplo en el que se utiliza BoundingBox Polygon información para dibujar cuadros alrededor de líneas y líneas verticales al principio y al final de cada palabra, consulteDetección del texto de un documento con Amazon Textract. El resultado del ejemplo es similar al siguiente.

Formulario con campos de nombre, dirección y fecha de nacimiento que muestra los datos personales de Jane Doe con dirección 123 Any Street, Anytown (EE. UU.) y fecha de nacimiento: 26 de diciembre de 1980.

Cuadro delimitador

Un cuadro delimitador () tiene las siguientes propiedades: BoundingBox

  • Altura: la altura del cuadro delimitador expresada en relación con la altura total de la página del documento.

  • Izquierda: la coordenada X del punto superior izquierdo del cuadro delimitador como proporción del ancho total de la página del documento.

  • Arriba: la coordenada Y del punto superior izquierdo del cuadro delimitador como proporción de la altura total de la página del documento.

  • Ancho: ancho del cuadro delimitador expresado en relación con el ancho total de la página del documento.

Cada BoundingBox propiedad tiene un valor entre 0 y 1. El valor es una relación entre el ancho total de la imagen (se aplica a Left yWidth) o la altura (se aplica a Height yTop). 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

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

Diagrama que muestra las propiedades izquierda, superior, anchura y altura que definen un cuadro delimitador en una página.

Para mostrar el cuadro delimitador con la ubicación y el tamaño correctos, multiplique BoundingBox los valores por el ancho o el alto 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 del 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

Estos valores se utilizan para mostrar un cuadro delimitador alrededor del texto analizado. Los siguientes ejemplos de Java y Python muestran 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 lo response devuelto por la operación de 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)

Polygon

El polígono devuelto por AnalyzeDocument es una matriz de objetos Point. Cada uno Point tiene una coordenada X e Y para una ubicación específica en la página del documento. Al igual que las BoundingBox coordenadas, las coordenadas de los polígonos están normalizadas con respecto al ancho y alto del documento y están entre 0 y 1.

Puede usar los puntos de la matriz de polígonos para mostrar un cuadro delimitador más fino alrededor de un objeto. Block Para calcular la posición de cada punto del polígono en la página del documento, utilice la misma técnica que se utilizó para. BoundingBoxes Multiplique la coordenada X por el ancho de la página del documento y multiplique la coordenada Y por la altura de la página del documento.

El siguiente ejemplo 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)); }

Ángulo de rotación

La parte final del objeto geométrico es el ángulo de rotación del texto. El ángulo de rotación es un número entre 0 y 360 que representa el grado de rotación del texto.