Inhoud analyseren

Voltooid

Aanbeveling

Zie het tabblad Tekst en afbeeldingen voor meer informatie.

Als u de inhoud van een bestand wilt analyseren, kunt u de Azure Content Understanding-API gebruiken om het naar het eindpunt te verzenden. U kunt de inhoud opgeven als EEN URL (voor een bestand dat wordt gehost op een locatie die toegankelijk is voor internet) of binaire bestandsgegevens rechtstreeks uploaden (bijvoorbeeld een .pdf document, een .png afbeelding, een .mp3 audiobestand of een .mp4 videobestand). De analyseaanvraag bevat de analyser die moet worden gebruikt.

Analyse is een asynchrone bewerking. Nadat u de aanvraag hebt ingediend, ontvangt u een bewerkings-id die u kunt gebruiken om de status te controleren en de resultaten op te halen wanneer de bewerking is voltooid.

Stel dat u de eerder besproken visitekaartjesanalyse wilt gebruiken om de naam en het e-mailadres op te halen uit de volgende gescande afbeelding van het visitekaartje:

Foto van een visitekaartje voor John Smith.

De Python-SDK gebruiken

De Python SDK voor Content Understanding (azure-ai-contentunderstanding) biedt een ContentUnderstandingClient klasse die de interactie met de service vereenvoudigt. De SDK verwerkt verificatie, aanvraagopmaak en automatische polling voor asynchrone bewerkingen.

De volgende Python-code maakt gebruik van de SDK om een visitekaartje te verzenden voor analyse en de resultaten op te halen:

from azure.ai.contentunderstanding import ContentUnderstandingClient
from azure.ai.contentunderstanding.models import AnalysisInput
from azure.core.credentials import AzureKeyCredential

# Authenticate the client
endpoint = "<YOUR_ENDPOINT>"
credential = AzureKeyCredential("<YOUR_API_KEY>")
client = ContentUnderstandingClient(endpoint=endpoint, credential=credential)

# Analyze the business card using the custom analyzer
analyzer_name = "business_card_analyser"
poller = client.begin_analyze(
    analyzer_id=analyzer_name,
    inputs=[AnalysisInput(url="https://host.com/business-card.png")]
)

# Wait for the operation to complete and get the results
result = poller.result()

# Extract field values from the results
content = result.contents[0]
if content.fields:
    for field_name, field_data in content.fields.items():
        if field_data.type == "string":
            print(f"{field_name}: {field_data.value}")

Aanbeveling

De SDK-methode begin_analyze retourneert een poller-object. Wanneer .result() wordt aangeroepen, verwerkt de poller automatisch de polling totdat de bewerking is voltooid, zodat u geen eigen pollinglus hoeft te schrijven.

De REST API gebruiken

U kunt ook rechtstreeks analyseaanvragen indienen met behulp van de REST API. Uw clienttoepassing verzendt HTTP-aanroepen naar het eindpunt Content Understanding voor uw Microsoft Foundry-resource, waarbij een API-sleutel in de header wordt doorgegeven.

De volgende Python-code verzendt een aanvraag voor analyse met behulp van een URL en peilt vervolgens de service totdat de bewerking is voltooid en de resultaten worden geretourneerd.

import json
import requests

## Use a POST request to submit the file URL to the analyzer
analyzer_name = "business_card_analyser"

headers = {
        "Ocp-Apim-Subscription-Key": "<YOUR_API_KEY>",
        "Content-Type": "application/json"}

url = f"{<YOUR_ENDPOINT>}/contentunderstanding/analyzers/{analyzer_name}:analyze?api-version=2025-11-01"

request_body = {
    "inputs": [
        {
            "url": "https://host.com/business-card.png"
        }
    ]
}

response = requests.post(url, headers=headers, json=request_body)

# Get the response and extract the ID assigned to the analysis operation
response_json = response.json()
id_value = response_json.get("id")

# Use a GET request to check the status of the analysis operation
result_url = f"{<YOUR_ENDPOINT>}/contentunderstanding/analyzerResults/{id_value}?api-version=2025-11-01"

result_response = requests.get(result_url, headers=headers)

# Keep polling until the analysis is complete
status = result_response.json().get("status")
while status == "Running":
        result_response = requests.get(result_url, headers=headers)
        status = result_response.json().get("status")

# Get the analysis results
if status == "Succeeded":
    result_json = result_response.json()


Opmerking

U kunt een URL opgeven voor de locatie van het inhoudsbestand, zoals hier wordt weergegeven. Als u binaire bestandsgegevens rechtstreeks wilt verzenden, gebruikt u de analyzeBinary bewerking.

Analyseresultaten verwerken

De resultaten zijn afhankelijk van:

  • Het soort inhoud dat de analyzer ontworpen is om te analyseren (bijvoorbeeld document, video, afbeelding of audio).
  • Het schema voor de analyse.
  • De inhoud van het bestand dat is geanalyseerd.

