

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.

# Tutorials
<a name="examples-blocks"></a>

[Block](API_Block.md)-Objekte, die von Amazon Textract Textract-Operationen zurückgegeben werden, enthalten die Ergebnisse von Texterkennungs- und Textanalysevorgängen, wie[AnalyzeDocument](API_AnalyzeDocument.md)aus. Die folgenden Python-Tutorials zeigen einige der verschiedenen Möglichkeiten, wie Sie Block-Objekte verwenden können. Sie können beispielsweise Tabelleninformationen in eine Komma-getrennte Datei (Comma-getrennte Datei) exportieren.

Die Tutorials verwenden synchrone Amazon Textract Textract-Vorgänge, die alle Ergebnisse zurückgeben. Wenn Sie asynchrone Operationen wie[StartDocumentAnalysis](API_StartDocumentAnalysis.md)müssen Sie den Beispielcode ändern, um mehrere Stapel zurückgegebenen`Block`Objekte. Um das Beispiel für asynchrone Operationen zu verwenden, stellen Sie sicher, dass Sie die Anweisungen unter[Konfigurieren von Amazon Textract für asynchrone Vorgänge](api-async-roles.md)aus.

Beispiele, die Ihnen andere Möglichkeiten zur Verwendung von Amazon Textract zeigen, finden Sie unter[Weitere Codebeispiele](other-examples.md)aus.

