Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memanggil Operasi Asinkron Amazon Textract
Amazon Textract menyediakan API asinkron yang dapat Anda gunakan untuk memproses dokumen multihalaman dalam format PDF atau TIFF. Anda juga dapat menggunakan operasi asinkron untuk memproses dokumen satu halaman yang dalam format JPEG, PNG, TIFF, atau PDF.
Informasi dalam topik ini menggunakan operasi deteksi teks untuk menunjukkan cara Anda menggunakan operasi asinkron Amazon Textract. Anda dapat menggunakan pendekatan yang sama dengan operasi analisis teks StartDocumentAnalysis dan GetDocumentAnalysis. Ini juga bekerja sama dengan StartExpenseAnalysis dan GetExpenseAnalysis.
Sebagai contoh, lihat Mendeteksi atau Menganalisis Teks dalam Dokumen Multipage.
Jika Anda menganalisis dokumen pinjaman, Anda dapat menggunakan StartLendingAnalysis operasi untuk mengklasifikasikan halaman dokumen dan mengirim halaman rahasia ke operasi analisis Amazon Textract. Halaman diarahkan ke operasi analisis tergantung pada kelas yang ditugaskan.
Anda dapat mengembalikan hasil untuk masing-masing halaman dengan menggunakan GetLendingAnalysis operasi, atau mengambil ringkasan analisis dengan. GetLendingAnalysisSummary
Amazon Textract secara asinkron memproses dokumen yang disimpan dalam bucket Amazon S3. Anda mulai memproses dengan memanggil Start operasi, seperti StartDocumentTextDetection. Status penyelesaian untuk permintaan diterbitkan ke topik Amazon Simple Notification Service (Amazon SNS). Untuk mendapatkan status penyelesaian dari topik Amazon SNS, Anda dapat menggunakan antrian Amazon Simple Queue Service (Amazon SQS) atau fungsi. AWS Lambda Setelah Anda memiliki status penyelesaian, Anda perlu memanggil operasi Get, seperti GetDocumentTextDetection, untuk mendapatkan hasil permintaan.
Hasil panggilan asinkron dienkripsi dan disimpan selama 7 hari di bucket milik Amazon Textract secara default, kecuali jika Anda menentukan bucket Amazon S3 menggunakan argumen operasi. OutputConfig Untuk informasi tentang cara mengizinkan Amazon Textract mengirim dokumen terenkripsi ke bucket Amazon S3 Anda, lihatIzin untuk Konfigurasi Output.
Tabel berikut menunjukkan operasi Start dan Get yang sesuai untuk berbagai jenis pemrosesan asinkron yang didukung oleh Amazon Textract:
| Jenis Pengolahan | Mulai API | Dapatkan API |
|---|---|---|
| Deteksi Teks | StartDocumentTextDetection | GetDocumentTextDetection |
| Analisis Teks | StartDocumentAnalysis | GetDocumentAnalysis |
| Analisis Biaya | StartExpenseAnalysis | GetExpenseAnalysis |
| Analisis Pinjaman | StartLendingAnalysis | GetLendingAnalysis, GetLendingAnalysisSummary |
Untuk contoh yang menggunakan AWS Lambda fungsi, lihat Pemro sesan dokumen skala besar dengan Amazon Textract.
Diagram berikut menunjukkan proses untuk mendeteksi teks dokumen dalam gambar dokumen yang disimpan dalam bucket Amazon S3. Dalam diagram, antrean Amazon SQS mendapatkan status penyelesaian dari topik Amazon SNS.
Proses yang ditampilkan oleh diagram sebelumnya adalah sama untuk menganalisis teks dan. invoices/receipts Anda mulai menganalisis teks dengan menelepon StartDocumentAnalysis dan mulai menganalisis invoices/receipts dengan menelep StartExpenseAnalysis on Anda mendapatkan hasilnya dengan menelep GetDocumentAnalysis on atau GetExpenseAnalysis masing-masing.
Memulai Deteksi Teks
Anda memulai permintaan deteksi teks Amazon Textract dengan menelep StartDocumentTextDetection on. Berikut ini adalah contoh permintaan JSON yang diberikan oleh StartDocumentTextDetection.
{ "DocumentLocation": { "S3Object": { "Bucket": "bucket", "Name": "image.pdf" } }, "ClientRequestToken": "DocumentDetectionToken", "NotificationChannel": { "SNSTopicArn": "arn:aws:sns:us-east-1:nnnnnnnnnn:topic", "RoleArn": "arn:aws:iam::nnnnnnnnnn:role/roleTopic" }, "JobTag": "Receipt" }
Parameter input DocumentLocation menyediakan nama file dokumen dan bucket Amazon S3 untuk mengambilnya. NotificationChannelberisi Nama Sumber Daya Amazon (ARN) dari topik Amazon SNS yang diberitahukan Amazon Textract saat permintaan deteksi teks selesai. Topik Amazon SNS harus berada di Wilayah AWS yang sama dengan titik akhir Amazon Textract yang Anda panggil. NotificationChanneljuga berisi ARN untuk peran yang memungkinkan Amazon Textract menerbitkan ke topik Amazon SNS. Anda memberikan izin penerbitan Amazon Textract ke topik Amazon SNS Anda dengan membuat peran layanan IAM. Untuk informasi selengkapnya, lihat Mengkonfigurasi Amazon Textract untuk Operasi Asinkron.
Anda juga dapat menentukan parameter input opsionalJobTag,, yang memungkinkan Anda mengidentifikasi pekerjaan, atau grup pekerjaan, dalam status penyelesaian yang dipublikasikan ke topik Amazon SNS. Misalnya, Anda dapat menggunakan JobTag untuk mengidentifikasi jenis dokumen yang sedang diproses, seperti formulir pajak atau tanda terima.
Untuk mencegah duplikasi pekerjaan analisis yang tidak disengaja, Anda dapat memberikan token idempotensi , ClientRequestToken. Jika Anda memberikan nilai untukClientRequestToken, Start operasi mengembalikan yang sama JobId untuk beberapa panggilan identik ke Start operasi, sepertiStartDocumentTextDetection. Token ClientRequestToken memiliki masa pakai 7 hari. Setelah 7 hari, Anda bisa menggunakannya kembali. Jika Anda menggunakan kembali token selama masa token aktif, hal berikut akan terjadi:
-
Jika Anda menggunakan kembali token dengan
Startoperasi yang sama dan parameter input yang sama, yang samaJobIddikembalikan. Pekerjaan tidak dilakukan lagi dan Amazon Textract tidak mengirimkan status penyelesaian ke topik Amazon SNS terdaftar. -
Jika Anda menggunakan kembali token dengan operasi
Startdan perubahan pada input parameter kecil, Anda mendapatkan pengecualian yang ditimbulkanidempotentparametermismatchexception(Kode status HTTP: 400). -
Jika Anda menggunakan kembali token dengan operasi yang berbeda,
Startoperasi akan berhasil.
Parameter opsional lain yang tersedia adalahOutputConfig, yang memungkinkan Anda menyesuaikan di mana output Anda akan ditempatkan. Secara default, Amazon Textract akan menyimpan hasil secara internal, dan hanya dapat diakses oleh operasi Get API. Dengan OutputConfig diaktifkan, Anda dapat mengatur nama bucket yang akan dikirim keluaran, dan awalan file hasil, tempat Anda dapat mengunduh hasil Anda. Selain itu, Anda dapat mengatur KMSKeyID parameter ke kunci yang dikelola pelanggan untuk mengenkripsi output Anda. Tanpa set parameter ini, Amazon Textract akan mengenkripsi sisi server menggunakan untuk Amazon S3 Kunci yang dikelola AWS
catatan
Sebelum menggunakan parameter ini, pastikan Anda memiliki PutObject izin untuk bucket keluaran. Selain itu, pastikan Anda memiliki Decry ReEncrypt pt GenerateDataKey,,, dan DescribeKey izin untuk AWS KMS kunci jika Anda memutuskan untuk menggunakannya.
Respons terhadap operasi StartDocumentTextDetection adalah pengidentifikasi tugas (JobId). Gunakan JobId untuk melacak permintaan dan mendapatkan hasil analisis setelah Amazon Textract menerbitkan status penyelesaian ke topik Amazon SNS. Berikut ini adalah contohnya:
{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}
Jika Anda memulai terlalu banyak pekerjaan secara bersamaan, panggilan untuk mem StartDocumentTextDetection unculkan peng LimitExceededException ecualian (kode status HTTP: 400) hingga jumlah pekerjaan yang berjalan secara bersamaan di bawah batas layanan Amazon Textract.
Jika Anda menemukan bahwa LimitExceededException pengecualian muncul dengan ledakan aktivitas, pertimbangkan untuk menggunakan antrian Amazon SQS untuk mengelola permintaan masuk. Hu AWS
bungi Dukungan jika Anda menemukan bahwa jumlah rata-rata permintaan bersamaan tidak dapat dikelola oleh antrian Amazon SQS dan Anda masih menerima LimitExceededException pengecualian.
Mendapatkan Status Penyelesaian Permintaan Analisis Amazon Textract
Amazon Textract mengirimkan pemberitahuan penyelesaian analisis ke topik Amazon SNS terdaftar. Pemberitahuan tersebut mencakup pengindentifikasi tugas dan status penyelesaian operasi dalam string JSON. Permintaan deteksi teks yang berhasil memiliki SUCCEEDED status. Misalnya, hasil berikut menunjukkan keberhasilan pemrosesan pekerjaan deteksi teks.
{ "JobId": "642492aea78a86a40665555dc375ee97bc963f342b29cd05030f19bd8fd1bc5f", "Status": "SUCCEEDED", "API": "StartDocumentTextDetection", "JobTag": "Receipt", "Timestamp": 1543599965969, "DocumentLocation": { "S3ObjectName": "document", "S3Bucket": "bucket" } }
Untuk informasi selengkapnya, lihat Pemberitahuan Hasil Amazon Textract.
Untuk mendapatkan informasi status yang dipublikasikan ke topik Amazon SNS oleh Amazon Textract, gunakan salah satu opsi berikut:
-
AWS Lambda — Anda dapat berlangganan fungsi AWS Lambda yang Anda tulis untuk topik Amazon SNS. Fungsi ini dipanggil ketika Amazon Textract memberi tahu topik Amazon SNS bahwa permintaan telah selesai. Gunakan fungsi Lambda jika Anda ingin kode sisi server untuk memproses hasil permintaan deteksi teks. Misalnya, Anda mungkin ingin menggunakan kode sisi server untuk membuat anotasi gambar atau membuat laporan pada teks yang terdeteksi sebelum mengembalikan informasi ke aplikasi klien.
-
Amazon SQS — Anda dapat berlangganan antrian Amazon SQS ke topik Amazon SNS. Anda kemudian mensurvei antrian Amazon SQS untuk mengambil status penyelesaian yang diterbitkan oleh Amazon Textract saat permintaan deteksi teks selesai. Untuk informasi selengkapnya, lihat Mendeteksi atau Menganalisis Teks dalam Dokumen Multipage. Gunakan antrian Amazon SQS jika Anda ingin memanggil operasi Amazon Textract hanya dari aplikasi klien.
penting
Kami tidak menyarankan untuk mendapatkan status penyelesaian permintaan dengan berulang kali memanggil Get operasi Amazon Textract. Ini karena Amazon Textract membatasi Get operasi jika terlalu banyak permintaan dibuat. Jika Anda memproses beberapa dokumen secara bersamaan, lebih mudah dan efisien untuk memantau satu antrian SQS untuk pemberitahuan penyelesaian daripada melakukan polling Amazon Textract untuk status setiap pekerjaan secara individual.
Jika Anda telah mengonfigurasi akun Anda untuk menerima pemberitahuan hasil dari topik Amazon Simple Notification Service (Amazon SNS) atau melalui antrian Amazon SQS, Anda harus memastikan bahwa akun Anda aman dengan membatasi cakupan akses Amazon Textract hanya ke sumber daya yang Anda gunakan. Ini dapat dilakukan dengan melampirkan kebijakan kepercayaan ke peran layanan IAM Anda. Untuk informasi tentang cara melakukan ini, lihat pencegahan wakil Cross-service yang bingung.
Mendapatkan Hasil Deteksi Teks Amazon Textract
Untuk mendapatkan hasil permintaan deteksi teks, pertama-tama pastikan bahwa status penyelesaian yang diambil dari topik Amazon SNS adalahSUCCEEDED. Kemudian panggil GetDocumentTextDetection, yang memberikan nilai JobId yang dikembalikan dari StartDocumentTextDetection. Permintaan JSON serupa dengan contoh berikut:
{ "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3", "MaxResults": 10, "SortBy": "TIMESTAMP" }
JobIdadalah pengidentifikasi untuk operasi deteksi teks. Karena deteksi teks dapat menghasilkan sejumlah besar data, gunakan MaxResults untuk menentukan jumlah maksimum hasil yang akan dikembalikan dalam satu Get operasi. Nilai default untuk MaxResults adalah 1.000. Jika Anda menentukan nilai yang lebih besar dari 1.000, hanya 1.000 hasil yang dikembalikan. Jika operasi tidak mengembalikan semua hasil, token pagination untuk halaman berikutnya dikembalikan. Untuk mendapatkan halaman hasil berikutnya, tentukan token dalam NextToken parameter.
catatan
Hasil hanya dapat diambil hingga 7 hari dari waktu inisialisasi pekerjaan.
Response GetDocumentTextDetection operasi JSON mirip dengan yang berikut ini. Jumlah total halaman yang terdeteksi dikembalikanDocumentMetadata. Teks yang terdeteksi dikembalikan dalam Blocks array. Untuk informasi tentang Block objek, lihatDeteksi Teks dan Objek Respon Analisis Dokumen.
{ "DocumentMetadata": { "Pages": 1 }, "JobStatus": "SUCCEEDED", "Blocks": [ { "BlockType": "PAGE", "Geometry": { "BoundingBox": { "Width": 1.0, "Height": 1.0, "Left": 0.0, "Top": 0.0 }, "Polygon": [ { "X": 0.0, "Y": 0.0 }, { "X": 1.0, "Y": 0.0 }, { "X": 1.0, "Y": 1.0 }, { "X": 0.0, "Y": 1.0 } ] }, "Id": "64533157-c47e-401a-930e-7ca1bb3ac3fa", "Relationships": [ { "Type": "CHILD", "Ids": [ "4297834d-dcb1-413b-8908-3b96866ebbb5", "1d85ba24-2877-4d09-b8b2-393833d769e9", "193e9c47-fd87-475a-ba09-3fda210d8784", "bd8aeb62-961b-4b47-b78a-e4ed9eeecd0f" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 53.301639556884766, "Text": "ellooworio", "Geometry": { "BoundingBox": { "Width": 0.9999999403953552, "Height": 0.5365243554115295, "Left": 0.0, "Top": 0.46347561478614807 }, "Polygon": [ { "X": 0.0, "Y": 0.46347561478614807 }, { "X": 0.9999999403953552, "Y": 0.46347561478614807 }, { "X": 0.9999999403953552, "Y": 1.0 }, { "X": 0.0, "Y": 1.0 } ] }, "Id": "4297834d-dcb1-413b-8908-3b96866ebbb5", "Relationships": [ { "Type": "CHILD", "Ids": [ "170c3eb9-5155-4bec-8c44-173bba537e70" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 89.15632629394531, "Text": "He llo,", "Geometry": { "BoundingBox": { "Width": 0.33642634749412537, "Height": 0.49159330129623413, "Left": 0.13885067403316498, "Top": 0.17169663310050964 }, "Polygon": [ { "X": 0.13885067403316498, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.6632899641990662 }, { "X": 0.13885067403316498, "Y": 0.6632899641990662 } ] }, "Id": "1d85ba24-2877-4d09-b8b2-393833d769e9", "Relationships": [ { "Type": "CHILD", "Ids": [ "516ae823-3bab-4f9a-9d74-ad7150d128ab", "6bcf4ea8-bbe8-4686-91be-b98dd63bc6a6" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 82.44834899902344, "Text": "worlo", "Geometry": { "BoundingBox": { "Width": 0.33182239532470703, "Height": 0.3766750991344452, "Left": 0.5091826915740967, "Top": 0.23131252825260162 }, "Polygon": [ { "X": 0.5091826915740967, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.607987642288208 }, { "X": 0.5091826915740967, "Y": 0.607987642288208 } ] }, "Id": "193e9c47-fd87-475a-ba09-3fda210d8784", "Relationships": [ { "Type": "CHILD", "Ids": [ "ed135c3b-35dd-4085-8f00-26aedab0125f" ] } ], "Page": 1 }, { "BlockType": "LINE", "Confidence": 88.50325775146484, "Text": "world", "Geometry": { "BoundingBox": { "Width": 0.35004907846450806, "Height": 0.19635874032974243, "Left": 0.527581512928009, "Top": 0.30100569128990173 }, "Polygon": [ { "X": 0.527581512928009, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.49736443161964417 }, { "X": 0.527581512928009, "Y": 0.49736443161964417 } ] }, "Id": "bd8aeb62-961b-4b47-b78a-e4ed9eeecd0f", "Relationships": [ { "Type": "CHILD", "Ids": [ "9e28834d-798e-4a62-8862-a837dfd895a6" ] } ], "Page": 1 }, { "BlockType": "WORD", "Confidence": 53.301639556884766, "Text": "ellooworio", "Geometry": { "BoundingBox": { "Width": 1.0, "Height": 0.5365243554115295, "Left": 0.0, "Top": 0.46347561478614807 }, "Polygon": [ { "X": 0.0, "Y": 0.46347561478614807 }, { "X": 1.0, "Y": 0.46347561478614807 }, { "X": 1.0, "Y": 1.0 }, { "X": 0.0, "Y": 1.0 } ] }, "Id": "170c3eb9-5155-4bec-8c44-173bba537e70", "Page": 1 }, { "BlockType": "WORD", "Confidence": 88.46246337890625, "Text": "He", "Geometry": { "BoundingBox": { "Width": 0.15350718796253204, "Height": 0.29955607652664185, "Left": 0.13885067403316498, "Top": 0.21856294572353363 }, "Polygon": [ { "X": 0.13885067403316498, "Y": 0.21856294572353363 }, { "X": 0.292357861995697, "Y": 0.21856294572353363 }, { "X": 0.292357861995697, "Y": 0.5181190371513367 }, { "X": 0.13885067403316498, "Y": 0.5181190371513367 } ] }, "Id": "516ae823-3bab-4f9a-9d74-ad7150d128ab", "Page": 1 }, { "BlockType": "WORD", "Confidence": 89.8501968383789, "Text": "llo,", "Geometry": { "BoundingBox": { "Width": 0.17724157869815826, "Height": 0.49159327149391174, "Left": 0.2980354428291321, "Top": 0.17169663310050964 }, "Polygon": [ { "X": 0.2980354428291321, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.17169663310050964 }, { "X": 0.47527703642845154, "Y": 0.6632899045944214 }, { "X": 0.2980354428291321, "Y": 0.6632899045944214 } ] }, "Id": "6bcf4ea8-bbe8-4686-91be-b98dd63bc6a6", "Page": 1 }, { "BlockType": "WORD", "Confidence": 82.44834899902344, "Text": "worlo", "Geometry": { "BoundingBox": { "Width": 0.33182239532470703, "Height": 0.3766750991344452, "Left": 0.5091826915740967, "Top": 0.23131252825260162 }, "Polygon": [ { "X": 0.5091826915740967, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.23131252825260162 }, { "X": 0.8410050868988037, "Y": 0.607987642288208 }, { "X": 0.5091826915740967, "Y": 0.607987642288208 } ] }, "Id": "ed135c3b-35dd-4085-8f00-26aedab0125f", "Page": 1 }, { "BlockType": "WORD", "Confidence": 88.50325775146484, "Text": "world", "Geometry": { "BoundingBox": { "Width": 0.35004907846450806, "Height": 0.19635874032974243, "Left": 0.527581512928009, "Top": 0.30100569128990173 }, "Polygon": [ { "X": 0.527581512928009, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.30100569128990173 }, { "X": 0.8776305913925171, "Y": 0.49736443161964417 }, { "X": 0.527581512928009, "Y": 0.49736443161964417 } ] }, "Id": "9e28834d-798e-4a62-8862-a837dfd895a6", "Page": 1 } ] }
Menggunakan adaptor
Dengan Amazon Textract, Anda dapat menggunakan adaptor saat memanggil StartDocumentAnalysis operasi. Untuk menggunakan adaptor, Anda harus terlebih dahulu membuat dan melatih adaptor dengan menggunakan konsol Amazon Textract. Untuk menerapkan adaptor Anda, berikan ID-nya saat memanggil operasi StartDocumentAnalysis API. Saat memanggil StartDocumentAnalysis operasi, Anda dapat menggunakan hingga satu adaptor per halaman.
"AdaptersConfig": { "Adapters": [ { "AdapterId": "2e9bf1c4aa31", "Version": "1", "Pages": [ "1" ] } ] }