Python için Azure Form Tanıma istemci kitaplığı - sürüm 3.3.2

Azure Belge Zekası (eski adıyla Form Tanıma), belgelerinizdeki metinleri ve yapılandırılmış verileri analiz etmek için makine öğrenmesini kullanan bir bulut hizmetidir. Aşağıdaki ana özellikleri içerir:

  • Düzen - Belgelerden içerik ve yapıyı (örn. sözcükler, seçim işaretleri, tablolar) ayıklayın.
  • Belge - Belgelerden genel düzene ek olarak anahtar-değer çiftlerini analiz edin.
  • Okuma - Belgelerden sayfa bilgilerini okuyun.
  • Önceden oluşturulmuş - Önceden oluşturulmuş modelleri kullanarak belirli belge türlerinden (örn. makbuzlar, faturalar, kartvizitler, kimlik belgeleri, ABD W-2 vergi belgeleri) ortak alan değerlerini ayıklayın.
  • Özel - Belgelerden genel düzene ek olarak uyarlanmış alan değerlerini ayıklamak için kendi verilerinizden özel modeller oluşturun.
  • Sınıflandırıcılar - Uygulamanızda işlediğiniz belgeleri doğru bir şekilde algılamak ve tanımlamak için düzen ve dil özelliklerini birleştiren özel sınıflandırma modelleri oluşturun.
  • Eklenti özellikleri - Barkodları/QR kodlarını, formülleri, yazı tipini/stilini vb. ayıklayın veya isteğe bağlı parametrelere sahip büyük belgeler için yüksek çözünürlüklü modu etkinleştirin.

Kaynak kodu | Paket (PyPI) | Paket (Conda) | API başvuru belgeleri | Ürün belgeleri | Örnekleri

Başlarken

Önkoşullar

Paketi yükleme

Pip ile Python için Azure Form Tanıma istemci kitaplığını yükleyin:

pip install azure-ai-formrecognizer

Not: İstemci kitaplığının bu sürümü varsayılan olarak 2023-07-31 hizmetin sürümüne ayarlanır.

Bu tabloda, SDK sürümleri ile hizmetin desteklenen API sürümleri arasındaki ilişki gösterilmektedir:

SDK sürümü Hizmetin desteklenen API sürümü
3.3.X - En son GA sürümü 2.0, 2.1, 2022-08-31, 2023-07-31 (varsayılan)
3.2.X 2.0, 2.1, 2022-08-31 (varsayılan)
3.1.X 2.0, 2.1 (varsayılan)
3.0.0 2.0

Not: Sürümden 3.2.Xbaşlayarak, Belge Zekası hizmetinin en yeni özelliklerinden yararlanmak için yeni bir istemci kümesi kullanıma sunulmuştur. uygulama kodunu istemci kitaplığı sürümünden veya daha düşük sürümden en son sürüme 3.1.X güncelleştirme hakkında ayrıntılı yönergeler için lütfen Geçiş Kılavuzu'na bakın. Ayrıca, daha ayrıntılı bilgi için Changelog'a bakın. Aşağıdaki tabloda her istemcinin ve desteklenen API sürümlerinin ilişkisi açıklanmaktadır:

API sürümü Desteklenen istemciler
2023-07-31 DocumentAnalysisClient ve DocumentModelAdministrationClient
2022-08-31 DocumentAnalysisClient ve DocumentModelAdministrationClient
2.1 FormRecognizerClient ve FormTrainingClient
2.0 FormRecognizerClient ve FormTrainingClient

Bilişsel Hizmetler veya Form Tanıma kaynağı oluşturma

Belge Zekası hem çok hizmetli hem de tek hizmetli erişimi destekler. Tek bir uç nokta/anahtar altında birden çok bilişsel hizmete erişmeyi planlıyorsanız Bilişsel Hizmetler kaynağı oluşturun. Yalnızca Belge Yönetim Bilgileri erişimi için bir Form Tanıma kaynağı oluşturun. Azure Active Directory kimlik doğrulamasını kullanmayı düşünüyorsanız tek hizmetli bir kaynağa ihtiyacınız olacağını lütfen unutmayın.

