Клиентская библиотека Azure Распознаватель документов для Python версии 3.3.2

Аналитика документов Azure (ранее известная как Распознаватель документов) — это облачная служба, которая использует машинное обучение для анализа текста и структурированных данных из документов. Он включает следующие main функции:

  • Макет — извлечение содержимого и структуры (например, слов, меток выделения, таблиц) из документов.
  • Документ — анализ пар "ключ-значение" в дополнение к общему макету из документов.
  • Чтение — чтение сведений о страницах из документов.
  • Предварительно созданная . Извлечение общих значений полей из некоторых типов документов (например, квитанций, счетов, визитных карточек, документов, удостоверений личности, налоговых документов W-2 США и т. д.) с помощью предварительно созданных моделей.
  • Пользовательский — создание пользовательских моделей на основе собственных данных для извлечения настраиваемых значений полей в дополнение к общему макету из документов.
  • Классификаторы. Создавайте пользовательские модели классификации, сочетающие функции макета и языка для точного обнаружения и идентификации документов, обрабатываемых в приложении.
  • Дополнительные возможности. Извлечение штрихкодов, QR-кодов, формул, шрифтов и стилей и т. д. или включение режима высокого разрешения для больших документов с необязательными параметрами.

Исходный код | Пакет (PyPI) | Пакет (Conda) | Справочная документация по | APIДокументация по продукту | Образцы

Начало работы

Предварительные требования

Установка пакета

Установите клиентную библиотеку Azure Распознаватель документов для Python с помощью pip:

pip install azure-ai-formrecognizer

Примечание. Эта версия клиентской библиотеки по умолчанию использует 2023-07-31 версию службы.

В этой таблице показано отношение между версиями пакета SDK и поддерживаемыми версиями API службы:

Версия пакета SDK Поддерживаемая версия API службы
3.3.X — последний общедоступный выпуск 2.0, 2.1, 2022-08-31, 2023-07-31 (по умолчанию)
3.2.X 2.0, 2.1, 2022-08-31 (по умолчанию)
3.1.X 2.0, 2.1 (по умолчанию)
3.0.0 2,0

Примечание. Начиная с версии 3.2.Xпоявился новый набор клиентов для использования новейших функций службы аналитики документов. Подробные инструкции по обновлению кода приложения с версии 3.1.X клиентской библиотеки или ниже до последней версии см. в руководстве по миграции. Кроме того, дополнительные сведения см. в журнале изменений . В приведенной ниже таблице описаны отношения каждого клиента и поддерживаемых версий API:

Версия API Поддерживаемые клиенты
2023-07-31 DocumentAnalysisClient и DocumentModelAdministrationClient
2022-08-31 DocumentAnalysisClient и DocumentModelAdministrationClient
2.1 FormRecognizerClient и FormTrainingClient
2,0 FormRecognizerClient и FormTrainingClient

Создание ресурса Cognitive Services или Распознаватель документов

Аналитика документов поддерживает доступ как с несколькими службами, так и с одной службой. Создайте ресурс Cognitive Services, если планируете осуществлять доступ к нескольким службам с помощью одной конечной точки или ключа. Для доступа только к аналитике документов создайте Распознаватель документов ресурс. Обратите внимание, что вам потребуется ресурс с одной службой, если вы планируете использовать проверку подлинности Azure Active Directory.

Вы можете создать любой ресурс с помощью:

Ниже приведен пример создания ресурса Распознаватель документов с помощью интерфейса командной строки:

# Create a new resource group to hold the Form Recognizer resource
# if using an existing resource group, skip this step
az group create --name <your-resource-name> --location <location>
# Create form recognizer
az cognitiveservices account create \
    --name <your-resource-name> \
    --resource-group <your-resource-group-name> \
    --kind FormRecognizer \
    --sku <sku> \
    --location <location> \
    --yes

Дополнительные сведения о создании ресурса или получении сведений о расположении и номере SKU см. здесь.

Аутентификация клиента

Чтобы взаимодействовать со службой аналитики документов, необходимо создать экземпляр клиента. Для создания экземпляра клиентского объекта необходимы конечная точка и учетные данные .

Получение конечной точки

Вы можете найти конечную точку для ресурса Распознаватель документов с помощью портала Azure или Azure CLI:

