View a markdown version of this page

Asynchrone Amazon Textract Textract-Operationen 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 Amazon Textract Textract-Operationen 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 zeigen anhand von Texterkennungsoperationen, wie Sie asynchrone Amazon Textract Textract-Operationen verwenden. Sie können den gleichen Ansatz mit den Textanalyseoperationen von StartDocumentAnalysisund verwenden. GetDocumentAnalysis Es funktioniert auch mit StartExpenseAnalysisund GetExpenseAnalysis.

Ein Beispiel finden Sie unter Text in einem mehrseitigen Dokument erkennen oder analysieren.

Wenn Sie Ausleihdokumente analysieren, können Sie den StartLendingAnalysis Vorgang verwenden, um Dokumentseiten zu klassifizieren und die klassifizierten Seiten an einen Amazon Textract Textract-Analysevorgang zu senden. Die Seiten werden je nach zugewiesener Klasse an Analyseoperationen weitergeleitet.

Mithilfe der GetLendingAnalysis Operation können Sie Ergebnisse für einzelne Seiten abrufen oder mit Hilfe von eine Zusammenfassung der Analyse abrufen. GetLendingAnalysisSummary

Amazon Textract verarbeitet asynchron ein Dokument, das in einem Amazon S3 S3-Bucket gespeichert ist. Sie starten die Verarbeitung, indem Sie einen Start Vorgang aufrufen, wie z. StartDocumentTextDetection Der Abschlussstatus der Anforderung wird in einem Amazon-Simple-Notification-Service-Thema (Amazon SNS) veröffentlicht. Um den Abschlussstatus des Amazon SNS SNS-Themas abzurufen, können Sie eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange oder eine AWS Lambda Funktion verwenden. 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 Aufrufe werden standardmäßig verschlüsselt und 7 Tage lang in einem Amazon Textract Textract-eigenen Bucket gespeichert, es sei denn, Sie geben mit dem Argument einer Operation einen Amazon S3 S3-Bucket an. OutputConfig Informationen darüber, wie Amazon Textract verschlüsselte Dokumente an Ihren Amazon S3 S3-Bucket senden kann, finden Sie unterBerechtigungen für die Ausgabekonfiguration.

Die folgende Tabelle zeigt die entsprechenden Start- und Get-Operationen für die verschiedenen Arten der asynchronen Verarbeitung, die von Amazon Textract unterstützt werden:

Start/Get API-Operationen für asynchrone Amazon Textract Textract-Operationen
Art der Verarbeitung API starten Holen Sie sich die API
Texterkennung StartDocumentTextDetection GetDocumentTextDetection
Textanalyse StartDocumentAnalysis GetDocumentAnalysis
Kostenanalyse StartExpenseAnalysis GetExpenseAnalysis
Analyse der Kreditvergabe StartLendingAnalysis GetLendingAnalysis, GetLendingAnalysisSummary

Ein Beispiel, das AWS Lambda Funktionen verwendet, finden Sie unter Verarbeitung umfangreicher Dokumente mit Amazon Textract.

Das folgende Diagramm zeigt den Prozess zur Erkennung von Dokumenttext in einem Dokumentbild, das in einem Amazon S3 S3-Bucket gespeichert ist. Im Diagramm erhält eine Amazon-SQS-Warteschlange den Abschlussstatus aus dem Amazon-SNS-Thema.

Diagramm, das einen Amazon Textract Textract-Workflow mit den wichtigsten Schritten zeigt: Job-ID starten und zurückgeben, Dokument im S3-Bucket verarbeiten, Abschlussstatus im SNS-Thema veröffentlichen, SQS-Warteschlange auf Abschlussstatus überwachen, Aufruf GetDocumentTextDetection zum Abrufen von Analyseergebnissen.

Der im obigen Diagramm dargestellte Prozess ist derselbe für die Analyse von Text und. invoices/receipts Sie beginnen mit der Textanalyse, indem Sie anrufen, StartDocumentAnalysisund beginnen mit der Analyse invoices/receipts . Die Ergebnisse erhalten StartExpenseAnalysisSie durch einen Anruf GetDocumentAnalysisGetExpenseAnalysisbzw.

Die Texterkennung starten