Aşağıdakilerden birini kullanarak iki kaynak da oluşturabilirsiniz:

Aşağıda CLI kullanarak Form Tanıma kaynağı oluşturma örneği verilmiştir:

# 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

Kaynağı oluşturma veya konum ve sku bilgilerini alma hakkında daha fazla bilgi için buraya bakın.

İstemcinin kimliğini doğrulama

Belge Yönetim Bilgileri hizmetiyle etkileşim kurmak için bir istemci örneği oluşturmanız gerekir. İstemci nesnesinin örneğini oluşturmak için bir uç nokta ve kimlik bilgisi gereklidir.

Uç noktayı alma

azure portalını veya AzureCLI'yı kullanarak Form Tanıma kaynağınızın uç noktasını bulabilirsiniz:

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

Kimlik doğrulaması için bölgesel uç nokta veya özel bir alt etki alanı kullanılabilir. Bunlar aşağıdaki gibi biçimlendirilir:

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

Bölgesel uç nokta, bölgedeki her kaynak için aynıdır. Desteklenen bölgesel uç noktaların tam listesine buradan başvurabilirsiniz. Bölgesel uç noktaların AAD kimlik doğrulamayı desteklemediğini lütfen unutmayın.

Öte yandan özel alt etki alanı, Form Tanıma kaynağına özgü bir addır. Bunlar yalnızca tek hizmetli kaynaklar tarafından kullanılabilir.

API anahtarını alma

API anahtarı Azure Portal'da veya aşağıdaki Azure CLI komutunu çalıştırarak bulunabilir:

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

AzureKeyCredential ile istemci oluşturma

Parametre olarak credentialbir API anahtarı kullanmak için anahtarı dize olarak AzureKeyCredential örneğine geçirin.

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 kimlik bilgileriyle istemci oluşturma

AzureKeyCredential kimlik doğrulaması bu başlangıç kılavuzundaki örneklerde kullanılır, ancak azure-identity kitaplığını kullanarak Azure Active Directory ile kimlik doğrulaması da yapabilirsiniz. Bölgesel uç noktaların AAD kimlik doğrulamayı desteklemediğini unutmayın. Bu kimlik doğrulama türünü kullanmak için kaynağınız için özel bir alt etki alanı adı oluşturun.

Aşağıda gösterilen DefaultAzureCredential türünü veya Azure SDK ile sağlanan diğer kimlik bilgileri türlerini kullanmak için lütfen paketi yükleyin azure-identity :

pip install azure-identity

Ayrıca yeni bir AAD uygulaması kaydetmeniz ve rolü hizmet sorumlunuza atayarak Belge Zekası'na "Cognitive Services User" erişim vermeniz gerekir.

Tamamlandıktan sonra, AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: 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)

Önemli kavramlar

DocumentAnalysisClient

DocumentAnalysisClientve begin_analyze_document_from_url API'leri aracılığıyla begin_analyze_document önceden oluşturulmuş ve özel modelleri kullanarak giriş belgelerini analiz etmek için işlemler sağlar. model_id Analiz için modelin türünü seçmek için parametresini kullanın. Desteklenen modellerin tam listesine buradan bakın. ayrıca ve begin_classify_document_from_url API'leri DocumentAnalysisClient aracılığıyla begin_classify_document belgeleri sınıflandırmaya yönelik işlemler de sağlar. Özel sınıflandırma modelleri, içindeki belgeleri tanımlamak için giriş dosyasındaki her sayfayı sınıflandırabilir ve ayrıca bir giriş dosyasındaki tek bir belgenin birden çok örneğini veya birden çok belgeyi tanımlayabilir.

