Artikelspeicherort auf einer Dokumentseite - Amazon Textract

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Artikelspeicherort auf einer Dokumentseite

Amazon Textract Textract-Operationen geben den Speicherort und die Geometrie der Elemente zurück, die auf einer Dokumentseite gefunden wurden.DetectDocumentTextundGetDocumentTextDetectiongeben Sie die Position und Geometrie für Linien und Wörter zurück, währendAnalyzeDocumentundGetDocumentAnalysisGibt die Position und Geometrie von Schlüssel-Wert-Paaren, Tabellen, Zellen und Selektionselementen zurück.

Um zu ermitteln, wo sich ein Element auf einer Dokumentseite befindet, verwenden Sie den Begrenzungsrahmen (Geometry) Informationen, die von der Amazon Textract Textract-Operation in einemBlock-Objekt. DieGeometryDas -Objekt enthält zwei Arten von Standorten und geometrischen Informationen für erkannte Elemente:

  • Eine Achse ausgerichtetBoundingBoxDas -Objekt, das die linke obere Koordinate sowie die Breite und Höhe des Elements enthält.

  • Ein Polygonobjekt, das den Umriss des Elements beschreibt, angegeben als Array vonPointObjekte, die enthaltenX(horizontale Achse) undY(vertikale Achse) Dokumentseitenkoordinaten jedes Punktes.

Der JSON für einenBlockDas -Objekt sieht folgendermaßen aus. Beachten Sie dasBoundingBoxundPolygonunterscheiden sich nicht.

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

Sie können Geometrieinformationen verwenden, um Begrenzungsrahmen um erkannte Elemente zu zeichnen. Für ein Beispiel, dasBoundingBoxundPolygonInformationen zum Zeichnen von Feldern um Linien und vertikale Linien am Anfang und Ende jedes Wortes finden Sie unterErkennen von Dokumenttext mit Amazon Textractaus. Die Beispielausgabe ähnelt der folgenden.

Bounding Box

Ein Begrenzungsrahmen (BoundingBox) hat folgende Eigenschaften:

  • Höhe — Die Höhe des Begrenzungsrahmens als Verhältnis der Gesamtseitenhöhe des Dokuments.

  • Links — Die X-Koordinate des oberen linken Punktes des Begrenzungsrahmens als Verhältnis der Gesamtseitenbreite des Dokuments.

  • Oben — Die Y-Koordinate des oberen linken Punktes des Begrenzungsrahmens als Verhältnis der Gesamtseitenhöhe des Dokuments.

  • Breite — Die Breite des Begrenzungsrahmens als Verhältnis der Gesamtseitenbreite des Dokuments.

Jede BoundingBox-Eigenschaft hat einen Wert zwischen 0 und 1. Der Wert ist ein Verhältnis der gesamten Bildbreite (gilt fürLeftundWidth) oder Höhe (gilt fürHeightundTop) enthalten. Beispiel: Bei einem Eingangsbild mit 700 x 200 Pixeln und einer linken oberen Koordinate des Begrenzungsrahmens (350,50) Pixeln gibt die API eineLeftWert von 0,5 (350/700) und aTopWert von 0,25 (50/200).

Das folgende Diagramm zeigt den Bereich einer Dokumentseite, die jede BoundingBox-Eigenschaft abdeckt.

Um den Begrenzungsrahmen mit der richtigen Position und Größe anzuzeigen, müssen Sie die BoundingBox-Werte mit der Breite oder Höhe der Dokumentseite (abhängig vom gewünschten Wert) multiplizieren, um die Pixelwerte zu erhalten. Sie verwenden die Pixelwerte, um den Begrenzungsrahmen anzuzeigen. Ein Beispiel ist die Verwendung einer Dokumentseite mit 608 Pixel Breite x 588 Pixel Höhe und die folgenden Begrenzungsrahmenwerte für analysierten Text:

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

Die Position des Text-Begrenzungsrahmens in Pixeln wird wie folgt berechnet:

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

Mit diesen Werten können Sie einen Begrenzungsrahmen um den analysierten Text herum anzeigen. Die folgenden Beispiele für Java und Python zeigen, wie ein Begrenzungsrahmen angezeigt wird.

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

In diesem Python-Beispiel wird dasresponseden von zurückgegebenenDetectDocumentTextAPI-Operation.

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

Das Polygon wurde zurückgegeben vonAnalyzeDocumentist eine Reihe vonPointObjekte. EACHPointhat eine X- und Y-Koordinate für einen bestimmten Speicherort auf der Dokumentseite. Wie die BoundingBox-Koordinaten werden die Polygonkoordinaten auf die Breite und Höhe des Dokuments normalisiert und liegen zwischen 0 und 1.

Sie können Punkte im Polygon-Array verwenden, um einen feinkörnigen Begrenzungsrahmen um einBlock-Objekt. Sie berechnen die Position jedes Polygonpunkts auf der Dokumentseite mit der gleichen Technik, die fürBoundingBoxesaus. Multiplizieren Sie die X-Koordinate mit der Seitenbreite des Dokuments und multiplizieren Sie die Y-Koordinate mit der Seitenhöhe des Dokuments.

Das folgende Beispiel zeigt, wie die vertikalen Linien eines Polygons angezeigt werden.

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