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.
Asynchrone Operationen von Amazon Textract aufrufen
Amazon Textract bietet eine asynchrone API, mit der Sie mehrseitige Dokumente im PDF- oder TIFF-Format verarbeiten können. Sie können auch asynchrone Operationen verwenden, um einseitige Dokumente im JPEG-, PNG-, TIFF- oder PDF-Format zu verarbeiten.
Die Informationen in diesem Thema verwenden Texterkennungsvorgänge, um zu zeigen, wie asynchrone Operationen von Amazon Textract verwendet werden. Derselbe Ansatz funktioniert mit den Textanalyseoperationen vonStartDocumentAnalysisundGetDocumentAnalysisaus. Es funktioniert auch gleich mitStartExpenseAnalysisundGetExpenseAnalysisaus.
Ein Beispiel finden Sie unter Erkennen oder Analysieren von Text in einem mehrseitigen Dokument.
Amazon Textract verarbeitet asynchron ein Dokument, das in einem Amazon S3 S3-Bucket gespeichert ist. Sie beginnen mit der Verarbeitung, indem Sie einStart
Betrieb, wieStartDocumentTextDetectionaus. Der Erledigungsstatus der Anfrage wird in einem Amazon Simple Notification Service (Amazon SNS) -Thema veröffentlicht. Um den Erledigungsstatus aus dem Amazon-SNS-Thema zu erhalten, können Sie eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange oder eineAWS LambdaFunktion. Sobald Sie den Erledigungsstatus bekommen haben, rufen Sie eine Get
-Operation auf, wie z. B. GetDocumentTextDetection, um die Ergebnisse der Anfrage zu erhalten.
Die Ergebnisse asynchroner Anrufe werden standardmäßig verschlüsselt und 7 Tage lang in einem Bucket im Besitz von Amazon Textract gespeichert, es sei denn, Sie geben einen Amazon S3 S3-Bucket mit einem Vorgang anOutputConfig
Argument.
Die folgende Tabelle zeigt die entsprechenden Start- und Abgabevorgänge für die verschiedenen von Amazon Textract unterstützten asynchronen Verarbeitungstypen:
Art der Verarbeitung | API starten | Erhalten einer API |
---|---|---|
Texterkennung | StartDocumentTextDetection | GetDocumentTextDetection |
Textanalyse | StartDocumentAnalysis | GetDocumentAnalysis |
Kostenanalyse | StarteExpenseAnalysis | getExpenseAnalysis |
Für ein Beispiel, das verwendetAWS LambdaFunktionen finden Sie unterDokumentenverarbeitung im großen Maßstab mit Amazon Textract
Im folgenden Diagramm wird der Vorgang zur Erkennung von Dokumenttext in einem Dokumentbild, das in einem Amazon-S3-Bucket gespeichert ist, zeigt. Im Diagramm erhält eine Amazon SQS SQS-Warteschlange den Erledigungsstatus aus dem Amazon SNS SNS-Thema.
Der im vorhergehenden Diagramm angezeigte Prozess ist für die Analyse von Text und Rechnungen/Belegen identisch. Sie beginnen mit der Analyse von Text, indem Sie anrufenStartDocumentAnalysisund analysieren Sie Rechnungen/Quittungen, indem Sie anrufenStartExpenseAnalysisSie erhalten die Ergebnisse, indem Sie anrufenGetDocumentAnalysisoderGetExpenseAnalysisbeziehungsweise.
Starten der Texterkennung
Sie starten eine Amazon Textract--Texterkennungsanforderung, indem Sie aufrufenStartDocumentTextDetectionaus. Im Folgenden sehen Sie ein Beispiel für eine JSON-Anforderung, die von StartDocumentTextDetection
übergeben wird.
{ "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" }
Der EingabeparameterDocumentLocation
liefert den Dateinamen des -Dokuments und den Amazon S3 S3-Bucket, aus dem sie abgerufen werden kann.NotificationChannel
enthält den Amazon-Ressourcennamen (ARN) des Amazon-SNS-Themas, das Amazon Textract benachrichtigt, wenn die Anfrage zur Texterkennung beendet ist. Das Amazon SNS SNS-Thema muss sich in derselben AWS-Region befinden wie der Amazon Textract Textract-Endpunkt, den Sie aufrufen.NotificationChannel
enthält auch den ARN für eine Rolle, die es Amazon Textract erlaubt, das Amazon SNS SNS-Thema zu veröffentlichen. Sie erteilen Amazon Textract Textract-Veröffentlichungsberechtigungen für Ihre Amazon SNS SNS-Themen, indem Sie eine IAM-Servicerolle erstellen. Weitere Informationen finden Sie unter Konfigurieren von Amazon Textract für asynchrone Vorgänge .
Sie können auch einen optionalen Eingabeparameter angeben,JobTag
, der es Ihnen ermöglicht, den Auftrag oder Gruppen von Aufträgen im Erledigungsstatus zu identifizieren, der im Amazon-SNS-Thema veröffentlicht ist. Sie können beispielsweise die Verwendung vonJobTag
um die Art des zu bearbeitenden Dokuments zu ermitteln, z. B. ein Steuerformular oder eine Quittung.
Um ein versehentliches doppeltes Ausführen von Analyseaufträgen zu vermeiden, können Sie optional ein idempotentes Token, ClientRequestToken
, bereitstellen. Wenn Sie einen Wert angeben fürClientRequestToken
, derStart
-Operation gibt das Gleiche zurückJobId
für mehrere identische Anrufe an dieStart
Betrieb, wieStartDocumentTextDetection
aus. Ein Token ClientRequestToken
hat eine Lebensdauer von 7 Tagen. Nach 7 Tagen können Sie es wiederverwenden. Wenn Sie das Token während der Token-Lebensdauer wiederverwenden, geschieht folgendes:
-
Wenn Sie das Token mit der gleichen
Start
-Operation und den gleichen Eingabeparametern wiederverwenden, wird dieselbeJobId
zurückgegeben. Der Auftrag wird nicht erneut ausgeführt und Amazon Textract sendet keinen Erledigungsstatus an das registrierte Amazon SNS SNS-Thema. -
Wenn Sie das Token mit der gleichen
Start
-Operation und einer geringfügigen Änderung der Eingabeparameter wiederverwenden, wird eineidempotentparametermismatchexception
-Ausnahme (HTTP-Statuscode: 400) ausgelöst. -
Wenn Sie das Token mit einer anderen
Start
-Operation wiederverwenden, ist die Operation erfolgreich.
Ein weiterer optionaler Parameter ist verfügbarOutputConfig
, mit dem Sie einstellen können, wo Ihre Ausgabe platziert wird. Standardmäßig speichert Amazon Textract die Ergebnisse intern und kann nur von den API-Vorgängen abrufen aufgerufen werden. mitOutputConfig
aktiviert, können Sie den Namen des Buckets festlegen, an den die Ausgabe gesendet wird, und das Dateipräfix der Ergebnisse, in dem Sie Ihre Ergebnisse herunterladen können. Darüber hinaus können Sie dieKMSKeyID
Parameter an einen vom Kunden verwalteten Schlüssel, um Ihre Ausgabe zu verschlüsseln. Ohne diesen Parametersatz verschlüsselt Amazon Textract serverseitig mit demVon AWS verwalteter Schlüsselfür Amazon S3
Anmerkung
Bevor Sie diesen Parameter verwenden, stellen Sie sicher, dass Sie die PutObject-Berechtigung für den Ausgabe-Bucket haben Stellen Sie außerdem sicher, dass Sie über die Berechtigungen Decrypt, ReEncrypt, GenerateDataKey und DescribeKey verfügen für dieAWS KMSSchlüssel, wenn Sie sich entscheiden, ihn zu verwenden.
Die Antwort auf die StartDocumentTextDetection
-Operation ist eine Auftrags-ID (JobId
). Verwenden vonJobId
Um Anfragen zu verfolgen und die Analyseergebnisse zu erhalten, nachdem Amazon Textract den Status der Fertigstellung im Amazon-SNS-Thema veröffentlicht hat. Im Folgenden wird ein Beispiel gezeigt:
{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}
Wenn Sie gleichzeitig zu viele Jobs starten, rufen Sie anStartDocumentTextDetection
RAISE einLimitExceededException
-Ausnahme (HTTP-Statuscode: 400), bis die Anzahl der gleichzeitig ausgeführten Aufträge unter dem Amazon Textract Texttract-Service-Limit liegt.
Wenn Sie feststellen, dass LimitExceededException-Ausnahmen bei Teilaktivitäten ausgelöst werden, empfiehlt sich für die Verwaltung eingehender Anforderungen die Verwendung einer Amazon SQS SQS-Warteschlange. KontaktAWSSupport, wenn Sie feststellen, dass Ihre durchschnittliche Anzahl gleichzeitiger Anforderungen nicht von einer Amazon SQS SQS-Warteschlange verwaltet werden kann und Sie weiterhin erhaltenLimitExceededException
Ausnahmen.
Abrufen des Erledigungsstatus einer Amazon Textract Textract-Analyseanforderung
Amazon Textract sendet eine Benachrichtigung über den Abschluss der Analyse an das registrierte Amazon SNS SNS-Thema. Die Benachrichtigung enthält die Auftrags-ID und den Erledigungsstatus der Operation in einer JSON-Zeichenfolge. Eine erfolgreiche Anfrage zur Texterkennung hat eineSUCCEEDED
Status. Das folgende Ergebnis zeigt beispielsweise die erfolgreiche Verarbeitung eines Texterkennungsauftrags.
{ "JobId": "642492aea78a86a40665555dc375ee97bc963f342b29cd05030f19bd8fd1bc5f", "Status": "SUCCEEDED", "API": "StartDocumentTextDetection", "JobTag": "Receipt", "Timestamp": 1543599965969, "DocumentLocation": { "S3ObjectName": "document", "S3Bucket": "bucket" } }
Weitere Informationen finden Sie unter Amazon Textract Ergebnisbenachrichtigung .
Verwenden Sie eine der folgenden Optionen, um die Statusinformationen zu erhalten, die im Amazon-SNS-Thema von Amazon SNS-Thema von Amazon Textract veröffentlicht werden:
-
AWS Lambda— Sie können eine abonnierenAWS Lambda-Funktion, die Sie in ein Amazon SNS SNS-Thema schreiben. Die Funktion wird aufgerufen, wenn Amazon Textract das Amazon SNS SNS-Thema darüber informiert, dass die Anfrage abgeschlossen ist. Verwenden Sie eine Lambda-Funktion, wenn Sie serverseitigen Code zur Verarbeitung der Ergebnisse einer Texterkennungsanforderung benötigen. Sie können beispielsweise serverseitigen Code verwenden, um das Bild mit Anmerkungen zu versehen oder einen Bericht über den erkannten Text zu erstellen, bevor die Informationen an eine Client-Anwendung zurückgegeben werden.
-
Amazon SQS- Sie können eine Amazon SQS SQS-Warteschlange für ein Amazon SNS SNS-Thema abonnieren. Sie fragen dann die Amazon SQS SQS-Warteschlange ab, um den von Amazon Textract veröffentlichten Erledigungsstatus abzurufen, wenn eine Anfrage zur Texterkennung abgeschlossen ist. Weitere Informationen finden Sie unter Erkennen oder Analysieren von Text in einem mehrseitigen Dokument . Verwenden Sie eine Amazon SQS SQS-Warteschlange, wenn Sie Amazon Textract Textract-Operationen nur von einer Client-Anwendung aus aufrufen möchten.
Wichtig
Wir raten davon ab, den Status der Auftragserfüllung durch wiederholtes Aufrufen des Amazon TextractGet
verwenden. Dies liegt daran, dass Amazon Textract dieGet
-Betrieb, wenn zu viele Anfragen gestellt werden. Wenn Sie mehrere Dokumente gleichzeitig verarbeiten, ist es einfacher und effizienter, eine SQS-Warteschlange für die Erledigungsbenachrichtigung zu überwachen, als Amazon Textract nach dem Status jedes Auftrags einzeln abzufragen.
Ergebnisse der Amazon Textract Textract-Texterkennung abrufen
Um die Ergebnisse einer Texterkennungsanforderung zu erhalten, stellen Sie zunächst sicher, dass der Erledigungsstatus, der aus dem Amazon-SNS-Thema abgerufen wird, lautetSUCCEEDED
aus. Rufen Sie dann GetDocumentTextDetection
auf, wodurch der Wert JobId
übergeben wird, den StartDocumentTextDetection
zurückgibt. Die JSON-Ausgabe sieht folgendermaßen oder ähnlich aus:
{ "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3", "MaxResults": 10, "SortBy": "TIMESTAMP" }
JobId
ist der Bezeichner für den Texterkennungsvorgang. Da die Texterkennung große Datenmengen erzeugen kann, verwenden SieMaxResults
um die maximale Anzahl der Ergebnisse anzugeben, die in einem einzigenGet
verwenden. Der Standardwert fürMaxResults
ist 1.000. Wenn Sie einen Wert größer als 1.000 angeben, werden nur 1.000 Ergebnisse zurückgegeben. Wenn die Operation nicht alle Ergebnisse zurückgibt, wird ein Paginierungs-Token für die nächste Seite zurückgegeben. Um die nächste Ergebnisseite abzurufen, geben Sie das Token in derNextToken
-Parameter.
Anmerkung
Amazon Textract bewahrt die Ergebnisse asynchroner Operationen für 7 Tage auf. Nach dieser Zeit können Sie die Ergebnisse nicht mehr abrufen.
DieGetDocumentTextDetection
Die Operation Response JSON ähnelt dem folgenden Beispiel. Die Gesamtzahl der erkannten Seiten wird in zurückgegebenDocumentMetadata
aus. Der erkannte Text wird imBlocks
Array. Weitere Informationen zuBlock
objekte, sieheAntwortobjekte für Texterkennung und Dokumentanalyseaus.
{ "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 } ] }