Burada DocumentAnalysisClient kullanılarak gösterilen örnek kod parçacıkları verilmiştir. Desteklenen özellikler, yerel ayarlar ve belge türleri de dahil olmak üzere belgeleri analiz etme hakkında daha fazla bilgiyi hizmet belgelerinde bulabilirsiniz.

DocumentModelAdministrationClient

DocumentModelAdministrationClient şu işlemler için işlemler sağlar:

  • Özel belgelerinizi etiketleyerek belirttiğiniz belirli alanları analiz etmek için özel modeller oluşturma. Modelin çözümleyebileceği belge türlerinin yanı sıra her alan için tahmini güveni gösteren bir DocumentModelDetails döndürülür. Daha ayrıntılı bir açıklama için hizmet belgelerine bakın.
  • Mevcut modellerden oluşan bir koleksiyondan oluşturulmuş model oluşturma.
  • Hesabınızda oluşturulan modelleri yönetme.
  • İşlemleri listeleme veya son 24 saat içinde oluşturulan belirli bir model işlemini alma.
  • Özel modeli bir Form Tanıma kaynağından diğerine kopyalama.
  • Uygulamanızda işlediğiniz belgeleri sınıflandırmak için özel bir sınıflandırma modeli oluşturun ve yönetin.

Modellerin Document Intelligence Studio gibi bir grafik kullanıcı arabirimi kullanılarak da oluşturulabileceğini lütfen unutmayın.

Burada DocumentModelAdministrationClient kullanılarak gösterilen örnek kod parçacıkları verilmiştir.

Uzun süre çalışan işlemler

Uzun süre çalışan işlemler, bir işlemi başlatmak için hizmete gönderilen ilk isteklerden oluşan ve ardından işlemin tamamlanıp tamamlanmadığını ve başarılı olup olmadığını belirlemek için hizmeti aralıklarla yoklayarak sonucu almak için gerçekleştirilen işlemlerdir.

Belgeleri, derleme modellerini veya kopyalama/oluşturma modellerini analiz eden yöntemler, uzun süre çalışan işlemler olarak modellenir. İstemci, veya AsyncLROPollerdöndüren bir begin_<method-name>LROPoller yöntemi kullanıma sunar. Çağıranların yönteminden döndürülen poller nesnesini çağırarak result() işlemin tamamlanmasını beklemesi begin_<method-name> gerekir. Örnek kod parçacıkları, aşağıda uzun süre çalışan işlemlerin kullanılmasını göstermek için

Örnekler

Aşağıdaki bölümde, aşağıdakiler de dahil olmak üzere en yaygın Belge Zekası görevlerinden bazılarını kapsayan çeşitli kod parçacıkları sağlanır:

Düzeni Ayıkla

Belgelerden, sınırlayıcı bölge koordinatlarıyla birlikte metin, seçim işaretleri, metin stilleri ve tablo yapılarını ayıklayın.

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("----------------------------------------")

Genel Belge Modelini Kullanma

Belge Zekası hizmeti tarafından sağlanan genel belge modelini kullanarak belgelerden anahtar-değer çiftlerini, tabloları, stilleri ve seçim işaretlerini analiz edin. Yöntemine geçirerek model_id="prebuilt-document" Genel Belge Modeli'ni begin_analyze_document seçin:

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("----------------------------------------")
  • Model tarafından prebuilt-document sağlanan özellikler hakkında daha fazla bilgiyi burada bulabilirsiniz.

Önceden Oluşturulmuş Modelleri Kullanma

Belge Yönetim Bilgileri hizmeti tarafından sağlanan önceden oluşturulmuş modelleri kullanarak belirli belge türlerinden makbuzlar, faturalar, kartvizitler, kimlik belgeleri ve ABD W-2 vergi belgeleri gibi alanları ayıklayın.

Örneğin, bir satış makbuzundaki alanları analiz etmek için yöntemine begin_analyze_document geçirerek model_id="prebuilt-receipt" sağlanan önceden oluşturulmuş makbuz modelini kullanın:

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("--------------------------------------")

