View a markdown version of this page

Key-Value Paare aus einem Formulardokument extrahieren - 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.

Key-Value Paare aus einem Formulardokument extrahieren

Das folgende Python-Beispiel zeigt, wie Schlüssel-Wert-Paare in Formulardokumenten aus Blockobjekten extrahiert werden, die in einer Map gespeichert sind. Blockobjekte werden bei einem Aufruf von zurückgegeben. AnalyzeDocument Weitere Informationen finden Sie unter Formulardaten (Key-Value Paare).

Sie verwenden die folgenden Funktionen:

  • get_kv_map— Ruft AnalyzeDocumentdie BLOCK-Objekte KEY und VALUE auf und speichert sie in einer Map.

  • get_kv_relationshipund find_value_block — Konstruiert die Schlüssel-Wert-Beziehungen aus der Map.

Um Schlüssel-Wert-Paare aus einem Formulardokument zu extrahieren
  1. Konfigurieren Sie Ihre Umgebung. Weitere Informationen finden Sie unter Voraussetzungen.

  2. Speichern Sie den folgenden Beispielcode in einer Datei mit dem Namen textract_python_kv_parser.py. Ersetzen Sie in der Funktion get_kv_map profile-name durch den Namen eines Profils, das die Rolle übernehmen kann, und region durch die Region, in der Sie den Code ausführen möchten.

    import boto3 import sys import re import json from collections import defaultdict 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 session = boto3.Session(profile_name='profile-name') client = session.client('textract', region_name='region') 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 = defaultdict(list) 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].append(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)
  3. Geben Sie in der Befehlszeile den folgenden Befehl ein. fileErsetzen Sie es durch die Dokumentbilddatei, die Sie analysieren möchten.

    python textract_python_kv_parser.py file
  4. Wenn Sie dazu aufgefordert werden, geben Sie einen Schlüssel ein, der sich im Eingabedokument befindet. Wenn der Code den Schlüssel erkennt, wird der Wert des Schlüssels angezeigt.