

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.

# 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\_python\_kv\_parser.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. 