Analysera innehåll
Tips/Råd
Mer information finns på fliken Text och bilder !
Om du vill analysera innehållet i en fil kan du använda Azure Content Understanding API för att skicka det till slutpunkten. Du kan ange innehållet som en URL (för en fil som finns på en Internettillgänglig plats) eller ladda upp binära fildata direkt (till exempel ett .pdf dokument, en .png bild, en .mp3 ljudfil eller en .mp4 videofil). Analysbegäran innehåller analysatorn som ska användas.
Analys är en asynkron åtgärd. När du har skickat begäran får du ett åtgärds-ID som du kan använda för att kontrollera statusen och hämta resultatet när åtgärden är klar.
Anta till exempel att du vill använda visitkortsanalysen som beskrevs tidigare för att extrahera namnet och e-postadressen från följande skannade visitkortsbild:
Använda Python SDK
Python SDK för Content Understanding (azure-ai-contentunderstanding) tillhandahåller en ContentUnderstandingClient klass som förenklar interaktionen med tjänsten. SDK hanterar autentisering, begärandeformatering och automatisk avsökning för asynkrona åtgärder.
Följande Python-kod använder SDK:t för att skicka ett visitkort för analys och hämta resultatet:
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}")
Tips/Råd
SDK-metoden begin_analyze returnerar ett pollerobjekt. Att anropa .result() på pollern hanterar avsökning automatiskt tills åtgärden har slutförts, så du behöver inte skriva en egen avsökningsloop.
Använda REST-API:et
Du kan också skicka analysbegäranden direkt med hjälp av REST-API:et. Klientprogrammet skickar HTTP-anrop till content understanding-slutpunkten för din Microsoft Foundry-resurs och skickar en API-nyckel i rubriken.
Följande Python-kod skickar en begäran om analys med hjälp av en URL och avsöker sedan tjänsten tills åtgärden är klar och resultatet returneras.
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()
Anmärkning
Du kan ange en URL för innehållsfilens plats som visas här. Om du vill skicka binära fildata direkt använder du åtgärden analyzeBinary i stället.
Bearbeta analysresultat
Resultatet beror på:
- Den typ av innehåll som analyseraren är utformad för att analysera (till exempel dokument, video, bild eller ljud).
- Schemat för analysatorn.
- Innehållet i filen som analyserades.
Till exempel innehåller svaret från den dokumentbaserade visitkortsanalysen vid analys av det visitkort som beskrevs tidigare följande:
- De extraherade fälten
- Layouten för optisk teckenigenkänning (OCR), inklusive platser för textrader, enskilda ord och stycken på varje sida.
Använda Python SDK
När du använder SDK:et AnalysisResult ger objektet skriven åtkomst till resultatet. Egenskapen contents innehåller en lista över innehållsobjekt, var och en med fält, markdown och metadata. Följande kod visar hur du extraherar strängfältvärden:
# (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}")
Använda REST-API:et
När du använder REST-API:et är svaret en JSON-nyttolast som programmet måste parsa. Här är det fullständiga JSON-svaret för visitkortsanalysen:
{
"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"
]
}
]
}
]
}
}
Programmet måste vanligtvis parsa JSON för att hämta fältvärden. Följande Python-kod extraherar till exempel alla strängvärden :
# (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']}")
Utdata från den här koden visas här:
ContactName: John Smith
EmailAddress: john@contoso.com