**Topics**
+ [Voraussetzungen](#examples-prerequisites)
+ [Extrahieren von Schlüssel-Wert-Paaren aus einem Formulardokument](examples-extract-kvp.md)
+ [Exportieren von Tabellen in eine CSV-Datei](examples-export-table-csv.md)
+ [Erstellen einesAWS LambdaFunktion](lambda.md)
+ [Weitere Codebeispiele](other-examples.md)

## Voraussetzungen
<a name="examples-prerequisites"></a>

Bevor Sie die Beispiele in diesem Abschnitt ausführen, müssen Sie Ihre Umgebung konfigurieren. 

**So konfigurieren Sie Ihre Umgebung**

1. Erstellen oder aktualisieren Sie einen IAM-Benutzer mit`AmazonTextractFullAccess`Berechtigungen Weitere Informationen finden Sie unter [Schritt 1: Einrichten eines AWS-Kontos und Erstellen eines IAM-Benutzers](setting-up.md#setting-up-iam) .

1. Installieren und konfigurieren Sie die AWS CLI- und AWS-SDKs. Weitere Informationen finden Sie unter [Schritt 2: Einrichten derAWS CLIundAWS-SDKs](setup-awscli-sdk.md) .

# Extrahieren von Schlüssel-Wert-Paaren aus einem Formulardokument
<a name="examples-extract-kvp"></a>

Das folgende Python-Beispiel zeigt, wie Schlüssel-Wert-Paare in Formulardokumenten extrahiert werden[Block](API_Block.md)Objekte, die in einer Map gespeichert sind. Blockobjekte werden von einem Aufruf an zurückgegeben[AnalyzeDocument](API_AnalyzeDocument.md)aus. Weitere Informationen finden Sie unter [Formulardaten (Schlüssel-Wert-Paare)](how-it-works-kvp.md) .

Sie verwenden die folgenden Funktionen: 
+ `get_kv_map`— Ruft[AnalyzeDocument](API_AnalyzeDocument.md)und speichert die KEY- und VALUE-BLOCK-Objekte in einer Map.
+ `get_kv_relationship`und`find_value_block`— Konstruiert die Schlüssel-Wert-Beziehungen aus der Map.

**So extrahieren Sie Schlüssel-Wert-Paare aus einem Formulardokument**

1. Konfigurieren Sie Ihre Umgebung. Weitere Informationen finden Sie unter [Voraussetzungen](examples-blocks.md#examples-prerequisites) .

1. Speichern Sie den folgenden Beispiel-Code in einer Datei mit dem Namen*textract\$1python\$1kv\$1parser.py*aus.

   ```
   import boto3
   import sys
   import re
   import json
   
   
   def get_kv_map(file_name):
   
       with open(file_name, 'rb') as file:
           img_test = file.read()
           bytes_test = bytearray(img_test)
           print('Image loaded', file_name)
   
       # process using image bytes
       client = boto3.client('textract')
       response = client.analyze_document(Document={'Bytes': bytes_test}, FeatureTypes=['FORMS'])
   
       # Get the text blocks
       blocks=response['Blocks']
       
   
       # get key and value maps
       key_map = {}
       value_map = {}
       block_map = {}
       for block in blocks:
           block_id = block['Id']
           block_map[block_id] = block
           if block['BlockType'] == "KEY_VALUE_SET":
               if 'KEY' in block['EntityTypes']:
                   key_map[block_id] = block
               else:
                   value_map[block_id] = block
   
       return key_map, value_map, block_map
   
   
   def get_kv_relationship(key_map, value_map, block_map):
       kvs = {}
       for block_id, key_block in key_map.items():
           value_block = find_value_block(key_block, value_map)
           key = get_text(key_block, block_map)
           val = get_text(value_block, block_map)
           kvs[key] = val
       return kvs
   
   
   def find_value_block(key_block, value_map):
       for relationship in key_block['Relationships']:
           if relationship['Type'] == 'VALUE':
               for value_id in relationship['Ids']:
                   value_block = value_map[value_id]
       return value_block
   
   
   def get_text(result, blocks_map):
       text = ''
       if 'Relationships' in result:
           for relationship in result['Relationships']:
               if relationship['Type'] == 'CHILD':
                   for child_id in relationship['Ids']:
                       word = blocks_map[child_id]
                       if word['BlockType'] == 'WORD':
                           text += word['Text'] + ' '
                       if word['BlockType'] == 'SELECTION_ELEMENT':
                           if word['SelectionStatus'] == 'SELECTED':
                               text += 'X '    
   
                                   
       return text
   
   
   def print_kvs(kvs):
       for key, value in kvs.items():
           print(key, ":", value)
   
   
   def search_value(kvs, search_key):
       for key, value in kvs.items():
           if re.search(search_key, key, re.IGNORECASE):
               return value
   
   def main(file_name):
   
       key_map, value_map, block_map = get_kv_map(file_name)
   
       # Get Key Value relationship
       kvs = get_kv_relationship(key_map, value_map, block_map)
       print("\n\n== FOUND KEY : VALUE pairs ===\n")
       print_kvs(kvs)
   
       # Start searching a key value
       while input('\n Do you want to search a value for a key? (enter "n" for exit) ') != 'n':
           search_key = input('\n Enter a search key:')
           print('The value is:', search_value(kvs, search_key))
   
   if __name__ == "__main__":
       file_name = sys.argv[1]
       main(file_name)
   ```

1. Geben Sie in der Eingabeaufforderung den folgenden Befehl ein. Ersetzen`file`mit der zu analysierenden Dokumentbilddatei.

   ```
   textract_python_kv_parser.py file
   ```

1. Wenn Sie dazu aufgefordert werden, geben Sie einen Schlüssel ein, der sich im Eingabedokument befindet. Wenn der Code den Schlüssel erkennt, zeigt er den Wert des Schlüssels an. 

# Exportieren von Tabellen in eine CSV-Datei
<a name="examples-export-table-csv"></a>

Diese Python-Beispiele zeigen, wie Tabellen aus einem Bild eines Dokuments in eine Komma-getrennte Datei (Comma-getrennte Datei, CSV-Datei) exportiert werden.

Das Beispiel für die synchrone Dokumentenanalyse sammelt Tabelleninformationen aus einem Aufruf an[AnalyzeDocument](API_AnalyzeDocument.md)aus. Das Beispiel für die asynchrone Dokumentenanalyse ruft[StartDocumentAnalysis](API_StartDocumentAnalysis.md)und ruft dann die Ergebnisse ab[GetDocumentAnalysis](API_GetDocumentAnalysis.md)als`Block`Objekte.

Tabelleninformationen werden zurückgegeben als[Block](API_Block.md)Objekte von einem Anruf an[AnalyzeDocument](API_AnalyzeDocument.md)aus. Weitere Informationen finden Sie unter [Tabellen](how-it-works-tables.md) . Die`Block`-Objekte werden in einer Kartenstruktur gespeichert, die zum Exportieren der Tabellendaten in eine CSV-Datei verwendet wird. 

------
#### [ Synchronous ]

In diesem Beispiel verwenden Sie die Funktionen: 
+ `get_table_csv_results`— Ruft[AnalyzeDocument](API_AnalyzeDocument.md)und erstellt eine Map von Tabellen, die im Dokument erkannt werden. Erstellt eine CSV-Darstellung aller erkannten Tabellen.
+ `generate_table_csv`— Erzeugt die CSV-Datei für eine einzelne Tabelle.
+ `get_rows_columns_map`— Ruft die Zeilen und Spalten aus der Map ab.
+ `get_text`— Ruft den Text aus einer Zelle ab.

**So exportieren Sie Tabellen in eine CSV-Datei**

1. Konfigurieren Sie Ihre Umgebung. Weitere Informationen finden Sie unter [Voraussetzungen](examples-blocks.md#examples-prerequisites) .

1. Speichern Sie den folgenden Beispiel-Code in einer Datei mit dem Namen*textract\$1python\$1table\$1parser.py*aus.

   ```
   import webbrowser, os
   import json
   import boto3
   import io
   from io import BytesIO
   import sys
   from pprint import pprint
   
   
   def get_rows_columns_map(table_result, blocks_map):
       rows = {}
       for relationship in table_result['Relationships']:
           if relationship['Type'] == 'CHILD':
               for child_id in relationship['Ids']:
                   cell = blocks_map[child_id]
                   if cell['BlockType'] == 'CELL':
                       row_index = cell['RowIndex']
                       col_index = cell['ColumnIndex']
                       if row_index not in rows:
                           # create new row
                           rows[row_index] = {}
                           
                       # get the text value
                       rows[row_index][col_index] = get_text(cell, blocks_map)
       return rows
   
   
   def get_text(result, blocks_map):
       text = ''
       if 'Relationships' in result:
           for relationship in result['Relationships']:
               if relationship['Type'] == 'CHILD':
                   for child_id in relationship['Ids']:
                       word = blocks_map[child_id]
                       if word['BlockType'] == 'WORD':
                           text += word['Text'] + ' '
                       if word['BlockType'] == 'SELECTION_ELEMENT':
                           if word['SelectionStatus'] =='SELECTED':
                               text +=  'X '    
       return text
   
   
   def get_table_csv_results(file_name):
   
       with open(file_name, 'rb') as file:
           img_test = file.read()
           bytes_test = bytearray(img_test)
           print('Image loaded', file_name)
   
       # process using image bytes
       # get the results
       client = boto3.client('textract')
   
       response = client.analyze_document(Document={'Bytes': bytes_test}, FeatureTypes=['TABLES'])
   
       # Get the text blocks
       blocks=response['Blocks']
       pprint(blocks)
   
       blocks_map = {}
       table_blocks = []
       for block in blocks:
           blocks_map[block['Id']] = block
           if block['BlockType'] == "TABLE":
               table_blocks.append(block)
   
       if len(table_blocks) <= 0:
           return "<b> NO Table FOUND </b>"
   
       csv = ''
       for index, table in enumerate(table_blocks):
           csv += generate_table_csv(table, blocks_map, index +1)
           csv += '\n\n'
   
       return csv
   
   def generate_table_csv(table_result, blocks_map, table_index):
       rows = get_rows_columns_map(table_result, blocks_map)
   
       table_id = 'Table_' + str(table_index)
       
       # get cells.
       csv = 'Table: {0}\n\n'.format(table_id)
   
       for row_index, cols in rows.items():
           
           for col_index, text in cols.items():
               csv += '{}'.format(text) + ","
           csv += '\n'
           
       csv += '\n\n\n'
       return csv
   
   def main(file_name):
       table_csv = get_table_csv_results(file_name)
   
       output_file = 'output.csv'
   
       # replace content
       with open(output_file, "wt") as fout:
           fout.write(table_csv)
   
       # show the results
       print('CSV OUTPUT FILE: ', output_file)
   
   
   if __name__ == "__main__":
       file_name = sys.argv[1]
       main(file_name)
   ```

1. Geben Sie in der Eingabeaufforderung den folgenden Befehl ein. Ersetzen`file`mit dem Namen der Dokumentbilddatei, die Sie analysieren möchten.

   ```
   python textract_python_table_parser.py file
   ```

Wenn Sie das Beispiel ausführen, wird die CSV-Ausgabe in einer Datei mit dem Namen gespeichert`output.csv`aus.

------
#### [ Asynchronous ]

In diesem Beispiel verwenden Sie zwei verschiedene Skripte. Das erste Skript startet die asynchrone Analyse von Dokumenten mit`StartDocumentAnalysis`und bekommt das`Block`von zurückgegebene Informationen`GetDocumentAnalysis`aus. Das zweite Skript nimmt das zurückgegebene`Block`Informationen für jede Seite, formatiert die Daten als Tabelle und speichert die Tabellen in einer CSV-Datei.

**So exportieren Sie Tabellen in eine CSV-Datei**

1. Konfigurieren Sie Ihre Umgebung. Weitere Informationen finden Sie unter [Voraussetzungen](examples-blocks.md#examples-prerequisites) .

1. Stellen Sie sicher, dass Sie die Anweisungen unter sehen befolgt haben[Konfigurieren von Amazon Textract für asynchrone Vorgänge](api-async-roles.md)aus. Der auf dieser Seite dokumentierte Prozess ermöglicht es Ihnen, Nachrichten über den Abschlussstatus asynchroner Jobs zu senden und zu empfangen.

1. Ersetzen Sie im folgenden Codebeispiel den Wert von`roleArn`wobei der Arn der Rolle zugewiesen wurde, die Sie in Schritt 2 erstellt haben. Ersetzen Sie den Wert von`bucket`mit dem Namen des S3-Buckets, der Ihr Dokument enthält. Ersetzen Sie den Wert von`document`durch den Namen des Dokuments in Ihrem S3-Bucket. Ersetzen Sie den Wert von`region_name`durch den Namen der -Region Ihres Buckets.

   Speichern Sie den folgenden Beispiel-Code in einer Datei mit dem Namen*start\$1doc\$1analysis\$1for\$1table\$1extraction.py.*aus.

   ```
   import boto3
   import time
   
   class DocumentProcessor:
   
       jobId = ''
       region_name = ''
   
       roleArn = ''
       bucket = ''
       document = ''
   
       sqsQueueUrl = ''
       snsTopicArn = ''
       processType = ''
   
       def __init__(self, role, bucket, document, region):
           self.roleArn = role
           self.bucket = bucket
           self.document = document
           self.region_name = region
   
           self.textract = boto3.client('textract', region_name=self.region_name)
           self.sqs = boto3.client('sqs')
           self.sns = boto3.client('sns')
   
       def ProcessDocument(self):
   
           jobFound = False
   
           response = self.textract.start_document_analysis(DocumentLocation={'S3Object': {'Bucket': self.bucket, 'Name': self.document}},
                   FeatureTypes=["TABLES", "FORMS"], NotificationChannel={'RoleArn': self.roleArn, 'SNSTopicArn': self.snsTopicArn})
           print('Processing type: Analysis')
   
           print('Start Job Id: ' + response['JobId'])
   
           print('Done!')
   
       def CreateTopicandQueue(self):
   
           millis = str(int(round(time.time() * 1000)))
   
           # Create SNS topic
           snsTopicName = "AmazonTextractTopic" + millis
   
           topicResponse = self.sns.create_topic(Name=snsTopicName)
           self.snsTopicArn = topicResponse['TopicArn']
   
           # create SQS queue
           sqsQueueName = "AmazonTextractQueue" + millis
           self.sqs.create_queue(QueueName=sqsQueueName)
           self.sqsQueueUrl = self.sqs.get_queue_url(QueueName=sqsQueueName)['QueueUrl']
   
           attribs = self.sqs.get_queue_attributes(QueueUrl=self.sqsQueueUrl,
                                                   AttributeNames=['QueueArn'])['Attributes']
   
           sqsQueueArn = attribs['QueueArn']
   
           # Subscribe SQS queue to SNS topic
           self.sns.subscribe(TopicArn=self.snsTopicArn, Protocol='sqs', Endpoint=sqsQueueArn)
   
           # Authorize SNS to write SQS queue
           policy = """{{
         "Version":"2012-10-17",
         "Statement":[
           {{
             "Sid":"MyPolicy",
             "Effect":"Allow",
             "Principal" : {{"AWS" : "*"}},
             "Action":"SQS:SendMessage",
             "Resource": "{}",
             "Condition":{{
               "ArnEquals":{{
                 "aws:SourceArn": "{}"
               }}
             }}
           }}
         ]
       }}""".format(sqsQueueArn, self.snsTopicArn)
   
           response = self.sqs.set_queue_attributes(
               QueueUrl=self.sqsQueueUrl,
               Attributes={
                   'Policy': policy
               })
   
   def main():
       roleArn = 'role-arn'
       bucket = 'bucket-name'
       document = 'document-name'
       region_name = 'region-name'
   
       analyzer = DocumentProcessor(roleArn, bucket, document, region_name)
       analyzer.CreateTopicandQueue()
       analyzer.ProcessDocument()
   
   if __name__ == "__main__":
       main()
   ```

1. Führen Sie den Code aus. Der Code druckt ein JobId. Kopiere dieses JobId nach unten.

1.  Warten Sie, bis Ihr Job die Verarbeitung abgeschlossen hat, und kopieren Sie nach Abschluss des Auftrags den folgenden Code in eine Datei namens*get\$1doc\$1analysis\$1for\$1table\$1extraction.py*aus. Ersetzen Sie den Wert von`jobId`mit der Job-ID, die Sie zuvor kopiert haben. Ersetzen Sie den Wert von`region_name`mit dem Namen der Region, die mit Ihrer Textrakt-Rolle verknüpft ist. Ersetzen Sie den Wert von`file_name`durch den Namen, den Sie dem Ausgang zuweisen möchten.

   ```
   import boto3
   from pprint import pprint
   
   jobId = 'job-id'
   region_name = 'region-name'
   file_name = "output-file-name.csv"
   
   textract = boto3.client('textract', region_name=region_name)
   
   # Display information about a block
   def DisplayBlockInfo(block):
       print("Block Id: " + block['Id'])
       print("Type: " + block['BlockType'])
       if 'EntityTypes' in block:
           print('EntityTypes: {}'.format(block['EntityTypes']))
   
       if 'Text' in block:
           print("Text: " + block['Text'])
   
       if block['BlockType'] != 'PAGE':
           print("Confidence: " + "{:.2f}".format(block['Confidence']) + "%")
   
   def GetResults(jobId, file_name):
       maxResults = 1000
       paginationToken = None
       finished = False
   
       while finished == False:
   
           response = None
   
           if paginationToken == None:
               response = textract.get_document_analysis(JobId=jobId, MaxResults=maxResults)
           else:
               response = textract.get_document_analysis(JobId=jobId, MaxResults=maxResults,
                                                              NextToken=paginationToken)
   
           blocks = response['Blocks']
           table_csv = get_table_csv_results(blocks)
           output_file = file_name
           # replace content
           with open(output_file, "at") as fout:
               fout.write(table_csv)
           # show the results
           print('Detected Document Text')
           print('Pages: {}'.format(response['DocumentMetadata']['Pages']))
           print('OUTPUT TO CSV FILE: ', output_file)
   
           # Display block information
           for block in blocks:
               DisplayBlockInfo(block)
               print()
               print()
   
           if 'NextToken' in response:
               paginationToken = response['NextToken']
           else:
               finished = True
   
   
   def get_rows_columns_map(table_result, blocks_map):
       rows = {}
       for relationship in table_result['Relationships']:
           if relationship['Type'] == 'CHILD':
               for child_id in relationship['Ids']:
                   try:
                       cell = blocks_map[child_id]
                       if cell['BlockType'] == 'CELL':
                           row_index = cell['RowIndex']
                           col_index = cell['ColumnIndex']
                           if row_index not in rows:
                               # create new row
                               rows[row_index] = {}
   
                           # get the text value
                           rows[row_index][col_index] = get_text(cell, blocks_map)
                   except KeyError:
                       print("Error extracting Table data - {}:".format(KeyError))
                       pass
       return rows
   
   
   def get_text(result, blocks_map):
       text = ''
       if 'Relationships' in result:
           for relationship in result['Relationships']:
               if relationship['Type'] == 'CHILD':
                   for child_id in relationship['Ids']:
                       try:
                           word = blocks_map[child_id]
                           if word['BlockType'] == 'WORD':
                               text += word['Text'] + ' '
                           if word['BlockType'] == 'SELECTION_ELEMENT':
                               if word['SelectionStatus'] == 'SELECTED':
                                   text += 'X '
                       except KeyError:
                           print("Error extracting Table data - {}:".format(KeyError))
   
       return text
   
   
   def get_table_csv_results(blocks):
   
       pprint(blocks)
   
       blocks_map = {}
       table_blocks = []
       for block in blocks:
           blocks_map[block['Id']] = block
           if block['BlockType'] == "TABLE":
               table_blocks.append(block)
   
       if len(table_blocks) <= 0:
           return "<b> NO Table FOUND </b>"
   
       csv = ''
       for index, table in enumerate(table_blocks):
           csv += generate_table_csv(table, blocks_map, index + 1)
           csv += '\n\n'
   
       return csv
   
   
   def generate_table_csv(table_result, blocks_map, table_index):
       rows = get_rows_columns_map(table_result, blocks_map)
   
       table_id = 'Table_' + str(table_index)
   
       # get cells.
       csv = 'Table: {0}\n\n'.format(table_id)
   
       for row_index, cols in rows.items():
   
           for col_index, text in cols.items():
               csv += '{}'.format(text) + ","
           csv += '\n'
   
       csv += '\n\n\n'
       return csv
   
   response_blocks = GetResults(jobId, file_name)
   ```

1. Führen Sie den Code aus.

   Nachdem Sie Ihre Ergebnisse erhalten haben, löschen Sie unbedingt die zugehörigen SNS- und SQS-Ressourcen, sonst können Sie Gebühren für diese anfallen.

------

# Erstellen einesAWS LambdaFunktion
<a name="lambda"></a>

Sie können Amazon Textract Textract-API-Vorgänge von einemAWS LambdaFunktion. Die folgenden Anweisungen zeigen, wie Sie eine Lambda-Funktion in Python erstellen, die aufruft[DetectDocumentText](API_DetectDocumentText.md)aus. Es gibt eine Liste von zurück[Block](API_Block.md)Objekte. Um dieses Beispiel auszuführen, benötigen Sie einen Amazon S3 S3-Bucket, der ein Dokument im PNG- oder JPEG-Format enthält. Verwenden Sie die Konsole, um die Funktion zu erstellen.

Ein Beispiel, das Lambda-Funktionen verwendet, um Dokumente in großem Maßstab zu verarbeiten, finden Sie unter[Dokumentenverarbeitung im großen Maßstab mit Amazon Textract](https://github.com/aws-samples/amazon-textract-serverless-large-scale-document-processing)aus.

## So rufen Sie den DetectDocumentText-Vorgang von einer Lambda-Funktion aus auf:
<a name="lambda-procedure"></a><a name="create-deployment-package"></a>

**Schritt 1: Erstellen eines Lambda-Bereitstellungspakets**

1. Öffnen Sie ein Befehlsfenster.

1. Geben Sie die folgenden Befehle ein, um ein Bereitstellungspaket mit der neuesten Version derAWS-SDK.

   ```
   pip install boto3 --target python/.
   zip boto3-layer.zip -r python/
   ```<a name="create-function"></a>

**Schritt 2: Erstellen einer Lambda-Funktion**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die AWS Lambda-Konsole an [https://console.aws.amazon.com/lambda](https://console.aws.amazon.com/lambda/).

1. Wählen Sie **Create function** (Funktion erstellen).

1. Geben Sie Folgendes an.
   + Wählen Sie **Author from scratch** aus. 
   + Geben Sie als **Function name (Funktionsname)** einen Namen ein.
   + Für**Laufzeit**, wählen**Python 3.7**oder**Python 3.6**aus.
   + Für**Wählen oder erstellen Sie eine Ausführungsrolle**, wählen**Erstellen einer neuen Rolle mit den grundlegenden Lambda-Berechtigungen**aus. 

1. Klicken Sie auf**Create -Funktion**um die Lambda-Funktion zu erstellen.

1. Öffnen Sie die IAM-Konsole unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Wählen Sie im Navigationsbereich**Rollen**aus.

1. Wählen Sie aus der Ressourcenliste die IAM-Rolle aus, die Lambda für Sie erstellt hat. Der Rollenname beginnt mit dem Namen Ihrer Lambda-Funktion.

1. Wählen Sie das Symbol**Berechtigungen**und wählen Sie dann**Richtlinien anfügen**aus.

1. Wählen Sie die AmazonTextractFullAccess- und Amazons3ReadOnlyAccess-Richtlinien aus.

1. Select**Richtlinie anfügen**aus.

Weitere Informationen finden Sie unter[Erstellen einer Lambda-Funktion mit der Konsole](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html)

**Schritt 3: Erstellen und fügen Sie eine -Ebene hinzu**

1. Öffnen Sie die AWS Lambda-Konsole unter [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Wählen Sie im Navigationsbereich **Layers** aus. 

1. Wählen Sie **Create Layer (Ebene erstellen)** aus.

1. Für**Name**Geben Sie einen Namen ein.

1. Geben Sie im Feld **Description (Beschreibung)** eine Beschreibung ein.

1. Für**Codeeingabetyp**, wählen**Hochladen der ZIP-Datei**und wählen Sie aus**Hochladen**aus.

1. Wählen Sie im Dialogfeld die ZIP-Datei (boto3-layer.zip) aus, die Zip, in der Sie erstellt haben[Schritt 1: Erstellen eines Lambda-Bereitstellungspakets](#create-deployment-package)aus.

1. Für**Kompatible Laufzeiten**, wählen Sie die Version der Laufzeit aus, in der Sie ausgewählt haben[Schritt 2: Erstellen einer Lambda-Funktion](#create-function)aus.

1. Klicken Sie auf**Geben Sie einen Namen für den Benutzer ein und klicken Sie dann auf**um den Layer zu erstellen.

1. Wählen Sie das Menüsymbol des Navigationsbereichs.

1. Wählen Sie im Navigationsbereich **Functions** aus.

1. Wählen Sie in der Ressourcenliste die Funktion aus, die Sie in erstellt haben[Schritt 2: Erstellen einer Lambda-Funktion](#create-function)aus. 

1. Klicken Sie auf**Konfiguration**und im**Designer**-Bereich wählen**Ebenen**(unter Ihrem Lambda-Funktionsnamen). 

1. In der**Ebenen**-Bereich wählen**Hinzufügen einer Ebene**aus.

1. Klicken Sie auf**Wählen Sie aus der Liste der Laufzeit-kompatiblen Layer**aus.

1. In :**Kompatible Layer**Wählen Sie den**Name**und**Version**der -Ebene, die Sie in Schritt 3 erstellt haben.

1. Wählen Sie **Add (Hinzufügen)** aus.

**Schritt 4: Fügen Sie der Funktion Python-Code hinzu**

1. In :**Designer**Wählen Sie Ihre Funktion aus.

1. Fügen Sie im Funktionscode-Editor der Datei Folgendes hinzu**lambda\$1function.py**aus. Ändern Sie die Werte von`bucket`und`document`zu deinem Bucket und Dokument.

   ```
   import json
   import boto3
   
   def lambda_handler(event, context):
   
       bucket="bucket"
       document="document"
       client = boto3.client('textract')
   
   
   
       #process using S3 object
       response = client.detect_document_text(
           Document={'S3Object': {'Bucket': bucket, 'Name': document}})
   
       #Get the text blocks
       blocks=response['Blocks']
       
       return {
           'statusCode': 200,
           'body': json.dumps(blocks)
       }
   ```

1. Klicken Sie auf**Save**um Ihre Lambda-Funktion zu speichern.

**Schritt 5: Testen Sie Ihr Lambda**

1. Select**Test**aus.

1. Geben Sie einen Wert für ein**Event name (Ereignisname)**aus.

1. Wählen Sie **Create** (Erstellen) aus.

1. Die Ausgabe, eine Liste von[Block](API_Block.md)-Objekte werden im Bereich Ausführungsergebnisse angezeigt.

Wenn das SymbolAWS Lambdagibt einen Timeout-Fehler zurück, ein Amazon Textract Textract-API-Betriebsaufruf könnte die Ursache sein. Weitere Informationen über die Verlängerung des Timout-Zeitraums für eineAWS Lambda-Funktion, siehe[AWS Lambda-Funktionskonfiguration](https://docs.aws.amazon.com/lambda/latest/dg/resource-model.html)aus.

Weitere Informationen zum Aufrufen einer Lambda-Funktion aus Ihrem Code finden Sie unter[AufrufenAWS LambdaFunktionen](https://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-functions.html)aus. 

# Weitere Codebeispiele
<a name="other-examples"></a>

Die folgenden Tabelle enthält Links zu weiteren Codebeispielen für Amazon Textract.


| Beispiel | Beschreibung | 
| --- | --- | 
|  [Beispiele für Amazon Textract Codebeispiele](https://github.com/aws-samples/amazon-textract-code-samples)  |  Zeigen Sie verschiedene Möglichkeiten auf, wie Sie Amazon Textract verwenden können.  | 
|  [Dokumentenverarbeitung im großen Maßstab mit Amazon Textract](https://github.com/aws-samples/amazon-textract-serverless-large-scale-document-processing)  |  Zeigt eine serverlose Referenzarchitektur an, die Dokumente in großem Maßstab verarbeitet.  | 
|  [Amazon Textract Parser](https://github.com/aws-samples/amazon-textract-response-parser)  |  Zeigt, wie das analysiert wird[Block](API_Block.md)Objekte, die von Amazon Textract Textract-Operationen zurückgegeben werden.  | 
|  [Beispiele für Amazon Textract Textract-Dokumentationscode](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/python/example_code/textract)  |  In diesem Handbuch verwendete Codebeispiele.  | 
|  [Textraktor](https://github.com/aws-samples/amazon-textract-textractor)  |  Zeigt, wie die Amazon Textract Textract-Ausgabe in mehrere Formate konvertiert wird.  | 
|  [Generieren Sie durchsuchbare PDF-Dokumente mit Amazon Textract](https://github.com/aws-samples/amazon-textract-searchable-pdf)  |  Zeigt, wie ein durchsuchbares PDF-Dokument aus verschiedenen Arten von Eingabedokumenten wie Bildern im JPG/PNG-Format und gescannten PDF-Dokumenten erstellt wird.  | 