Emplacement de l'article sur une page de document - Amazon Textract

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Emplacement de l'article sur une page de document

Les opérations Amazon Textract renvoient l'emplacement et la géométrie des éléments présents sur une page de document.DetectDocumentTextetGetDocumentTextDetectionrenvoie l'emplacement et la géométrie des lignes et des mots, tandis queAnalyzeDocumentetGetDocumentAnalysisrenvoie l'emplacement et la géométrie des paires clé-valeur, des tableaux, des cellules et des éléments de sélection.

Pour déterminer où se trouve un élément sur une page de document, utilisez le cadre de délimitation (Geometry) informations renvoyées par l'opération Amazon Textract dans unBlockobjet. LeGeometryObjets contient deux types d'informations d'emplacement et de géométrie pour les éléments détectés :

  • Un axe alignéBoundingBoxObjets contenant la coordonnée supérieure gauche ainsi que la largeur et la hauteur de l'élément.

  • Objet polygone qui décrit le contour de l'élément, spécifié sous la forme d'un tableau dePointobjets contenantX(axe horizontal) etY(axe vertical) les coordonnées de page de document de chaque point.

Le JSON pour unBlockObjets ressemble à ce qui suit. Notez leBoundingBoxetPolygon.

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

Vous pouvez utiliser les informations de géométrie pour dessiner des zones de sélection autour des éléments détectés. Pour un exemple qui utiliseBoundingBoxetPolygoninformations permettant de dessiner des cases autour des lignes et des lignes verticales au début et à la fin de chaque mot, voirDétection du texte de document avec Amazon Textract. L'exemple de sortie est similaire à ce qui suit.

Bounding Box

Un cadre de délimitation (BoundingBox) possède les propriétés suivantes :

  • Height — Hauteur du cadre de délimitation sous forme de ratio de la hauteur globale de la page du document.

  • Left — Coordonnée X du point supérieur gauche du cadre de délimitation sous forme de ratio de la largeur globale de la page du document.

  • Top — Coordonnée Y du point supérieur gauche du cadre de délimitation sous forme de ratio de la hauteur globale de la page du document.

  • Width — Largeur du cadre de délimitation sous forme de ratio de la largeur globale de la page du document.

Chaque propriété BoundingBox est définie sur une valeur comprise entre 0 et 1. La valeur est un ratio de la largeur d'image globale (s'applique àLeftetWidth) ou hauteur (s'applique àHeightetTop). Par exemple, si l'image d'entrée a une résolution de 700 x 200 pixels, et que la coordonnée supérieure gauche du cadre de délimitation est de (350,50) pixels, l'API renvoie unLeftvaleur de 0,5 (350/700) et unTopvaleur de 0,25 (50/200).

Le schéma suivant illustre la plage d'une page de document couverte par chaque propriété BoundingBox.

Pour afficher le cadre de délimitation avec l'emplacement et la taille appropriés, vous devez multiplier les valeurs de BoundingBox par la largeur ou la hauteur de la page du document (selon la valeur que vous souhaitez) pour obtenir les valeurs en pixels. Vous utilisez les valeurs en pixels pour afficher le cadre de délimitation. Un exemple consiste à utiliser une page de document de 608 pixels de largeur x 588 pixels de hauteur, et les valeurs de cadre de sélection suivantes pour le texte analysé :

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

L'emplacement du cadre de délimitation du texte en pixels est calculé comme suit :

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

Vous utilisez ces valeurs pour afficher un cadre de délimitation autour du texte analysé. Les exemples Java et Python suivants montrent comment afficher un cadre de délimitation.

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

Cet exemple Python prend en compte leresponserenvoyé par leDetectDocumentTextOpération d'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)

Polygone

Le polygone renvoyé parAnalyzeDocumentest un tableau dePointobjets. EACHPointpossède une coordonnée X et Y pour un emplacement spécifique sur la page de document. Comme les coordonnées BoundingBox, les coordonnées surfaciques sont normalisées à la largeur et à la hauteur du document, et se situent entre 0 et 1.

Vous pouvez utiliser des points dans le tableau de polygones pour afficher un cadre de sélection à grain fin autour d'unBlockobjet. Vous calculez la position de chaque point surfacique sur la page de document à l'aide de la même technique utilisée pourBoundingBoxes. Multipliez la coordonnée X par la largeur de la page de document et multipliez la coordonnée Y par la hauteur de la page de document.

L'exemple suivant montre comment afficher les lignes verticales d'un polygone.

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