# Get the endpoint for the Form Recognizer resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint"

Для проверки подлинности можно использовать либо региональную конечную точку, либо пользовательский поддомен. Они имеют следующий формат:

Regional endpoint: https://<region>.api.cognitive.microsoft.com/
Custom subdomain: https://<resource-name>.cognitiveservices.azure.com/

Региональная конечная точка одинакова для каждого ресурса в регионе. Полный список поддерживаемых региональных конечных точек можно найти здесь. Обратите внимание, что региональные конечные точки не поддерживают проверку подлинности AAD.

С другой стороны, пользовательский поддомен — это имя, уникальное для Распознаватель документов ресурса. Они могут использоваться только ресурсами с одной службой.

Получение ключа API

Ключ API можно найти на портале Azure или с помощью следующей команды Azure CLI:

az cognitiveservices account keys list --name "<resource-name>" --resource-group "<resource-group-name>"

Создание клиента с помощью AzureKeyCredential

Чтобы использовать ключ API в credential качестве параметра, передайте ключ в виде строки в экземпляр AzureKeyCredential.

from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import DocumentAnalysisClient

endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
credential = AzureKeyCredential("<api_key>")
document_analysis_client = DocumentAnalysisClient(endpoint, credential)

Создание клиента с учетными данными Azure Active Directory

AzureKeyCredential Проверка подлинности используется в примерах в этом руководстве по началу работы, но вы также можете пройти проверку подлинности в Azure Active Directory с помощью библиотеки azure-identity . Обратите внимание, что региональные конечные точки не поддерживают проверку подлинности AAD. Создайте пользовательское имя поддомена для ресурса, чтобы использовать этот тип проверки подлинности.

Чтобы использовать тип DefaultAzureCredential, показанный ниже, или другие типы учетных данных, предоставляемые пакетом azure-identity SDK для Azure, установите пакет :

pip install azure-identity

Вам также потребуется зарегистрировать новое приложение AAD и предоставить доступ к аналитике документов, назначив "Cognitive Services User" роль субъекту-службе.

После завершения задайте значения идентификатора клиента, идентификатора клиента и секрета клиента приложения AAD в качестве переменных среды: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.

"""DefaultAzureCredential will use the values from these environment
variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
"""
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["AZURE_FORM_RECOGNIZER_ENDPOINT"]
credential = DefaultAzureCredential()

document_analysis_client = DocumentAnalysisClient(endpoint, credential)

Основные понятия

DocumentAnalysisClient

DocumentAnalysisClient предоставляет операции для анализа входных документов с помощью предварительно созданных и пользовательских моделей с помощью begin_analyze_document API и begin_analyze_document_from_url . Используйте параметр , model_id чтобы выбрать тип модели для анализа. Полный список поддерживаемых моделей см. здесь. Также DocumentAnalysisClient предоставляет операции для классификации документов с помощью begin_classify_document API и begin_classify_document_from_url . Пользовательские модели классификации могут классифицировать каждую страницу входного файла для идентификации документов внутри, а также определить несколько документов или несколько экземпляров одного документа во входном файле.

Примеры фрагментов кода приведены для демонстрации с помощью DocumentAnalysisClient. Дополнительные сведения об анализе документов, включая поддерживаемые функции, языковые стандарты и типы документов, см. в документации по службе.

DocumentModelAdministrationClient

DocumentModelAdministrationClient предоставляет операции для перечисленных ниже целей.

  • Создание пользовательских моделей для анализа определенных полей, заданных путем добавления меток к пользовательским документам. Возвращается значение типа DocumentModelDetails , указывающее типы документов, которые может анализировать модель, а также предполагаемую достоверность для каждого поля. Более подробное описание см. в документации по службам .
  • Создание составной модели из коллекции существующих моделей.
  • Управление моделями, созданными в учетной записи.
  • Перечисление операций или получение определенной операции модели, созданной за последние 24 часа.
  • Копирование настраиваемой модели из одного ресурса Распознавателя документов в другой.
  • Создайте пользовательскую модель классификации и управляйте ею, чтобы классифицировать документы, обрабатываемые в приложении.

Обратите внимание, что модели также можно создавать с помощью графического пользовательского интерфейса, например Document Intelligence Studio.