Het antwoord van de documentgebaseerde visitekaartjesanalyzer bij het analyseren van het eerder beschreven visitekaartje bevat bijvoorbeeld:

  • De geëxtraheerde velden
  • De OCR-indeling (Optical Character Recognition) van het document, inclusief locaties van regels tekst, afzonderlijke woorden en alinea's op elke pagina.

De Python-SDK gebruiken

Wanneer u de SDK gebruikt, biedt het AnalysisResult object getypte toegang tot de resultaten. De contents eigenschap bevat een lijst met inhoudsobjecten, elk met velden, markdown en metagegevens. De volgende code laat zien hoe u veldwaarden voor tekenreeksen extraheert:

# (continued from previous SDK code example)

content = result.contents[0]
if content.fields:
    for field_name, field_data in content.fields.items():
        if field_data.type == "string":
            print(f"{field_name}: {field_data.value}")

De REST API gebruiken

Wanneer u de REST API gebruikt, is het antwoord een JSON-nettolading die uw toepassing moet parseren. Dit is het volledige JSON-antwoord voor de analyse van visitekaartjes:

{
    "id": "00000000-0000-0000-0000-a00000000000",
    "status": "Succeeded",
    "result": {
        "analyzerId": "biz_card_analyser_2",
        "apiVersion": "2025-11-01",
        "createdAt": "2025-05-16T03:51:46Z",
        "warnings": [],
        "contents": [
            {
                "markdown": "John Smith\nEmail: john@contoso.com\n",
                "fields": {
                    "ContactName": {
                        "type": "string",
                        "valueString": "John Smith",
                        "spans": [
                            {
                                "offset": 0,
                                "length": 10
                            }
                        ],
                        "confidence": 0.994,
                        "source": "D(1,69,234,333,234,333,283,69,283)"
                    },
                    "EmailAddress": {
                        "type": "string",
                        "valueString": "john@contoso.com",
                        "spans": [
                            {
                                "offset": 18,
                                "length": 16
                            }
                        ],
                        "confidence": 0.998,
                        "source": "D(1,179,309,458,309,458,341,179,341)"
                    }
                },
                "kind": "document",
                "startPageNumber": 1,
                "endPageNumber": 1,
                "unit": "pixel",
                "pages": [
                    {
                        "pageNumber": 1,
                        "angle": 0.03410444,
                        "width": 1000,
                        "height": 620,
                        "spans": [
                            {
                                "offset": 0,
                                "length": 35
                            }
                        ],
                        "words": [
                            {
                                "content": "John",
                                "span": {
                                    "offset": 0,
                                    "length": 4
                                },
                                "confidence": 0.992,
                                "source": "D(1,69,234,181,234,180,283,69,283)"
                            },
                            {
                                "content": "Smith",
                                "span": {
                                    "offset": 5,
                                    "length": 5
                                },
                                "confidence": 0.998,
                                "source": "D(1,200,234,333,234,333,282,200,283)"
                            },
                            {
                                "content": "Email:",
                                "span": {
                                    "offset": 11,
                                    "length": 6
                                },
                                "confidence": 0.995,
                                "source": "D(1,75,310,165,309,165,340,75,340)"
                            },
                            {
                                "content": "john@contoso.com",
                                "span": {
                                    "offset": 18,
                                    "length": 16
                                },
                                "confidence": 0.977,
                                "source": "D(1,179,309,458,311,458,340,179,341)"
                            }
                        ],
                        "lines": [
                            {
                                "content": "John Smith",
                                "source": "D(1,69,234,333,233,333,282,69,282)",
                                "span": {
                                    "offset": 0,
                                    "length": 10
                                }
                            },
                            {
                                "content": "Email: john@contoso.com",
                                "source": "D(1,75,309,458,309,458,340,75,340)",
                                "span": {
                                    "offset": 11,
                                    "length": 23
                                }
                            }
                        ]
                    }
                ],
                "paragraphs": [
                    {
                        "content": "John Smith Email: john@contoso.com",
                        "source": "D(1,69,233,458,233,458,340,69,340)",
                        "span": {
                            "offset": 0,
                            "length": 34
                        }
                    }
                ],
                "sections": [
                    {
                        "span": {
                            "offset": 0,
                            "length": 34
                        },
                        "elements": [
                            "/paragraphs/0"
                        ]
                    }
                ]
            }
        ]
    }
}

Uw toepassing moet doorgaans de JSON parseren om veldwaarden op te halen. Met de volgende Python-code worden bijvoorbeeld alle tekenreekswaarden geëxtraheerd:

# (continued from previous code example)

# Iterate through the fields and extract the names and type-specific values
contents = result_json["result"]["contents"]
for content in contents:
    if "fields" in content:
        fields = content["fields"]
        for field_name, field_data in fields.items():
            if field_data['type'] == "string":
                print(f"{field_name}: {field_data['valueString']}")

De uitvoer van deze code wordt hier weergegeven:

ContactName: John Smith
EmailAddress: john@contoso.com