Faturalarla sınırlı değilsin! Aralarından seçim yapabileceğiniz birkaç önceden oluşturulmuş model vardır ve bunların her birinin kendi desteklenen alanları vardır. Burada desteklenen diğer önceden oluşturulmuş modelleri görebilirsiniz.

Özel Model Oluşturma

Kendi belge türünüzde özel bir model oluşturun. Elde edilen model, eğitildiği belge türlerindeki değerleri analiz etmek için kullanılabilir. Eğitim belgelerini depoladığınız Azure Depolama Blobu kapsayıcınıza bir kapsayıcı SAS URL'si sağlayın.

Kapsayıcıyı ve gerekli dosya yapısını ayarlama hakkında daha fazla bilgi hizmet belgelerinde bulunabilir.

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]}"
        )

Özel Model Kullanarak Belgeleri Çözümleme

Belge alanlarını, tabloları, seçim işaretlerini ve daha fazlasını analiz edin. Bu modeller kendi verilerinizle eğitildiğinden belgelerinize göre uyarlanır. En iyi sonuçları elde etmek için yalnızca özel modelin oluşturulduğu belge türündeki belgeleri analiz etmelisiniz.

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("-----------------------------------")

Alternatif olarak, belge URL'si yöntemi kullanılarak begin_analyze_document_from_url belgeleri analiz etmek için de kullanılabilir.

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()

Modellerinizi Yönetme

Hesabınıza bağlı özel modelleri yönetin.

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))

Eklenti Özellikleri

Belge Zekası daha gelişmiş analiz özelliklerini destekler. Bu isteğe bağlı özellikler, belge ayıklama senaryosuna bağlı olarak etkinleştirilebilir ve devre dışı bırakılabilir.

Aşağıdaki eklenti özellikleri 2023-07-31 (GA) ve sonraki sürümlerde kullanılabilir:

Bazı eklenti özelliklerinin ek ücrete tabi olacağını unutmayın. Bkz. fiyatlandırma: https://azure.microsoft.com/pricing/details/ai-document-intelligence/.

Sorun giderme

Genel

Form Tanıma istemci kitaplığı, Azure Core'da tanımlanan özel durumları tetikler. Belge Yönetim Bilgileri hizmeti tarafından tetiklenen hata kodları ve iletiler hizmet belgelerinde bulunabilir.

Günlüğe Kaydetme

Bu kitaplık, günlüğe kaydetme için standart günlük kitaplığını kullanır.

HTTP oturumlarıyla ilgili temel bilgiler (URL'ler, üst bilgiler vb.) düzeyinde günlüğe kaydedilir INFO .

İstek/yanıt gövdeleri ve işlenmemiş üst bilgiler de dahil olmak üzere ayrıntılı DEBUG düzey günlük kaydı, istemcide veya anahtar sözcük bağımsız değişkeniyle logging_enable işlem başına etkinleştirilebilir.

Burada örneklerin bulunduğu tam SDK günlük belgelerine bakın.

İsteğe Bağlı Yapılandırma

İsteğe bağlı anahtar sözcük bağımsız değişkenleri istemcide ve işlem düzeyinde geçirilebilir. Azure-core başvuru belgelerinde yeniden denemeler, günlüğe kaydetme, aktarım protokolleri ve daha fazlası için kullanılabilir yapılandırmalar açıklanmaktadır.

Sonraki adımlar

Daha fazla örnek kod

Form Tanıma Python API'sinde kullanılan yaygın desenleri gösteren çeşitli kod parçacıkları için bkz. Örnek BENİOKU.

Diğer belgeler

Azure AI Belge Zekası hakkında daha kapsamlı belgeler için docs.microsoft.com belge zekası belgelerine bakın.

Katkıda bulunma

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için cla.microsoft.com adresini ziyaret edin.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorular veya yorumlarla iletişime geçin opencode@microsoft.com .