Примеры фрагментов кода предоставляются для демонстрации с помощью DocumentModelAdministrationClient здесь.

Длительные операции

Длительные операции — это операции, которые состоят из первоначального запроса, отправленного службе для запуска операции, с последующим опрашиванием службы через интервалы времени, чтобы определить, была ли операция завершена или завершилась сбоем, и, если она была успешной, для получения результата.

Методы, которые анализируют документы, модели сборки или модели копирования и создания, моделируются как длительные операции. Клиент предоставляет метод, возвращающий begin_<method-name>LROPoller или AsyncLROPoller. Вызывающие объекты должны дождаться завершения операции путем вызова result() в объекте опроса, возвращенном методом begin_<method-name> . Примеры фрагментов кода приведены для демонстрации использования длительных операций ниже.

Примеры

В следующем разделе представлено несколько фрагментов кода, охватывающих некоторые из наиболее распространенных задач аналитики документов, в том числе:

Извлечение макета

Извлечение текста, меток выделения, стилей текста и структур таблиц вместе с координатами ограничивающей области из документов.

from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import DocumentAnalysisClient

endpoint = os.environ["AZURE_FORM_RECOGNIZER_ENDPOINT"]
key = os.environ["AZURE_FORM_RECOGNIZER_KEY"]

document_analysis_client = DocumentAnalysisClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)
with open(path_to_sample_documents, "rb") as f:
    poller = document_analysis_client.begin_analyze_document(
        "prebuilt-layout", document=f
    )
result = poller.result()

for idx, style in enumerate(result.styles):
    print(
        "Document contains {} content".format(
            "handwritten" if style.is_handwritten else "no handwritten"
        )
    )

for page in result.pages:
    print("----Analyzing layout from page #{}----".format(page.page_number))
    print(
        "Page has width: {} and height: {}, measured with unit: {}".format(
            page.width, page.height, page.unit
        )
    )

    for line_idx, line in enumerate(page.lines):
        words = line.get_words()
        print(
            "...Line # {} has word count {} and text '{}' within bounding polygon '{}'".format(
                line_idx,
                len(words),
                line.content,
                line.polygon,
            )
        )

        for word in words:
            print(
                "......Word '{}' has a confidence of {}".format(
                    word.content, word.confidence
                )
            )

    for selection_mark in page.selection_marks:
        print(
            "...Selection mark is '{}' within bounding polygon '{}' and has a confidence of {}".format(
                selection_mark.state,
                selection_mark.polygon,
                selection_mark.confidence,
            )
        )

for table_idx, table in enumerate(result.tables):
    print(
        "Table # {} has {} rows and {} columns".format(
            table_idx, table.row_count, table.column_count
        )
    )
    for region in table.bounding_regions:
        print(
            "Table # {} location on page: {} is {}".format(
                table_idx,
                region.page_number,
                region.polygon,
            )
        )
    for cell in table.cells:
        print(
            "...Cell[{}][{}] has content '{}'".format(
                cell.row_index,
                cell.column_index,
                cell.content,
            )
        )
        for region in cell.bounding_regions:
            print(
                "...content on page {} is within bounding polygon '{}'".format(
                    region.page_number,
                    region.polygon,
                )
            )

print("----------------------------------------")

Использование общей модели документа

Анализ пар "ключ-значение", таблиц, стилей и меток выбора из документов с помощью общей модели документов, предоставляемой службой аналитики документов. Выберите общую модель документа, передав model_id="prebuilt-document" в begin_analyze_document метод :

from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import DocumentAnalysisClient

endpoint = os.environ["AZURE_FORM_RECOGNIZER_ENDPOINT"]
key = os.environ["AZURE_FORM_RECOGNIZER_KEY"]

document_analysis_client = DocumentAnalysisClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)
with open(path_to_sample_documents, "rb") as f:
    poller = document_analysis_client.begin_analyze_document(
        "prebuilt-document", document=f
    )
result = poller.result()

for style in result.styles:
    if style.is_handwritten:
        print("Document contains handwritten content: ")
        print(",".join([result.content[span.offset:span.offset + span.length] for span in style.spans]))

