Asynchrone Operationen von Amazon Textract aufrufen - 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.

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 einStartBetrieb, 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 anOutputConfigArgument.

Die folgende Tabelle zeigt die entsprechenden Start- und Abgabevorgänge für die verschiedenen von Amazon Textract unterstützten asynchronen Verarbeitungstypen:

API-Operationen für Asynchrone Operationen von Amazon Textract starten/abrufen
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 Textractaus.

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 EingabeparameterDocumentLocationliefert den Dateinamen des -Dokuments und den Amazon S3 S3-Bucket, aus dem sie abgerufen werden kann.NotificationChannelenthä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.NotificationChannelenthä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 vonJobTagum 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ückJobIdfür mehrere identische Anrufe an dieStartBetrieb, wieStartDocumentTextDetectionaus. 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 dieselbe JobId 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 eine idempotentparametermismatchexception-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. mitOutputConfigaktiviert, 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 dieKMSKeyIDParameter 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 vonJobIdUm 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 anStartDocumentTextDetectionRAISE 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 erhaltenLimitExceededExceptionAusnahmen.

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 eineSUCCEEDEDStatus. 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 TextractGetverwenden. 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, lautetSUCCEEDEDaus. 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" }

JobIdist der Bezeichner für den Texterkennungsvorgang. Da die Texterkennung große Datenmengen erzeugen kann, verwenden SieMaxResultsum die maximale Anzahl der Ergebnisse anzugeben, die in einem einzigenGetverwenden. Der Standardwert fürMaxResultsist 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.

DieGetDocumentTextDetectionDie Operation Response JSON ähnelt dem folgenden Beispiel. Die Gesamtzahl der erkannten Seiten wird in zurückgegebenDocumentMetadataaus. Der erkannte Text wird imBlocksArray. Weitere Informationen zuBlockobjekte, 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 } ] }