Sie starten eine Amazon Textract-Texterkennungsanfrage, indem Sie anrufen StartDocumentTextDetection. 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 Eingabeparameter DocumentLocation gibt den Namen der Dokumentdatei und den Amazon S3 S3-Bucket an, aus dem das Dokument abgerufen werden soll. NotificationChannelenthält den Amazon-Ressourcennamen (ARN) des Amazon SNS-Themas, das Amazon Textract benachrichtigt, wenn die Texterkennungsanforderung abgeschlossen ist. Das Amazon SNS SNS-Thema muss sich in derselben AWS-Region befinden wie der Amazon Textract Textract-Endpunkt, den Sie anrufen. NotificationChannelenthält auch den ARN für eine Rolle, die es Amazon Textract ermöglicht, im Amazon SNS SNS-Thema zu veröffentlichen. Sie erteilen Amazon Textract Veröffentlichungsberechtigungen für Ihre Amazon SNS SNS-Themen, indem Sie eine IAM-Servicerolle erstellen. Weitere Informationen finden Sie unter Konfiguration von Amazon Textract für asynchrone Operationen.

Sie können auch einen optionalen Eingabeparameter angebenJobTag, mit dem Sie den Job oder die Gruppen von Aufträgen im Abschlussstatus identifizieren können, der im Amazon SNS SNS-Thema veröffentlicht wurde. Sie können dies beispielsweise verwenden, JobTag um die Art des zu verarbeitenden Dokuments zu identifizieren, 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 für angebenClientRequestToken, gibt die Start Operation denselben Wert JobId für mehrere identische Aufrufe der Start Operation zurück, z. StartDocumentTextDetection B. 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 Job wird nicht erneut ausgeführt und Amazon Textract sendet keinen Abschlussstatus 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 anpassen können, wo Ihre Ausgabe platziert werden soll. Standardmäßig speichert Amazon Textract die Ergebnisse intern und kann nur über die Get API-Operationen abgerufen werden. Wenn OutputConfig diese Option aktiviert ist, können Sie den Namen des Buckets, an den die Ausgabe gesendet werden soll, und das Dateipräfix der Ergebnisse festlegen, in das Sie Ihre Ergebnisse herunterladen können. Darüber hinaus können Sie den KMSKeyID Parameter auf einen vom Kunden verwalteten Schlüssel setzen, um Ihre Ausgabe zu verschlüsseln. Wenn dieser Parameter nicht gesetzt ist, verschlüsselt Amazon Textract serverseitig mit dem Von AWS verwalteter Schlüssel für Amazon S3

Anmerkung

Bevor Sie diesen Parameter verwenden, stellen Sie sicher, dass Sie über die PutObject Berechtigung für den Ausgabe-Bucket verfügen. Stellen Sie außerdem sicher, dass Sie über die DescribeKey Berechtigungen Decrypt ReEncrypt GenerateDataKey,, und für den AWS KMS Schlüssel verfügen, falls Sie ihn verwenden möchten.

Die Antwort auf die StartDocumentTextDetection-Operation ist eine Auftrags-ID (JobId). Wird verwendetJobId, um Anfragen nachzuverfolgen und die Analyseergebnisse abzurufen, nachdem Amazon Textract den Abschlussstatus für das Amazon SNS SNS-Thema veröffentlicht hat. Im Folgenden wird ein Beispiel gezeigt:

{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}

Wenn Sie zu viele Jobs gleichzeitig starten, rufen Sie auf, um eine LimitExceededException Ausnahme StartDocumentTextDetection auszulösen (HTTP-Statuscode: 400), bis die Anzahl der gleichzeitig ausgeführten Jobs unter dem Amazon Textract-Servicelimit liegt.

Wenn Sie feststellen, dass bei vielen Aktivitäten LimitExceededException Ausnahmen ausgelöst werden, sollten Sie die Verwendung einer Amazon SQS SQS-Warteschlange zur Verwaltung eingehender Anfragen in Betracht ziehen. Wenden Sie sich an den AWS Support, wenn Sie feststellen, dass Ihre durchschnittliche Anzahl gleichzeitiger Anfragen nicht von einer Amazon SQS SQS-Warteschlange verwaltet werden kann und Sie immer noch Ausnahmen erhaltenLimitExceededException.

Den Abschlussstatus einer Amazon Textract Textract-Analyseanfrage abrufen

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 Texterkennungsanfrage hat einen SUCCEEDED 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 Benachrichtigung über Amazon Textract Textract-Ergebnisse.