print("----Key-value pairs found in document----")
for kv_pair in result.key_value_pairs:
    if kv_pair.key:
        print(
                "Key '{}' found within '{}' bounding regions".format(
                    kv_pair.key.content,
                    kv_pair.key.bounding_regions,
                )
            )
    if kv_pair.value:
        print(
                "Value '{}' found within '{}' bounding regions\n".format(
                    kv_pair.value.content,
                    kv_pair.value.bounding_regions,
                )
            )

for page in result.pages:
    print("----Analyzing document from page #{}----".format(page.page_number))
    print(
        "Page has width: {} and height: {}, measured with unit: {}".format(
            page.width, page.height, page.unit
        )
    )

    for line_idx, line in enumerate(page.lines):
        words = line.get_words()
        print(
            "...Line # {} has {} words and text '{}' within bounding polygon '{}'".format(
                line_idx,
                len(words),
                line.content,
                line.polygon,
            )
        )

        for word in words:
            print(
                "......Word '{}' has a confidence of {}".format(
                    word.content, word.confidence
                )
            )

    for selection_mark in page.selection_marks:
        print(
            "...Selection mark is '{}' within bounding polygon '{}' and has a confidence of {}".format(
                selection_mark.state,
                selection_mark.polygon,
                selection_mark.confidence,
            )
        )

for table_idx, table in enumerate(result.tables):
    print(
        "Table # {} has {} rows and {} columns".format(
            table_idx, table.row_count, table.column_count
        )
    )
    for region in table.bounding_regions:
        print(
            "Table # {} location on page: {} is {}".format(
                table_idx,
                region.page_number,
                region.polygon,
            )
        )
    for cell in table.cells:
        print(
            "...Cell[{}][{}] has content '{}'".format(
                cell.row_index,
                cell.column_index,
                cell.content,
            )
        )
        for region in cell.bounding_regions:
            print(
                "...content on page {} is within bounding polygon '{}'\n".format(
                    region.page_number,
                    region.polygon,
                )
            )
print("----------------------------------------")
  • Дополнительные сведения о функциях, предоставляемых моделью, prebuilt-documentсм. здесь.

Использование предварительно созданных моделей

Извлекайте поля из документов некоторых типов, таких как квитанции, счета, визитные карточки, документы, удостоверяющие личность, и налоговые документы U.S. W-2, с помощью готовых моделей, предоставляемых службой аналитики документов.

Например, чтобы проанализировать поля из квитанции о продажах, используйте предварительно созданную модель квитанции, предоставляемую путем передачи model_id="prebuilt-receipt"begin_analyze_document в метод :

from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import DocumentAnalysisClient

endpoint = os.environ["AZURE_FORM_RECOGNIZER_ENDPOINT"]
key = os.environ["AZURE_FORM_RECOGNIZER_KEY"]

document_analysis_client = DocumentAnalysisClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)
with open(path_to_sample_documents, "rb") as f:
    poller = document_analysis_client.begin_analyze_document(
        "prebuilt-receipt", document=f, locale="en-US"
    )
receipts = poller.result()

for idx, receipt in enumerate(receipts.documents):
    print(f"--------Analysis of receipt #{idx + 1}--------")
    print(f"Receipt type: {receipt.doc_type if receipt.doc_type else 'N/A'}")
    merchant_name = receipt.fields.get("MerchantName")
    if merchant_name:
        print(
            f"Merchant Name: {merchant_name.value} has confidence: "
            f"{merchant_name.confidence}"
        )
    transaction_date = receipt.fields.get("TransactionDate")
    if transaction_date:
        print(
            f"Transaction Date: {transaction_date.value} has confidence: "
            f"{transaction_date.confidence}"
        )
    if receipt.fields.get("Items"):
        print("Receipt items:")
        for idx, item in enumerate(receipt.fields.get("Items").value):
            print(f"...Item #{idx + 1}")
            item_description = item.value.get("Description")
            if item_description:
                print(
                    f"......Item Description: {item_description.value} has confidence: "
                    f"{item_description.confidence}"
                )
            item_quantity = item.value.get("Quantity")
            if item_quantity:
                print(
                    f"......Item Quantity: {item_quantity.value} has confidence: "
                    f"{item_quantity.confidence}"
                )
            item_price = item.value.get("Price")
            if item_price:
                print(
                    f"......Individual Item Price: {item_price.value} has confidence: "
                    f"{item_price.confidence}"
                )
            item_total_price = item.value.get("TotalPrice")
            if item_total_price:
                print(
                    f"......Total Item Price: {item_total_price.value} has confidence: "
                    f"{item_total_price.confidence}"
                )
    subtotal = receipt.fields.get("Subtotal")
    if subtotal:
        print(f"Subtotal: {subtotal.value} has confidence: {subtotal.confidence}")
    tax = receipt.fields.get("TotalTax")
    if tax:
        print(f"Total tax: {tax.value} has confidence: {tax.confidence}")
    tip = receipt.fields.get("Tip")
    if tip:
        print(f"Tip: {tip.value} has confidence: {tip.confidence}")
    total = receipt.fields.get("Total")
    if total:
        print(f"Total: {total.value} has confidence: {total.confidence}")
    print("--------------------------------------")

