مكتبة عميل Azure الذكاء الاصطناعي Document Intelligence ل Python - الإصدار 1.0.0b1

Azure الذكاء الاصطناعي Document Intelligence (المعروف سابقا باسم Form Recognizer) هي خدمة سحابية تستخدم التعلم الآلي لتحليل النص والبيانات المنظمة من مستنداتك. يتضمن الميزات الرئيسية التالية:

  • التخطيط - استخراج المحتوى والبنية (على سبيل المثال، الكلمات وعلامات التحديد والجداول) من المستندات.
  • المستند - تحليل أزواج قيم المفاتيح بالإضافة إلى التخطيط العام من المستندات.
  • القراءة - قراءة معلومات الصفحة من المستندات.
  • تم إنشاؤها مسبقا - استخراج قيم الحقول الشائعة من أنواع مستندات محددة (على سبيل المثال، الإيصالات والفواتير وبطاقات العمل ومستندات المعرف والمستندات الضريبية الأمريكية W-2 وغيرها) باستخدام نماذج تم إنشاؤها مسبقا.
  • مخصص - إنشاء نماذج مخصصة من بياناتك الخاصة لاستخراج قيم الحقول المخصصة بالإضافة إلى التخطيط العام من المستندات.
  • المصنفات - إنشاء نماذج تصنيف مخصصة تجمع بين ميزات التخطيط واللغة لاكتشاف المستندات التي تعالجها وتحديدها بدقة داخل التطبيق الخاص بك.
  • إمكانات الوظيفة الإضافية - استخراج الرموز الشريطية/رموز الاستجابة السريعة والصيغ والخط/النمط وما إلى ذلك أو تمكين وضع الدقة العالية للمستندات الكبيرة باستخدام معلمات اختيارية.

الشروع في العمل

تثبيت الحزمة

python -m pip install azure-ai-documentintelligence

المواقع الجاهزة

  • Python 3.7 أو أحدث مطلوب لاستخدام هذه الحزمة.
  • تحتاج إلى اشتراك Azure لاستخدام هذه الحزمة.
  • مثيل Azure الذكاء الاصطناعي Document Intelligence موجود.

إنشاء الخدمات المعرفية أو مورد ذكاء المستند

يدعم تحليل معلومات المستند الوصول متعدد الخدمات والخدمة الفردية. يمكنك إنشاء مورد الخدمات المعرفية إذا كنت تخطط للوصول إلى خدمات معرفية متعددة ضمن نقطة نهاية/مفتاح فردي. للوصول إلى ذكاء المستند فقط، قم بإنشاء مورد ذكاء المستند. يرجى ملاحظة أنك ستحتاج إلى مورد خدمة واحدة إذا كنت تنوي استخدام مصادقة Azure Active Directory.

يمكنك إنشاء أي مورد باستخدام:

فيما يلي مثال على كيفية إنشاء مورد ذكاء المستند باستخدام CLI:

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

لمزيد من المعلومات حول إنشاء المورد أو كيفية الحصول على الموقع ومعلومات sku راجع هنا.

مصادقة العميل

للتفاعل مع خدمة Document Intelligence، ستحتاج إلى إنشاء مثيل لعميل. نقطة النهايةوبيانات الاعتماد ضرورية لإنشاء مثيل لكائن العميل.

الحصول على نقطة النهاية

يمكنك العثور على نقطة النهاية لمورد ذكاء المستند باستخدام مدخل Microsoft Azure أو Azure CLI:

# Get the endpoint for the Document Intelligence 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 في مدخل Microsoft 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.documentintelligence import DocumentIntelligenceClient

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

إنشاء العميل باستخدام بيانات اعتماد Azure Active Directory

AzureKeyCredential يتم استخدام المصادقة في الأمثلة في دليل البدء هذا، ولكن يمكنك أيضا المصادقة مع Azure Active Directory باستخدام مكتبة هوية azure . لاحظ أن نقاط النهاية الإقليمية لا تدعم مصادقة AAD. إنشاء اسم مجال فرعي مخصص لموردك لاستخدام هذا النوع من المصادقة.

لاستخدام النوع DefaultAzureCredential الموضح أدناه، أو أنواع بيانات الاعتماد الأخرى المتوفرة مع Azure SDK، يرجى تثبيت الحزمة azure-identity :

pip install azure-identity

ستحتاج أيضا إلى تسجيل تطبيق AAD جديد ومنح حق الوصول إلى Document Intelligence عن طريق تعيين "Cognitive Services User" الدور إلى كيان الخدمة الخاص بك.

