View a markdown version of this page

Localisation d'éléments 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.

Localisation d'éléments sur une page de document

Les opérations Amazon Textract renvoient l'emplacement et la géométrie des éléments trouvés sur une page de document. DetectDocumentTextet GetDocumentTextDetectionrenvoient l'emplacement et la géométrie des lignes et des mots, tandis que l'emplacement AnalyzeDocumentet GetDocumentAnalysisla géométrie des paires clé-valeur, des tableaux, des cellules et des éléments de sélection sont renvoyés.

Pour déterminer où se trouve un article sur une page de document, utilisez les informations du cadre de délimitation (géométrie) renvoyées par l'opération Amazon Textract dans un objet Block. L'Geometryobjet contient deux types d'informations de localisation et de géométrie pour les éléments détectés :

  • BoundingBoxObjet aligné sur l'axe qui contient les coordonnées en haut à gauche ainsi que la largeur et la hauteur de l'élément.

  • Objet polygonal qui décrit le contour de l'élément, spécifié sous la forme d'un tableau d'objets Point contenant les coordonnées X (axe horizontal) et Y (axe vertical) des pages de document de chaque point.

Le JSON d'un Block objet ressemble à ce qui suit. Notez les Polygon champs BoundingBox et.

{ "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 tracer des cadres autour des objets détectés. Pour un exemple qui utilise des BoundingBox Polygon informations pour dessiner des cases autour de lignes et de lignes verticales au début et à la fin de chaque mot, voirDétecter le texte d'un document avec Amazon Textract. L'exemple de sortie est similaire au suivant.

Formulaire avec des champs pour le nom, l'adresse et la date de naissance affichant les informations personnelles de Jane Doe dont l'adresse est 123 Any Street, Anytown, États-Unis et la date de naissance du 26 décembre 1980.

Cadre de délimitation

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

  • Hauteur : hauteur du cadre de délimitation sous forme de ratio par rapport à la hauteur totale de la page du document.

  • Gauche : coordonnée X du point supérieur gauche du cadre de délimitation sous forme de ratio par rapport à la largeur totale de la page du document.

  • Haut : coordonnée Y du point supérieur gauche du cadre de délimitation sous forme de ratio par rapport à la hauteur globale de la page du document.

  • Largeur : largeur du cadre de délimitation sous forme de rapport à la largeur totale de la page du document.

Chaque BoundingBox propriété possède une valeur comprise entre 0 et 1. La valeur est un rapport entre la largeur globale de l'image (s'applique à Left etWidth) ou la hauteur (s'applique à Height etTop). Par exemple, si l'image d'entrée mesure 700 x 200 pixels et que les coordonnées en haut à gauche du cadre de délimitation sont (350,50) pixels, l'API renvoie une Left valeur de 0,5 (350/700) et une Top valeur de 0,25 (). 50/200

Le schéma suivant montre l'étendue d'une page de document couverte par chaque BoundingBox propriété.

Schéma illustrant les propriétés Left, Top, Width et Height définissant un cadre de délimitation sur une page.

Pour afficher le cadre de sélection à l'emplacement et à la taille corrects, multipliez les BoundingBox valeurs par la largeur ou la hauteur de page du document (en fonction de la valeur souhaitée) pour obtenir les valeurs en pixels. Vous utilisez les valeurs en pixels pour afficher le cadre de délimitation. Par exemple, utilisez une page de document de 608 pixels de largeur x 588 pixels de hauteur et les valeurs de cadre de délimitation 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 autour du texte analysé. Les exemples Java et Python suivants montrent comment afficher un cadre de sélection.

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 le résultat response renvoyé par l'opération DetectDocumentTextd'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é par AnalyzeDocument est un tableau d'objets Point. Chacune Point possède des coordonnées X et Y correspondant à un emplacement spécifique sur la page du document. Tout comme les BoundingBox coordonnées, les coordonnées du polygone sont normalisées en fonction de la largeur et de la hauteur du document et sont comprises entre 0 et 1.

Vous pouvez utiliser les points du réseau de polygones pour afficher un cadre de délimitation à grain fin autour d'un objet. Block Vous calculez la position de chaque point du polygone sur la page du document en utilisant la même technique que celle utilisée pourBoundingBoxes. Multipliez la coordonnée X par la largeur de page du document et multipliez la coordonnée Y par la hauteur de page du 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)); }

Angle de rotation

La dernière partie de l'objet Geometry est l'angle de rotation du texte. L'angle de rotation est un nombre compris entre 0 et 360 qui représente le degré de rotation du texte.