Вы не ограничены квитанциями! Существует несколько готовых моделей, каждая из которых имеет собственный набор поддерживаемых полей. Другие поддерживаемые предварительно созданные модели см. здесь.

Создание пользовательской модели

Создание пользовательской модели на основе собственного типа документа. Результирующая модель может использоваться для анализа значений из типов документов, для которого она была обучена. Укажите URL-адрес SAS контейнера для контейнера BLOB-объектов службы хранилища Azure, в котором хранятся обучающие документы.

Дополнительные сведения о настройке контейнера и требуемой структуре файлов см. в документации по службе.

from azure.ai.formrecognizer import (
    DocumentModelAdministrationClient,
    ModelBuildMode,
)
from azure.core.credentials import AzureKeyCredential

endpoint = os.environ["AZURE_FORM_RECOGNIZER_ENDPOINT"]
key = os.environ["AZURE_FORM_RECOGNIZER_KEY"]
container_sas_url = os.environ["CONTAINER_SAS_URL"]

document_model_admin_client = DocumentModelAdministrationClient(
    endpoint, AzureKeyCredential(key)
)
poller = document_model_admin_client.begin_build_document_model(
    ModelBuildMode.TEMPLATE,
    blob_container_url=container_sas_url,
    description="my model description",
)
model = poller.result()

print(f"Model ID: {model.model_id}")
print(f"Description: {model.description}")
print(f"Model created on: {model.created_on}")
print(f"Model expires on: {model.expires_on}")
print("Doc types the model can recognize:")
for name, doc_type in model.doc_types.items():
    print(
        f"Doc Type: '{name}' built with '{doc_type.build_mode}' mode which has the following fields:"
    )
    for field_name, field in doc_type.field_schema.items():
        print(
            f"Field: '{field_name}' has type '{field['type']}' and confidence score "
            f"{doc_type.field_confidence[field_name]}"
        )

Анализ документов с помощью пользовательской модели

Анализ полей документа, таблиц, меток выделения и многого другого. Эти модели обучаются с использованием ваших собственных данных, поэтому они адаптированы к вашим документам. Для достижения наилучших результатов следует анализировать только документы того же типа, что и пользовательская модель.

from azure.core.credentials import AzureKeyCredential
from azure.ai.formrecognizer import DocumentAnalysisClient

endpoint = os.environ["AZURE_FORM_RECOGNIZER_ENDPOINT"]
key = os.environ["AZURE_FORM_RECOGNIZER_KEY"]
model_id = os.getenv("CUSTOM_BUILT_MODEL_ID", custom_model_id)

document_analysis_client = DocumentAnalysisClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)

# Make sure your document's type is included in the list of document types the custom model can analyze
with open(path_to_sample_documents, "rb") as f:
    poller = document_analysis_client.begin_analyze_document(
        model_id=model_id, document=f
    )
result = poller.result()

for idx, document in enumerate(result.documents):
    print(f"--------Analyzing document #{idx + 1}--------")
    print(f"Document has type {document.doc_type}")
    print(f"Document has document type confidence {document.confidence}")
    print(f"Document was analyzed with model with ID {result.model_id}")
    for name, field in document.fields.items():
        field_value = field.value if field.value else field.content
        print(
            f"......found field of type '{field.value_type}' with value '{field_value}' and with confidence {field.confidence}"
        )

