Klientská knihovna Azure Rozpoznávání formulářů pro Python – verze 3.0.0
Azure Cognitive Services Rozpoznávání formulářů je cloudová služba, která pomocí strojového učení rozpoznává textová a tabulková data z formulářových dokumentů. Zahrnuje následující hlavní funkce:
- Vlastní modely – Rozpoznávají hodnoty polí a data tabulky z formulářů. Tyto modely se trénují s vlastními daty, takže jsou přizpůsobené vašim formulářům.
- Rozhraní CONTENT API – Rozpozná z dokumentů textové struktury a struktury tabulek spolu se souřadnicemi ohraničujícího rámečku. Odpovídá rozhraní LAYOUT API služby REST.
- Předem vytvořený model účtenky – Rozpozná data z prodejních dokladů USA pomocí předem vytvořeného modelu.
Zdrojový kód | Balíček (PyPI) | Referenční dokumentace k| rozhraní API Dokumentace k | produktu Vzorky
Začínáme
Požadavky
- K použití tohoto balíčku se vyžaduje Python 2.7 nebo 3.5 nebo novější.
- Abyste mohli tento balíček používat, musíte mít předplatné Azure a službu Cognitive Services nebo prostředek Rozpoznávání formulářů.
Instalace balíčku
Nainstalujte klientskou knihovnu Azure Rozpoznávání formulářů pro Python verze 3.0.0 pomocí příkazu pip:
pip install azure-ai-formrecognizer
Poznámka: Tato verze klientské knihovny podporuje verzi v2.0 služby Rozpoznávání formulářů.
Vytvoření prostředku Rozpoznávání formulářů
Rozpoznávání formulářů podporuje přístup s více službami i s jednou službou. Pokud plánujete přístup k více kognitivním službám v rámci jednoho koncového bodu nebo klíče, vytvořte prostředek Cognitive Services. Pouze pro Rozpoznávání formulářů přístup vytvořte prostředek Rozpoznávání formulářů.
Prostředek můžete vytvořit pomocí příkazu
Možnost 1:Azure Portal
Možnost 2:Azure CLI Níže je příklad vytvoření prostředku Rozpoznávání formulářů pomocí rozhraní příkazového řádku:
# Create a new resource group to hold the form recognizer resource -
# if using an existing resource group, skip this step
az group create --name my-resource-group --location westus2
# Create form recognizer
az cognitiveservices account create \
--name form-recognizer-resource \
--resource-group my-resource-group \
--kind FormRecognizer \
--sku F0 \
--location westus2 \
--yes
Ověření klienta
Pokud chcete pracovat se službou Rozpoznávání formulářů, budete muset vytvořit instanci klienta. K vytvoření instance objektu klienta jsou nezbytné koncové body a přihlašovací údaje .
Vyhledání koncového bodu
Koncový bod pro prostředek Rozpoznávání formulářů můžete najít pomocí webu Azure Portal nebo Azure CLI:
# Get the endpoint for the form recognizer resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "endpoint"
Získání klíče rozhraní API
Klíč rozhraní API najdete na webu Azure Portal nebo spuštěním následujícího příkazu Azure CLI:
az cognitiveservices account keys list --name "resource-name" --resource-group "resource-group-name"
Vytvoření klienta pomocí AzureKeyCredential
Pokud chcete jako credential
parametr použít klíč rozhraní API, předejte klíč jako řetězec do instance AzureKeyCredential.
from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import FormRecognizerClient
endpoint = "https://<region>.api.cognitive.microsoft.com/"
credential = AzureKeyCredential("<api_key>")
form_recognizer_client = FormRecognizerClient(endpoint, credential)
Vytvoření klienta s přihlašovacími údaji Azure Active Directory
AzureKeyCredential
Ověřování se používá v příkladech v této příručce Začínáme, ale můžete se také ověřit v Azure Active Directory pomocí knihovny azure-identity .
Upozorňujeme, že regionální koncové body nepodporují ověřování AAD. Vytvořte pro svůj prostředek vlastní název subdomény , abyste mohli tento typ ověřování používat.
Pokud chcete použít níže uvedený typ DefaultAzureCredential nebo jiné typy přihlašovacích údajů poskytované se sadou Azure SDK, nainstalujte azure-identity
balíček :
pip install azure-identity
Budete také muset zaregistrovat novou aplikaci AAD a udělit přístup k Rozpoznávání formulářů přiřazením role k instančnímu objektu"Cognitive Services User"
.
Po dokončení nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
.
from azure.identity import DefaultAzureCredential
from azure.ai.formrecognizer import FormRecognizerClient
credential = DefaultAzureCredential()
form_recognizer_client = FormRecognizerClient(
endpoint="https://<my-custom-subdomain>.cognitiveservices.azure.com/",
credential=credential
)
Klíčové koncepty
FormRecognizerClient
FormRecognizerClient
poskytuje operace pro:
- Rozpoznávání polí a obsahu formuláře pomocí vlastních modelů vytrénovaných tak, aby rozpoznaly vaše vlastní formuláře. Tyto hodnoty jsou vráceny v kolekci
RecognizedForm
objektů. - Rozpoznávání běžných polí z účtenek USA pomocí předem natrénovaného modelu účtenek Tato pole a metadata jsou vrácena v kolekci
RecognizedForm
objektů. - Rozpoznávání obsahu formuláře, včetně tabulek, řádků a slov, bez nutnosti trénování modelu Obsah formuláře je vrácen v kolekci
FormPage
objektů.
Ukázkové fragmenty kódu jsou k dispozici pro ilustraci použití FormRecognizerClient .
FormTrainingClient
FormTrainingClient
poskytuje operace pro:
- Trénování vlastních modelů bez popisků k rozpoznávání všech polí a hodnot nalezených ve vlastních formulářích Vrátí se hodnota označující
CustomFormModel
typy formulářů, které model rozpozná, a pole, která bude extrahovat pro každý typ formuláře. Podrobnější vysvětlení najdete v dokumentaci ke službě . - Trénování vlastních modelů pomocí popisků k rozpoznávání konkrétních polí a hodnot, které zadáte popisky vlastních formulářů. Vrátí
CustomFormModel
se hodnota označující pole, která bude model extrahovat, a také odhadovanou přesnost jednotlivých polí. Podrobnější vysvětlení najdete v dokumentaci ke službě . - Správa modelů vytvořených ve vašem účtu
- Kopírování vlastního modelu z jednoho prostředku Rozpoznávání formulářů do jiného.
Mějte na paměti, že modely lze také vytrénovat pomocí grafického uživatelského rozhraní, jako je Rozpoznávání formulářů Labeling Tool.
Ukázkové fragmenty kódu jsou k dispozici pro ilustraci použití třídy FormTrainingClient .
operace Long-Running
Dlouhotrvající operace jsou operace, které se skládají z počátečního požadavku odeslaného službě na spuštění operace, po kterém následuje dotazování služby v intervalech, aby se zjistilo, jestli se operace dokončila nebo selhala, a jestli byla úspěšná, aby získala výsledek.
Metody, které trénují modely, rozpoznávají hodnoty z formulářů nebo kopírují modely, se modelují jako dlouhotrvající operace.
Klient zveřejňuje metodu begin_<method-name>
, která vrací LROPoller
nebo AsyncLROPoller
. Volající by měli počkat na dokončení operace voláním result()
na poller objekt vrácený metodou begin_<method-name>
.
Ukázkové fragmenty kódu jsou k dispozici pro ilustraci použití dlouhotrvajících operací jsou uvedené níže.
Příklady
Následující část obsahuje několik fragmentů kódu, které pokrývají některé nejběžnější úlohy Rozpoznávání formulářů, mezi které patří:
- Rozpoznávání formulářů pomocí vlastního modelu
- Rozpoznávání obsahu
- Recognize Receipts
- Trénování modelu
- Správa modelů
Rozpoznávání formulářů pomocí vlastního modelu
Rozpoznávat páry název/hodnota a data tabulky z formulářů. Tyto modely se trénují s vlastními daty, takže jsou přizpůsobené vašim formulářům. Nejlepších výsledků dosáhnete, když rozpoznáte pouze formuláře stejného typu, na který byl vlastní model trénován.
from azure.ai.formrecognizer import FormRecognizerClient
from azure.core.credentials import AzureKeyCredential
endpoint = "https://<region>.api.cognitive.microsoft.com/"
credential = AzureKeyCredential("<api_key>")
form_recognizer_client = FormRecognizerClient(endpoint, credential)
model_id = "<your custom model id>"
with open("<path to your form>", "rb") as fd:
form = fd.read()
poller = form_recognizer_client.begin_recognize_custom_forms(model_id=model_id, form=form)
result = poller.result()
for recognized_form in result:
print("Form type: {}".format(recognized_form.form_type))
for name, field in recognized_form.fields.items():
print("Field '{}' has label '{}' with value '{}' and a confidence score of {}".format(
name,
field.label_data.text if field.label_data else name,
field.value,
field.confidence
))
Alternativně lze k rozpoznávání vlastních formulářů použít také adresu URL formuláře pomocí metody .begin_recognize_custom_forms_from_url
Metody _from_url
existují pro všechny metody rozpoznávání.
form_url = "<url_of_the_form>"
poller = form_recognizer_client.begin_recognize_custom_forms_from_url(model_id=model_id, form_url=form_url)
result = poller.result()
Rozpoznávání obsahu
Rozpoznávání textových a tabulkových struktur spolu se souřadnicemi ohraničujícího rámečku v dokumentech
from azure.ai.formrecognizer import FormRecognizerClient
from azure.core.credentials import AzureKeyCredential
endpoint = "https://<region>.api.cognitive.microsoft.com/"
credential = AzureKeyCredential("<api_key>")
form_recognizer_client = FormRecognizerClient(endpoint, credential)
with open("<path to your form>", "rb") as fd:
form = fd.read()
poller = form_recognizer_client.begin_recognize_content(form)
page = poller.result()
table = page[0].tables[0] # page 1, table 1
print("Table found on page {}:".format(table.page_number))
for cell in table.cells:
print("Cell text: {}".format(cell.text))
print("Location: {}".format(cell.bounding_box))
print("Confidence score: {}\n".format(cell.confidence))
Recognize Receipts
Rozpoznávání dat z prodejních dokladů USA pomocí předem připraveného modelu Pole účtenky rozpoznaná službou najdete tady.
from azure.ai.formrecognizer import FormRecognizerClient
from azure.core.credentials import AzureKeyCredential
endpoint = "https://<region>.api.cognitive.microsoft.com/"
credential = AzureKeyCredential("<api_key>")
form_recognizer_client = FormRecognizerClient(endpoint, credential)
with open("<path to your receipt>", "rb") as fd:
receipt = fd.read()
poller = form_recognizer_client.begin_recognize_receipts(receipt)
result = poller.result()
for receipt in result:
for name, field in receipt.fields.items():
if name == "Items":
print("Receipt Items:")
for idx, items in enumerate(field.value):
print("...Item #{}".format(idx+1))
for item_name, item in items.value.items():
print("......{}: {} has confidence {}".format(item_name, item.value, item.confidence))
else:
print("{}: {} has confidence {}".format(name, field.value, field.confidence))
Učení modelu
Trénování vlastního modelu na vlastním typu formuláře Výsledný model lze použít k rozpoznávání hodnot z typů formulářů, na které byl natrénován. Zadejte adresu URL SAS kontejneru pro kontejner Azure Storage Blob, do kterého ukládáte trénovací dokumenty. Pokud se trénovací soubory nacházejí v podsložce kontejneru, použijte argument předpony klíčového slova a určete, ve které složce se má trénovat.
Další podrobnosti o nastavení kontejneru a požadované struktury souborů najdete v dokumentaci ke službě.
from azure.ai.formrecognizer import FormTrainingClient
from azure.core.credentials import AzureKeyCredential
endpoint = "https://<region>.api.cognitive.microsoft.com/"
credential = AzureKeyCredential("<api_key>")
form_training_client = FormTrainingClient(endpoint, credential)
container_sas_url = "<container-sas-url>" # training documents uploaded to blob storage
poller = form_training_client.begin_training(
container_sas_url, use_training_labels=False
)
model = poller.result()
# Custom model information
print("Model ID: {}".format(model.model_id))
print("Status: {}".format(model.status))
print("Training started on: {}".format(model.training_started_on))
print("Training completed on: {}".format(model.training_completed_on))
print("\nRecognized fields:")
for submodel in model.submodels:
print(
"The submodel with form type '{}' has recognized the following fields: {}".format(
submodel.form_type,
", ".join(
[
field.label if field.label else name
for name, field in submodel.fields.items()
]
),
)
)
# Training result information
for doc in model.training_documents:
print("Document name: {}".format(doc.name))
print("Document status: {}".format(doc.status))
print("Document page count: {}".format(doc.page_count))
print("Document errors: {}".format(doc.errors))
Správa modelů
Spravujte vlastní modely připojené k vašemu účtu.
from azure.ai.formrecognizer import FormTrainingClient
from azure.core.credentials import AzureKeyCredential
from azure.core.exceptions import ResourceNotFoundError
endpoint = "https://<region>.api.cognitive.microsoft.com/"
credential = AzureKeyCredential("<api_key>")
form_training_client = FormTrainingClient(endpoint, credential)
account_properties = form_training_client.get_account_properties()
print("Our account has {} custom models, and we can have at most {} custom models".format(
account_properties.custom_model_count, account_properties.custom_model_limit
))
# Here we get a paged list of all of our custom models
custom_models = form_training_client.list_custom_models()
print("We have models with the following ids: {}".format(
", ".join([m.model_id for m in custom_models])
))
# Replace with the custom model ID from the "Train a model" sample
model_id = "<model_id from the Train a Model sample>"
custom_model = form_training_client.get_custom_model(model_id=model_id)
print("Model ID: {}".format(custom_model.model_id))
print("Status: {}".format(custom_model.status))
print("Training started on: {}".format(custom_model.training_started_on))
print("Training completed on: {}".format(custom_model.training_completed_on))
# Finally, we will delete this model by ID
form_training_client.delete_model(model_id=custom_model.model_id)
try:
form_training_client.get_custom_model(model_id=custom_model.model_id)
except ResourceNotFoundError:
print("Successfully deleted model with id {}".format(custom_model.model_id))
Poradce při potížích
Obecné
Rozpoznávání formulářů klientská knihovna vyvolá výjimky definované v Azure Core.
protokolování
Tato knihovna používá k protokolování standardní knihovnu protokolování . Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na úrovni INFO.
Podrobné protokolování úrovně DEBUG, včetně těl požadavků/odpovědí a nezopravovaných hlaviček, je možné povolit v klientovi s argumentem klíčového logging_enable
slova:
import sys
import logging
from azure.ai.formrecognizer import FormRecognizerClient
from azure.core.credentials import AzureKeyCredential
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
credential = AzureKeyCredential("<api_key>")
# This client will log detailed information about its HTTP sessions, at DEBUG level
form_recognizer_client = FormRecognizerClient(endpoint, credential, logging_enable=True)
Podobně logging_enable
může povolit podrobné protokolování pro jednu operaci, i když není povolené pro klienta:
poller = form_recognizer_client.begin_recognize_receipts(receipt, logging_enable=True)
Volitelná konfigurace
Volitelné argumenty klíčových slov lze předat na úrovni klienta a pro jednotlivé operace. Referenční dokumentace azure-core popisuje dostupné konfigurace pro opakování, protokolování, přenosové protokoly a další.
Další kroky
Následující část obsahuje několik fragmentů kódu, které ilustrují běžné vzory používané v rozhraní Rozpoznávání formulářů Python API.
Další vzorový kód
Tyto ukázky kódu ukazují běžné scénáře operací s klientskou knihovnou Azure Rozpoznávání formulářů.
- Ověřování klientů: sample_authentication.py
- Rozpoznávání potvrzení: sample_recognize_receipts.py
- Rozpoznávání potvrzení z adresy URL: sample_recognize_receipts_from_url.py
- Rozpoznávání obsahu: sample_recognize_content.py
- Rozpoznávání vlastních formulářů: sample_recognize_custom_forms.py
- Trénování modelu bez popisků: sample_train_model_without_labels.py
- Trénování modelu s popisky: sample_train_model_with_labels.py
- Správa vlastních modelů: sample_manage_custom_models.py
- Kopírování modelu mezi Rozpoznávání formulářů prostředky: sample_copy_model.py
Asynchronní rozhraní API
Tato knihovna také obsahuje kompletní asynchronní rozhraní API podporované v Pythonu 3.5 nebo novějším. Abyste ho mohli používat, musíte nejdřív nainstalovat asynchronní přenos, například aiohttp. Asynchronní klienti se nacházejí v oboru azure.ai.formrecognizer.aio
názvů .
- Ověřování klientů: sample_authentication_async.py
- Rozpoznávání potvrzení: sample_recognize_receipts_async.py
- Rozpoznávání potvrzení z adresy URL: sample_recognize_receipts_from_url_async.py
- Rozpoznávání obsahu: sample_recognize_content_async.py
- Rozpoznávání vlastních formulářů: sample_recognize_custom_forms_async.py
- Trénování modelu bez popisků: sample_train_model_without_labels_async.py
- Trénování modelu s popisky: sample_train_model_with_labels_async.py
- Správa vlastních modelů: sample_manage_custom_models_async.py
- Kopírování modelu mezi Rozpoznávání formulářů prostředky: sample_copy_model_async.py
Další dokumentace
Podrobnější dokumentaci ke službě Azure Cognitive Services Rozpoznávání formulářů najdete v dokumentaci k Rozpoznávání formulářů docs.microsoft.com.
Přispívání
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete v cla.microsoft.com.
Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo kontaktujte s opencode@microsoft.com případnými dalšími dotazy nebo připomínkami.
Azure SDK for Python