بمجرد الانتهاء، قم بتعيين قيم معرف العميل ومعرف المستأجر وسر العميل لتطبيق AAD كمتغيرات بيئة: AZURE_CLIENT_ID، ، AZURE_TENANT_IDAZURE_CLIENT_SECRET.

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

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

document_analysis_client = DocumentIntelligenceClient(endpoint, credential)

المفاهيم الرئيسية

DocumentIntelligenceClient

DocumentIntelligenceClient يوفر عمليات لتحليل مستندات الإدخال باستخدام نماذج مسبقة الإنشاء ومخصصة من خلال begin_analyze_document واجهة برمجة التطبيقات. استخدم المعلمة model_id لتحديد نوع النموذج للتحليل. راجع قائمة كاملة بالنماذج المدعومة هنا. DocumentIntelligenceClient يوفر أيضا عمليات لتصنيف المستندات من خلال begin_classify_document واجهة برمجة التطبيقات. يمكن لنماذج التصنيف المخصصة تصنيف كل صفحة في ملف إدخال لتحديد المستند (المستندات) داخل ويمكنها أيضا تحديد مستندات متعددة أو مثيلات متعددة لمستند واحد داخل ملف إدخال.

يتم توفير نماذج القصاصات البرمجية لتوضيح استخدام أمثلة DocumentIntelligenceClient هنا. يمكن العثور على مزيد من المعلومات حول تحليل المستندات، بما في ذلك الميزات المدعومة واللغات وأنواع المستندات في وثائق الخدمة.

DocumentIntelligenceAdministrationClient

يوفر DocumentIntelligenceAdministrationClient عمليات من أجل:

  • إنشاء نماذج مخصصة لتحليل حقول معينة تحددها عن طريق تسمية مستنداتك المخصصة. DocumentModelDetails يتم إرجاع يشير إلى نوع (أنواع) المستند الذي يمكن للنموذج تحليله، بالإضافة إلى الثقة المقدرة لكل حقل. راجع وثائق الخدمة للحصول على شرح أكثر تفصيلا.
  • إنشاء نموذج مكون من مجموعة من النماذج الموجودة.
  • إدارة النماذج التي تم إنشاؤها في حسابك.
  • سرد العمليات أو الحصول على عملية نموذج محددة تم إنشاؤها خلال آخر 24 ساعة.
  • نسخ نموذج مخصص من مورد ذكاء المستند إلى مورد آخر.
  • إنشاء نموذج تصنيف مخصص وإدارته لتصنيف المستندات التي تعالجها داخل التطبيق الخاص بك.

يرجى ملاحظة أنه يمكن أيضا إنشاء النماذج باستخدام واجهة مستخدم رسومية مثل Document Intelligence Studio.

يتم توفير نماذج القصاصات البرمجية لتوضيح استخدام DocumentIntelligenceAdministrationClient هنا.

عمليات طويلة الأمد

العمليات طويلة الأمد هي عمليات تتكون من طلب أولي يتم إرساله إلى الخدمة لبدء عملية، متبوعة باستطلاع الخدمة على فترات لتحديد ما إذا كانت العملية قد اكتملت أو فشلت، وإذا نجحت، للحصول على النتيجة.

يتم تصميم الأساليب التي تحلل المستندات أو نماذج الإنشاء أو نماذج النسخ/الإنشاء على أنها عمليات طويلة الأمد. يعرض العميل أسلوبا begin_<method-name> يقوم بإرجاع LROPoller أو AsyncLROPoller. يجب أن ينتظر المتصلون حتى تكتمل العملية عن طريق استدعاء result() كائن الاستقصاء الذي تم إرجاعه من begin_<method-name> الأسلوب . يتم توفير نماذج القصاصات البرمجية لتوضيح استخدام العمليات طويلة الأمد أدناه.

أمثلة

يوفر القسم التالي العديد من القصاصات البرمجية التي تغطي بعض مهام ذكاء المستند الأكثر شيوعا، بما في ذلك:

استخراج التخطيط

استخراج النص وعلامات التحديد وأنماط النص وهياكل الجدول، جنبا إلى جنب مع إحداثيات المنطقة المحيطة بها، من المستندات.

from azure.core.credentials import AzureKeyCredential
from azure.ai.documentintelligence import DocumentIntelligenceClient

endpoint = os.environ["DOCUMENTINTELLIGENCE_ENDPOINT"]
key = os.environ["DOCUMENTINTELLIGENCE_API_KEY"]

document_intelligence_client = DocumentIntelligenceClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)
with open(path_to_sample_documents, "rb") as f:
    poller = document_intelligence_client.begin_analyze_document(
        "prebuilt-layout", analyze_request=f, content_type="application/octet-stream"
    )
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("----------------------------------------")