# iterate over tables, lines, and selection marks on each page
for page in result.pages:
    print(f"\nLines found on page {page.page_number}")
    for line in page.lines:
        print(f"...Line '{line.content}'")
    for word in page.words:
        print(f"...Word '{word.content}' has a confidence of {word.confidence}")
    if page.selection_marks:
        print(f"\nSelection marks found on page {page.page_number}")
        for selection_mark in page.selection_marks:
            print(
                f"...Selection mark is '{selection_mark.state}' and has a confidence of {selection_mark.confidence}"
            )

for i, table in enumerate(result.tables):
    print(f"\nTable {i + 1} can be found on page:")
    for region in table.bounding_regions:
        print(f"...{region.page_number}")
    for cell in table.cells:
        print(
            f"...Cell[{cell.row_index}][{cell.column_index}] has text '{cell.content}'"
        )
print("-----------------------------------")

Кроме того, URL-адрес документа можно также использовать для анализа документов с помощью begin_analyze_document_from_url метода .

document_url = "<url_of_the_document>"
poller = document_analysis_client.begin_analyze_document_from_url(model_id=model_id, document_url=document_url)
result = poller.result()

Управление моделями

Управление пользовательскими моделями, подключенными к вашей учетной записи.

from azure.ai.formrecognizer import DocumentModelAdministrationClient
from azure.core.credentials import AzureKeyCredential
from azure.core.exceptions import ResourceNotFoundError

endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
credential = AzureKeyCredential("<api_key>")

document_model_admin_client = DocumentModelAdministrationClient(endpoint, credential)

account_details = document_model_admin_client.get_resource_details()
print("Our account has {} custom models, and we can have at most {} custom models".format(
    account_details.custom_document_models.count, account_details.custom_document_models.limit
))

# Here we get a paged list of all of our models
models = document_model_admin_client.list_document_models()
print("We have models with the following ids: {}".format(
    ", ".join([m.model_id for m in models])
))

# Replace with the custom model ID from the "Build a model" sample
model_id = "<model_id from the Build a Model sample>"

custom_model = document_model_admin_client.get_document_model(model_id=model_id)
print("Model ID: {}".format(custom_model.model_id))
print("Description: {}".format(custom_model.description))
print("Model created on: {}\n".format(custom_model.created_on))

# Finally, we will delete this model by ID
document_model_admin_client.delete_document_model(model_id=custom_model.model_id)

try:
    document_model_admin_client.get_document_model(model_id=custom_model.model_id)
except ResourceNotFoundError:
    print("Successfully deleted model with id {}".format(custom_model.model_id))

Возможности надстройки

Аналитика документов поддерживает более сложные возможности анализа. Эти необязательные функции можно включить и отключить в зависимости от сценария извлечения документа.

Следующие возможности надстройки доступны для 31-07.2023 (ga) и более поздних выпусков:

Обратите внимание, что за некоторые возможности надстроек взимается дополнительная плата. См. цены: https://azure.microsoft.com/pricing/details/ai-document-intelligence/.

Устранение неполадок

Общие сведения

Распознаватель документов клиентская библиотека вызовет исключения, определенные в Azure Core. Коды ошибок и сообщения, создаваемые службой аналитики документов, можно найти в документации службы.

Ведение журнала

Эта библиотека использует стандартную библиотеку ведения журнала для ведения журнала.

Основные сведения о сеансах HTTP (URL-адреса, заголовки и т. д.) регистрируются на INFO уровне.

Подробное DEBUG ведение журнала на уровне, включая тексты запросов и ответов и неотредактированные заголовки, можно включить на клиенте или для каждой операции с помощью аргумента logging_enable ключевое слово.

См. полную документацию по ведению журнала пакета SDK с примерами здесь.

Дополнительная настройка

Необязательные аргументы ключевое слово можно передавать на уровне клиента и для каждой операции. В справочной документации по azure-core описаны доступные конфигурации для повторных попыток, ведения журнала, транспортных протоколов и многого другого.

Дальнейшие действия

Больше примеров кода

См. пример файла сведений для нескольких фрагментов кода, иллюстрирующих общие шаблоны, используемые в API Распознаватель документов Python.

Дополнительная документация

Более подробную документацию по аналитике документов ИИ Azure см. в документации по аналитике документов на docs.microsoft.com.

Участие

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.

При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.