View a markdown version of this page

Suchen nach Elementen 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.

Suchen nach Elementen auf einer Dokumentseite

Amazon Textract Textract-Operationen geben die Position und Geometrie von Elementen zurück, die auf einer Dokumentseite gefunden wurden. DetectDocumentTextund GetDocumentTextDetectiongibt die Position und Geometrie für Linien und Wörter GetDocumentAnalysiszurück und gibt die Position AnalyzeDocumentund Geometrie von Schlüssel-Wert-Paaren, Tabellen, Zellen und Auswahlelementen zurück.

Um zu ermitteln, wo sich ein Element auf einer Dokumentseite befindet, verwenden Sie die Begrenzungsrahmeninformationen (Geometrie), die von der Amazon Textract Textract-Operation in einem Block-Objekt zurückgegeben wurden. Das Geometry Objekt enthält zwei Arten von Positions- und Geometrieinformationen für erkannte Objekte:

  • Ein nach der Achse ausgerichtetes BoundingBoxObjekt, das die obere linke Koordinate sowie die Breite und Höhe des Objekts enthält.

  • Ein Polygonobjekt, das den Umriss des Elements beschreibt. Es wird als Array von Point-Objekten angegeben, die die Koordinaten X (horizontale Achse) und Y (vertikale Achse) der einzelnen Punkte auf den Dokumentseiten enthalten.

Der JSON-Code für ein Block Objekt sieht in etwa wie folgt aus. Beachten Sie die Polygon Felder BoundingBox und.

{ "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 Objekte zu zeichnen. Ein Beispiel, in dem mithilfe von BoundingBox und Polygon Informationen Felder um Linien und vertikale Linien am Anfang und Ende jedes Worts gezeichnet werden, finden Sie unterErkennung von Dokumententext mit Amazon Textract. Die Beispielausgabe ähnelt der folgenden.

Formular mit Feldern für Name, Adresse und Geburtsdatum, in dem persönliche Informationen von Jane Doe mit der Adresse 123 Any Street, Anytown, USA und dem Geburtsdatum 26.12.1980 angezeigt werden.

Begrenzungsrahmen

Ein Begrenzungsrahmen (BoundingBox) hat die folgenden Eigenschaften:

  • Höhe — Die Höhe des Begrenzungsrahmens im Verhältnis zur Gesamthöhe der Dokumentseite.

  • Links — Die X-Koordinate des oberen linken Punkts des Begrenzungsrahmens im Verhältnis zur Gesamtbreite der Dokumentseite.

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

  • Breite — Die Breite des Begrenzungsrahmens im Verhältnis zur Gesamtbreite der Dokumentseite.

Jede BoundingBox Eigenschaft hat einen Wert zwischen 0 und 1. Der Wert ist ein Verhältnis der Gesamtbreite (gilt für Left undWidth) oder der Höhe (gilt für Height undTop). Wenn das Eingabebild beispielsweise 700 x 200 Pixel groß ist und die obere linke Koordinate des Begrenzungsrahmens (350,50) Pixel beträgt, gibt die API einen Left Wert von 0,5 (350/700) und einen Top Wert von 0,25 () zurück. 50/200

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

Das Diagramm zeigt die Eigenschaften Links, Oben, Breite und Höhe, die einen Begrenzungsrahmen auf einer Seite definieren.

Um den Begrenzungsrahmen mit der richtigen Position und Größe anzuzeigen, multiplizieren Sie die BoundingBox Werte mit der Breite oder Höhe der Dokumentseite (je nach dem gewünschten Wert), um die Pixelwerte zu erhalten. Sie verwenden die Pixelwerte, um den Begrenzungsrahmen anzuzeigen. Ein Beispiel verwendet eine Dokumentseite mit einer Breite von 608 Pixeln x Höhe von 588 Pixeln und die folgenden Begrenzungsfeldwerte für analysierten Text:

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

Die Position des Textbegrenzungsrahmens 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

Sie verwenden diese Werte, um einen Begrenzungsrahmen um den analysierten Text herum anzuzeigen. Die folgenden Java- und Python-Beispiele 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

Dieses Python-Beispiel nimmt die von der DetectDocumentTextAPI response zurückgegebene Operation auf.

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 von zurückgegebene Polygon AnalyzeDocument ist ein Array von Point-Objekten. Jedes Point hat eine X- und Y-Koordinate für eine bestimmte Position auf der Dokumentseite. Wie die BoundingBox Koordinaten sind auch die Polygonkoordinaten auf die Breite und Höhe des Dokuments normalisiert und liegen zwischen 0 und 1.

Sie können Punkte in der Polygonanordnung verwenden, um einen feinkörnigeren Begrenzungsrahmen um ein Objekt herum anzuzeigen. Block Sie berechnen die Position der einzelnen Polygonpunkte auf der Dokumentseite mit derselben Methode wie bei. BoundingBoxes Multiplizieren Sie die X-Koordinate mit der Breite der Dokumentseite und 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)); }

Drehwinkel

Der letzte Teil des Geometrieobjekts ist der Drehwinkel des Textes. Der Drehwinkel ist eine Zahl zwischen 0 und 360, die angibt, um wie viel der Text gedreht wird.