استخدام النماذج التي تم إنشاؤها مسبقا

استخراج الحقول من أنواع مستندات محددة مثل الإيصالات والفواتير وبطاقات العمل ومستندات الهوية ومستندات الضرائب الأمريكية W-2 باستخدام نماذج تم إنشاؤها مسبقا توفرها خدمة معلومات المستند.

على سبيل المثال، لتحليل الحقول من إيصال مبيعات، استخدم نموذج الإيصال الذي تم إنشاؤه مسبقا الذي يوفره المرور model_id="prebuilt-receipt" إلى begin_analyze_document الأسلوب :

from azure.core.credentials import AzureKeyCredential
from azure.ai.documentintelligence import DocumentIntelligenceClient

endpoint = os.environ["DOCUMENTINTELLIGENCE_ENDPOINT"]
key = os.environ["DOCUMENTINTELLIGENCE_API_KEY"]

document_analysis_client = DocumentIntelligenceClient(endpoint=endpoint, credential=AzureKeyCredential(key))
with open(path_to_sample_documents, "rb") as f:
    poller = document_analysis_client.begin_analyze_document(
        "prebuilt-receipt", analyze_request=f, locale="en-US", content_type="application/octet-stream"
    )
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.get('valueString')} has confidence: " f"{merchant_name.confidence}")
    transaction_date = receipt.fields.get("TransactionDate")
    if transaction_date:
        print(
            f"Transaction Date: {transaction_date.get('valueDate')} has confidence: "
            f"{transaction_date.confidence}"
        )
    if receipt.fields.get("Items"):
        print("Receipt items:")
        for idx, item in enumerate(receipt.fields.get("Items").get("valueArray")):
            print(f"...Item #{idx + 1}")
            item_description = item.get("valueObject").get("Description")
            if item_description:
                print(
                    f"......Item Description: {item_description.get('valueString')} has confidence: "
                    f"{item_description.confidence}"
                )
            item_quantity = item.get("valueObject").get("Quantity")
            if item_quantity:
                print(
                    f"......Item Quantity: {item_quantity.get('valueString')} has confidence: "
                    f"{item_quantity.confidence}"
                )
            item_total_price = item.get("valueObject").get("TotalPrice")
            if item_total_price:
                print(
                    f"......Total Item Price: {format_price(item_total_price.get('valueCurrency'))} has confidence: "
                    f"{item_total_price.confidence}"
                )
    subtotal = receipt.fields.get("Subtotal")
    if subtotal:
        print(f"Subtotal: {format_price(subtotal.get('valueCurrency'))} has confidence: {subtotal.confidence}")
    tax = receipt.fields.get("TotalTax")
    if tax:
        print(f"Total tax: {format_price(tax.get('valueCurrency'))} has confidence: {tax.confidence}")
    tip = receipt.fields.get("Tip")
    if tip:
        print(f"Tip: {format_price(tip.get('valueCurrency'))} has confidence: {tip.confidence}")
    total = receipt.fields.get("Total")
    if total:
        print(f"Total: {format_price(total.get('valueCurrency'))} has confidence: {total.confidence}")
    print("--------------------------------------")

أنت لا تقتصر على الإيصالات! هناك بعض النماذج التي تم إنشاؤها مسبقا للاختيار من بينها، ولكل منها مجموعة خاصة بها من الحقول المدعومة. راجع النماذج المدعومة الأخرى التي تم إنشاؤها مسبقا هنا.

إنشاء نموذج مخصص

إنشاء نموذج مخصص على نوع المستند الخاص بك. يمكن استخدام النموذج الناتج لتحليل القيم من أنواع المستندات التي تم تدريبه عليها. قم بتوفير عنوان URL ل SAS للحاوية إلى حاوية Azure Storage Blob حيث تقوم بتخزين مستندات التدريب.

يمكن العثور على مزيد من التفاصيل حول إعداد حاوية وبنية الملف المطلوبة في وثائق الخدمة.

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

endpoint = os.environ["DOCUMENTINTELLIGENCE_ENDPOINT"]
key = os.environ["DOCUMENTINTELLIGENCE_API_KEY"]
container_sas_url = os.environ["CONTAINER_SAS_URL"]

