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 la page d'un document. DetectDocumentTextet GetDocumentTextDetection renvoyez l'emplacement et la géométrie des lignes et des mots, tandis que AnalyzeDocument et GetDocumentAnalysis renvoyez 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 la page d'un 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 la coordonnée en haut à gauche ainsi que la largeur et la hauteur de l'élément.

  • Un objet polygonal qui décrit le contour de l'élément, spécifié sous la forme d'un tableau d'objets Point contenant X (axe horizontal) et Y (axe vertical) les coordonnées de page 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 dessiner des cadres de délimitation autour des éléments détectés. Pour un exemple qui utilise des BoundingBox Polygon informations pour dessiner des encadrés autour de lignes et des 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 avec adresse 123 Any Street, Anytown, États-Unis et date de naissance 26-12-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 par rapport à la hauteur globale de la page du document.

  • Gauche : coordonnée X du point supérieur gauche du cadre de délimitation, exprimée en pourcentage de la largeur globale de la page du document.

  • Haut : coordonnée Y du point en haut à gauche du cadre de délimitation, exprimée en pourcentage de la hauteur globale de la page du document.

  • Largeur : largeur du cadre de délimitation par rapport à la largeur globale de la page du document.

Chaque BoundingBox propriété possède une valeur comprise entre 0 et 1. La valeur est un ratio 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 la coordonnée en haut à gauche du cadre de délimitation est (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 la plage d'une page de document couverte par chaque BoundingBox propriété.

Schéma montrant les propriétés de gauche, de haut, de largeur et de hauteur définissant un cadre de délimitation sur une page.

Pour afficher le cadre de délimitation avec l'emplacement et la taille corrects, multipliez les BoundingBox valeurs par la largeur ou la hauteur de la 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 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 les données response renvoyées par l'opération DetectDocumentText 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é par AnalyzeDocument est un tableau d'objets Point. Chacune Point possède une coordonnée X et Y correspondant à un emplacement spécifique sur la page du document. 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 plus 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 la page du document et multipliez la coordonnée Y par la hauteur de la 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.