Verwenden Sie eine der folgenden Optionen, um die von Amazon Textract zum Thema Amazon SNS veröffentlichten Statusinformationen abzurufen:

  • AWS Lambda – Sie können eine AWS Lambda -Funktion abonnieren, die Sie in ein Amazon-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 serverseitiger Code die Ergebnisse einer Texterkennungsanforderung verarbeiten soll. Möglicherweise möchten Sie serverseitigen Code verwenden, um das Bild mit Anmerkungen zu versehen oder einen Bericht über den erkannten Text zu erstellen, bevor Sie die Informationen an eine Client-Anwendung zurückgeben.

  • Amazon SQS — Sie können eine Amazon SQS SQS-Warteschlange für ein Amazon SNS SNS-Thema abonnieren. Anschließend fragen Sie die Amazon SQS SQS-Warteschlange ab, um den Abschlussstatus abzurufen, der von Amazon Textract veröffentlicht wurde, wenn eine Texterkennungsanfrage abgeschlossen ist. Weitere Informationen finden Sie unter Text in einem mehrseitigen Dokument erkennen oder analysieren. Verwenden Sie eine Amazon SQS SQS-Warteschlange, wenn Sie Amazon Textract Textract-Operationen nur von einer Client-Anwendung aus aufrufen möchten.

Wichtig

Es wird nicht empfohlen, den Abschlussstatus der Anfrage durch wiederholtes Aufrufen des Amazon Textract Get Textract-Vorgangs abzurufen. Dies liegt daran, dass Amazon Textract den Get Vorgang drosselt, wenn zu viele Anfragen gestellt werden. Wenn Sie mehrere Dokumente gleichzeitig verarbeiten, ist es einfacher und effizienter, eine SQS-Warteschlange für die Abschlussbenachrichtigung zu überwachen, als Amazon Textract den Status jedes Auftrags einzeln abzufragen.

Wenn Sie Ihr Konto so konfiguriert haben, dass es eine Ergebnisbenachrichtigung von einem Amazon Simple Notification Service (Amazon SNS) -Thema oder über eine Amazon SQS SQS-Warteschlange erhält, sollten Sie sicherstellen, dass Ihr Konto sicher ist, indem Sie den Zugriff von Amazon Textract auf die Ressourcen beschränken, die Sie verwenden. Dies kann erreicht werden, indem Sie Ihrer IAM-Servicerolle eine Vertrauensrichtlinie hinzufügen. Informationen dazu, wie Sie dies tun können, finden Sie unter Cross-service Confused Deputy Prevention.

Ergebnisse der Amazon Textract Textract-Texterkennung abrufen

Um die Ergebnisse einer Texterkennungsanfrage zu erhalten, stellen Sie zunächst sicher, dass der Abschlussstatus, der aus dem Amazon SNS SNS-Thema abgerufen wurde, lautetSUCCEEDED. 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 die Kennung für den Texterkennungsvorgang. Da bei der Texterkennung große Datenmengen generiert werden können, geben MaxResults Sie hier die maximale Anzahl von Ergebnissen an, die in einem einzigen Get Vorgang zurückgegeben werden sollen. Der Standardwert für MaxResults ist 1.000. Wenn Sie einen Wert über 1.000 angeben, werden nur 1.000 Ergebnisse zurückgegeben. Wenn der Vorgang nicht alle Ergebnisse zurückgibt, wird ein Paginierungstoken für die nächste Seite zurückgegeben. Um die nächste Ergebnisseite zu erhalten, geben Sie das Token im NextToken Parameter an.

Anmerkung

Ergebnisse können nur für einen Zeitraum von bis zu 7 Tagen nach der Initialisierung des Jobs abgerufen werden.

Die GetDocumentTextDetection Operationsantwort JSON ähnelt der folgenden. Die Gesamtzahl der erkannten Seiten wird in zurückgegebenDocumentMetadata. Der erkannte Text wird im Blocks Array zurückgegeben. Hinweise zu Block Objekten finden Sie unterAntwortobjekte für Texterkennung und Dokumentenanalyse.

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

Verwenden eines Adapters

Mit Amazon Textract können Sie beim Aufrufen des StartDocumentAnalysisVorgangs einen Adapter verwenden. Um einen Adapter zu verwenden, müssen Sie zuerst einen Adapter mithilfe der Amazon Textract Textract-Konsole erstellen und trainieren. Um Ihren Adapter anzuwenden, geben Sie beim Aufrufen der StartDocumentAnalysisAPI-Operation seine ID an. Beim Aufrufen des StartDocumentAnalysisVorgangs können Sie bis zu einen Adapter pro Seite verwenden.

"AdaptersConfig": { "Adapters": [ { "AdapterId": "2e9bf1c4aa31", "Version": "1", "Pages": [ "1" ] } ] }