document_model_admin_client = DocumentIntelligenceAdministrationClient(
    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.documentintelligence import DocumentIntelligenceClient

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

document_analysis_client = DocumentIntelligenceClient(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, analyze_request=f, content_type="application/octet-stream"
    )
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.get("valueString") if field.get("valueString") else field.content
        print(
            f"......found field of type '{field.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 azure.core.credentials import AzureKeyCredential
from azure.ai.documentintelligence import DocumentIntelligenceClient
from azure.ai.documentintelligence.models import AnalyzeDocumentRequest

endpoint = os.environ["DOCUMENTINTELLIGENCE_ENDPOINT"]
key = os.environ["DOCUMENTINTELLIGENCE_API_KEY"]

document_analysis_client = DocumentIntelligenceClient(endpoint=endpoint, credential=AzureKeyCredential(key))
url = "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/documentintelligence/azure-ai-documentintelligence/tests/sample_forms/receipt/contoso-receipt.png"
poller = document_analysis_client.begin_analyze_document("prebuilt-receipt", AnalyzeDocumentRequest(url_source=url))
receipts = poller.result()

إدارة النماذج الخاصة بك

إدارة النماذج المخصصة المرفقة بحسابك.

from azure.ai.documentintelligence import DocumentIntelligenceAdministrationClient
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 = DocumentIntelligenceAdministrationClient(endpoint, credential)

account_details = document_model_admin_client.get_resource_info()
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_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_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_model(model_id=custom_model.model_id)

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

قدرات الوظيفة الإضافية

يدعم Document Intelligence قدرات تحليل أكثر تعقيدا. يمكن تمكين هذه الميزات الاختيارية وتعطيلها اعتمادا على سيناريو استخراج المستند.

تتوفر إمكانات الوظيفة الإضافية التالية لإصدارات 2023-07-31 (GA) والإصدارات الأحدث:

لاحظ أن بعض قدرات الوظائف الإضافية ستتحمل رسوما إضافية. راجع التسعير: https://azure.microsoft.com/pricing/details/ai-document-intelligence/.

استكشاف الأخطاء وإصلاحها

عام

ستقوم مكتبة عميل Document Intelligence برفع الاستثناءات المحددة في Azure Core. يمكن العثور على رموز الخطأ والرسائل التي تم رفعها بواسطة خدمة Document Intelligence في وثائق الخدمة.

تسجيل الدخول

تستخدم هذه المكتبة مكتبة التسجيل القياسية للتسجيل.

يتم تسجيل المعلومات الأساسية حول جلسات HTTP (عناوين URL والعناوين وما إلى ذلك) في INFO المستوى.

يمكن تمكين تسجيل المستوى التفصيلي DEBUG ، بما في ذلك هيئات الطلب/الاستجابة والعناوين غير المكتملة ، على العميل أو لكل عملية باستخدام وسيطة logging_enable الكلمة الأساسية.

راجع وثائق تسجيل SDK الكاملة مع الأمثلة هنا.

التكوين الاختياري

يمكن تمرير وسيطات الكلمة الأساسية الاختيارية على مستوى العميل وكل عملية. تصف الوثائق المرجعية azure-core التكوينات المتوفرة لإعادة المحاولة والتسجيل وبروتوكولات النقل والمزيد.

الخطوات التالية

المزيد من نماذج التعليمات البرمجية

راجع نموذج README للعديد من القصاصات البرمجية التي توضح الأنماط الشائعة المستخدمة في واجهة برمجة تطبيقات Python لذكاء المستند.

وثائق إضافية

للحصول على وثائق أكثر شمولا حول Azure الذكاء الاصطناعي Document Intelligence، راجع وثائق Document Intelligence على docs.microsoft.com.

المساهمة

هذا المشروع يرحب بالمساهمات والاقتراحات. معظم المساهمات تتطلب منك الموافقة على اتفاقية ترخيص المساهم (CLA) التي تعلن أن لديك الحق في منحنا حق استخدام مساهمتك. لمزيد من التفاصيل، قم بزيارة https://cla.microsoft.com.

عند إرسال طلب سحب، سيحدد روبوت CLA-bot تلقائيًا ما إذا كنت بحاجة إلى تقديم CLA وتزيين العلاقات العامة بشكل مناسب (على سبيل المثال، التسمية أو التعليق). ما عليك سوى اتباع التعليمات التي يقدمها الروبوت. ستحتاج فقط إلى القيام بذلك مرة واحدة عبر جميع عمليات إعادة الشراء باستخدام CLA الخاص بنا.

اعتمد هذا المشروع مدونة السلوك من المصادر المفتوحة من Microsoft. لمزيد من المعلومات، راجع الأسئلة الشائعة حول مدونة قواعد السلوك أو الاتصال بأي أسئلة أو تعليقات opencode@microsoft.com إضافية.