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 StartDocumentAnalysisdan GetDocumentAnalysis. Ini juga bekerja sama dengan StartExpenseAnalysisdan 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 baris ke operasi analisis Amazon Textract. Halaman-halaman tersebut diarahkan ke operasi analisis tergantung pada kelas yang ditugaskan.
Anda dapat mengambil hasil untuk setiap halaman dengan menggunakan GetLendingAnalysis operasi, atau mengambil ringkasan analisis dengan. GetLendingAnalysisSummary
Amazon Textract memproses dokumen yang disimpan dalam bucket Amazon S3 secara asinkron. 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 antrean 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 dalam bucket milik Amazon Textract secara default, kecuali Anda menentukan bucket Amazon S3 menggunakan argumen operasi. OutputConfig Untuk informasi tentang cara mengizinkan Amazon Ttract mengirim dokumen terenkripsi ke bucket Amazon S3 Anda, lihat. Izin untuk Konfigurasi Output
Tabel berikut menunjukkan operasi Mulai dan Dapatkan 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 Pemrosesan dokumen skala besar dengan Amazon Ttract.
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 StartDocumentAnalysisdan mulai menganalisis invoices/receipts dengan menelepon StartExpenseAnalysisAnda mendapatkan hasil dengan menelepon GetDocumentAnalysisatau GetExpenseAnalysismasing-masing.
Memulai Deteksi Teks
Anda memulai permintaan deteksi teks Amazon Texttract dengan menelepon. StartDocumentTextDetection 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 untuk mempublikasikan 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 Ttract 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, hal yang sama akanJobIddikembalikan. Pekerjaan tidak dilakukan lagi dan Amazon Textract tidak mengirimkan status penyelesaian ke topik Amazon SNS yang 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 berhasil.
Parameter opsional lain yang tersedia adalahOutputConfig, yang memungkinkan Anda menyesuaikan di mana output Anda akan ditempatkan. Secara default, Amazon Ttract akan menyimpan hasilnya secara internal, dan hanya dapat diakses oleh operasi Get API. Dengan OutputConfig diaktifkan, Anda dapat mengatur nama bucket yang akan dikirim ke output, dan awalan file hasil, di mana Anda dapat mengunduh hasil Anda. Selain itu, Anda dapat mengatur KMSKeyID parameter ke kunci yang dikelola pelanggan untuk mengenkripsi output Anda. Tanpa parameter ini, Amazon Ttract 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 Dekripsi, ReEncrypt, 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 mempublikasikan status penyelesaian ke topik Amazon SNS. Berikut ini adalah contohnya:
{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}
Jika Anda memulai terlalu banyak pekerjaan secara bersamaan, panggilan untuk StartDocumentTextDetection meningkatkan LimitExceededException pengecualian (kode status HTTP: 400) hingga jumlah pekerjaan yang berjalan secara bersamaan berada di bawah batas layanan Amazon Textract.
Jika Anda menemukan bahwa LimitExceededException pengecualian dimunculkan dengan ledakan aktivitas, pertimbangkan untuk menggunakan antrean Amazon SQS untuk mengelola permintaan yang masuk. Hubungi AWS
Support jika Anda menemukan bahwa jumlah rata-rata permintaan bersamaan tidak dapat dikelola oleh antrean Amazon SQS dan Anda masih menerima pengecualian. LimitExceededException
Mendapatkan Status Penyelesaian Permintaan Analisis Amazon Textract
Amazon Ttract mengirimkan pemberitahuan penyelesaian analisis ke topik Amazon SNS yang 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 Texttract.
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 Ttract memberi tahu topik Amazon SNS bahwa permintaan telah selesai. Gunakan fungsi Lambda jika Anda ingin kode sisi server 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 melakukan polling pada antrean Amazon SQS untuk mengambil status penyelesaian yang diterbitkan oleh Amazon Texttract saat permintaan deteksi teks selesai. Untuk informasi selengkapnya, lihat Mendeteksi atau Menganalisis Teks dalam Dokumen Multipage. Gunakan antrean Amazon SQS jika Anda ingin memanggil operasi Amazon Ttract hanya dari aplikasi klien.
penting
Kami tidak menyarankan mendapatkan status penyelesaian permintaan dengan berulang kali memanggil operasi Amazon TextractGet. Ini karena Amazon Ttract 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 Simple Notification Service Amazon (Amazon SNS) atau melalui antrian Amazon SQS, Anda harus memastikan bahwa akun Anda aman dengan membatasi cakupan akses Amazon Texttract 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 yang Cross-service 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 adalah. SUCCEEDED Kemudian panggil GetDocumentTextDetection, yang memberikan nilai JobId yang dikembalikan dari StartDocumentTextDetection. Permintaan JSON serupa dengan contoh berikut:
{ "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3", "MaxResults": 10, "SortBy": "TIMESTAMP" }
JobIdadalah pengenal untuk operasi deteksi teks. Karena deteksi teks dapat menghasilkan sejumlah besar data, gunakan MaxResults untuk menentukan jumlah maksimum hasil untuk kembali 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 akan dikembalikan. Untuk mendapatkan halaman hasil berikutnya, tentukan token dalam NextToken parameter.
catatan
Hasil dapat diambil hanya hingga 7 hari dari waktu inisialisasi pekerjaan.
Respon 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 Ttract, Anda dapat menggunakan adaptor saat memanggil operasi. StartDocumentAnalysis 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 StartDocumentAnalysisAPI. Saat memanggil StartDocumentAnalysisoperasi, Anda dapat menggunakan hingga satu adaptor per halaman.
"AdaptersConfig": { "Adapters": [ { "AdapterId": "2e9bf1c4aa31", "Version": "1", "Pages": [ "1" ] } ] }