Lokasi Item pada Halaman Dokumen - Amazon Textract

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Lokasi Item pada Halaman Dokumen

Operasi Amazon Textract Texact mengembalikan lokasi dan geometri item yang ditemukan di halaman dokumen.DetectDocumentTextdanGetDocumentTextDetectionmengembalikan lokasi dan geometri untuk garis dan kata-kata, sementaraAnalyzeDocumentdanGetDocumentAnalysismengembalikan lokasi dan geometri pasangan kunci-nilai, tabel, sel, dan elemen seleksi.

Untuk menentukan di mana item berada di halaman dokumen, gunakan kotak pembatas (Geometry) informasi yang dikembalikan oleh operasi Amazon Textract Texact dalamBlockobjek. ParameterGeometryobjek berisi dua jenis lokasi dan informasi geometris untuk item terdeteksi:

  • Sumbu sejajarBoundingBoxobjek yang berisi koordinat kiri atas dan lebar dan tinggi item.

  • Sebuah objek poligon yang menggambarkan garis besar item, ditentukan sebagai arrayPointbenda-benda yang mengandungX(sumbu horizontal) danY(sumbu vertikal) koordinat halaman dokumen setiap titik.

JSON untukBlockterlihat seperti berikut ini. CatatanBoundingBoxdanPolygonbidang.

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

Anda dapat menggunakan informasi geometri untuk menggambar kotak pembatas di sekitar item yang terdeteksi. Untuk contoh yang menggunakanBoundingBoxdanPolygoninformasi untuk menggambar kotak di sekitar garis dan garis vertikal pada awal dan akhir setiap kata, lihatMendeteksi Teks Dokumen dengan Amazon Textract. Output contoh ini mirip dengan yang berikut ini.

Kotak Pembatas

Sebuah kotak pembatas (BoundingBox) memiliki sifat sebagai berikut:

  • Tinggi — Tinggi kotak pembatas sebagai rasio tinggi halaman dokumen secara keseluruhan.

  • Kiri — Koordinat X titik kiri atas kotak pembatas sebagai rasio lebar halaman dokumen secara keseluruhan.

  • Atas — Koordinat Y dari titik kiri atas kotak pembatas sebagai rasio tinggi halaman dokumen secara keseluruhan.

  • Lebar — Lebar kotak pembatas sebagai rasio lebar halaman dokumen secara keseluruhan.

Setiap properti BoundingBox memiliki nilai antara 0 dan 1. Nilai adalah rasio lebar citra secara keseluruhan (berlaku untukLeftdanWidth) atau tinggi (berlaku untukHeightdanTop). Misalnya, jika citra input berukuran 700 x 200 piksel, dan koordinat kiri atas kotak batas adalah (350,50) piksel, maka API mengembalikan aLeftnilai 0,5 (350/700) danTopnilai 0,25 (50/200).

Diagram berikut menunjukkan kisaran halaman dokumen yang mencakup setiap properti BoundingBox.

Untuk menampilkan kotak pembatas dengan lokasi dan ukuran yang benar, Anda harus mengalikan nilai-nilai BoundingBox dengan lebar halaman dokumen atau tinggi (tergantung pada nilai yang Anda inginkan) untuk mendapatkan nilai-nilai piksel. Anda menggunakan nilai-nilai piksel untuk menampilkan kotak pembatas. Contohnya adalah menggunakan halaman dokumen dengan lebar 608 piksel x tinggi 588 piksel, dan nilai kotak pembatas berikut untuk teks yang dianalisis:

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

Lokasi kotak pembatas teks dalam piksel dihitung sebagai berikut:

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

Anda menggunakan nilai-nilai ini untuk menampilkan kotak pembatas di sekitar teks yang dianalisis. Contoh Java dan Python berikut menunjukkan bagaimana menampilkan kotak pembatas.

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

Contoh Python ini mengambil diresponsedikembalikan olehDetectDocumentTextOperasi 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)

Polygon

Poligon yang dikembalikan olehAnalyzeDocumentadalah arrayPointobjek. Masing-masingPointmemiliki koordinat X dan Y untuk lokasi tertentu pada halaman dokumen. Seperti koordinat BoundingBox, koordinat poligon dinormalisasi dengan lebar dan tinggi dokumen, dan antara 0 dan 1.

Anda dapat menggunakan poin dalam array poligon untuk menampilkan kotak pembatas butir halus di sekitarBlockobjek. Anda menghitung posisi setiap titik poligon pada halaman dokumen dengan menggunakan teknik yang sama digunakan untukBoundingBoxes. Kalikan koordinat X dengan lebar halaman dokumen, dan kalikan koordinat Y dengan tinggi halaman dokumen.

Contoh berikut menunjukkan cara menampilkan garis vertikal poligon.

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