View a markdown version of this page

Localizando itens em uma página de documento - Amazon Textract

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Localizando itens em uma página de documento

As operações do Amazon Textract retornam a localização e a geometria dos itens encontrados em uma página do documento. DetectDocumentTexte GetDocumentTextDetectionretorna a localização e a geometria de linhas e palavras, enquanto GetDocumentAnalysisretorna a localização AnalyzeDocumente a geometria de pares de valores-chave, tabelas, células e elementos de seleção.

Para determinar onde um item está na página do documento, use as informações da caixa delimitadora (geometria) retornadas pela operação Amazon Textract em um objeto Block. O Geometry objeto contém dois tipos de localização e informações geométricas dos itens detectados:

  • Um BoundingBoxobjeto alinhado ao eixo que contém a coordenada superior esquerda e a largura e a altura do item.

  • Um objeto poligonal que descreve o contorno do item, especificado como uma matriz de objetos Point que contêm coordenadas da página do documento X (eixo horizontal) e Y (eixo vertical) de cada ponto.

O JSON de um Block objeto é semelhante ao seguinte. Observe BoundingBox os Polygon campos e.

{ "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" },

Você pode usar informações de geometria para desenhar caixas delimitadoras ao redor dos itens detectados. Para obter um exemplo de uso BoundingBox de Polygon informações para desenhar caixas ao redor de linhas e linhas verticais no início e no final de cada palavra, consulteDetecção de texto de documentos com o Amazon Textract. O exemplo de saída é semelhante ao seguinte.

Formulário com campos para nome, endereço e data de nascimento exibindo informações pessoais de Jane Doe com endereço 123 Any Street, Anytown, EUA e data de nascimento 12-26-1980.

Caixa delimitadora

Uma caixa delimitadora (BoundingBox) tem as seguintes propriedades:

  • Altura — A altura da caixa delimitadora como uma proporção da altura geral da página do documento.

  • Esquerda — A coordenada X do ponto superior esquerdo da caixa delimitadora como uma proporção da largura geral da página do documento.

  • Superior — A coordenada Y do ponto superior esquerdo da caixa delimitadora como uma proporção da altura geral da página do documento.

  • Largura — A largura da caixa delimitadora como uma proporção da largura geral da página do documento.

Cada BoundingBox propriedade tem um valor entre 0 e 1. O valor é uma proporção entre a largura geral da imagem (se aplica a Left eWidth) ou a altura (se aplica a Height eTop). Por exemplo, se a imagem de entrada tiver 700 x 200 pixels e a coordenada superior esquerda da caixa delimitadora for (350,50) pixels, a API retornará um Left valor de 0,5 () e um Top valor de 0,25 (350/700). 50/200

O diagrama a seguir mostra o intervalo de uma página do documento que cada BoundingBox propriedade cobre.

Diagrama mostrando as propriedades Esquerda, Superior, Largura e Altura definindo uma caixa delimitadora em uma página.

Para exibir a caixa delimitadora com a localização e o tamanho corretos, multiplique os BoundingBox valores pela largura ou altura da página do documento (dependendo do valor desejado) para obter os valores em pixels. Você pode usar os valores de pixel para exibir a caixa delimitadora. Um exemplo é usar uma página de documento de 608 pixels de largura x 588 pixels de altura e os seguintes valores de caixa delimitadora para o texto analisado:

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

A localização da caixa delimitadora de texto em pixels é calculada da seguinte forma:

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

Você usa esses valores para exibir uma caixa delimitadora ao redor do texto analisado. Os exemplos de Java e Python a seguir demonstram como exibir uma caixa delimitadora.

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

Este exemplo em Python considera o response retornado pela operação da 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)

Polígono

O polígono retornado por AnalyzeDocument é uma matriz de objetos Point. Cada um Point tem uma coordenada X e Y para um local específico na página do documento. Assim como as BoundingBox coordenadas, as coordenadas do polígono são normalizadas para a largura e altura do documento e estão entre 0 e 1.

Você pode usar pontos na matriz de polígonos para exibir uma caixa delimitadora de granulação mais fina ao redor de um objeto. Block Você calcula a posição de cada ponto poligonal na página do documento usando a mesma técnica usada para. BoundingBoxes Multiplique a coordenada X pela largura da página do documento e multiplique a coordenada Y pela altura da página do documento.

O exemplo a seguir mostra como exibir as linhas verticais de um 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 rotação

A parte final do objeto Geometry é o ângulo de rotação do texto. O ângulo de rotação é um número entre 0 e 360 que representa o grau em que o texto é girado.