Analizarea conținutului
Sfat
Consultați fila Text și imagini pentru mai multe detalii!
Pentru a analiza conținutul unui fișier, poți folosi Azure Content Understanding API pentru a-l trimite către endpoint. Poți specifica conținutul ca URL (pentru un fișier găzduit într-o locație accesibilă la Internet) sau poți încărca direct date de fișier binar (de exemplu, un document .pdf, o imagine .png, un fișier audio .mp3 sau un fișier video .mp4). Cererea de analiză include analizorul care urmează să fie folosit.
Analiza este o operație asincronă. După trimiterea cererii, primiți un ID de operațiune pe care îl puteți folosi pentru a verifica statusul și a recupera rezultatele când operațiunea este finalizată.
De exemplu, să presupunem că doriți să utilizați analizorul de cărți de vizită discutate anterior pentru a extrage numele și adresa de e-mail din următoarea imagine scanată a cărții de vizită:
Folosind SDK-ul Python
SDK-ul Python pentru Înțelegerea Conținutului (azure-ai-contentunderstanding) oferă o ContentUnderstandingClient clasă care simplifică interacțiunea cu serviciul. SDK-ul gestionează autentificarea, formatarea cererilor și interogarea automată pentru operațiuni asincrone.
Următorul cod Python folosește SDK-ul pentru a trimite o carte de vizită pentru analiză și a recupera rezultatele:
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}")
Sfat
Metoda begin_analyze SDK-ului returnează un obiect poller. Apelarea .result() la interogator gestionează automat interogarea până la finalizarea operațiunii, deci nu trebuie să scrii propriul tău ciclu de interogare.
Utilizarea API-ului REST
Poți, de asemenea, să trimiți cereri de analiză direct folosind API-ul REST. Aplicația ta client trimite apeluri HTTP către endpoint-ul Content Understanding pentru resursa Microsoft Foundry, trecând o cheie API în antet.
Următorul cod Python trimite o cerere de analiză folosind un URL, apoi interogează serviciul până când operația este completă și rezultatele sunt returnate.
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()
Notă
Poți specifica un URL pentru locația fișierului de conținut, așa cum este prezentat aici. Pentru a trimite direct datele fișierelor binare, folosiți analyzeBinary operația în schimb.
Se procesează rezultatele analizei
Rezultatele depind de:
- Tipul de conținut pe care analizatorul este proiectat să îl analizeze (de exemplu, document, video, imagine sau audio).
- Schema pentru analizor.
- Conținutul fișierului care a fost analizat.
De exemplu, răspunsul de la analizorul de cărți de vizită bazat pe documente atunci când analiza cărții de vizită descrise anterior conține:
- Câmpurile extrase
- Aspectul OCR (optic character recognition) al documentului, inclusiv locații de linii de text, cuvinte individuale și paragrafe de pe fiecare pagină.
Folosind SDK-ul Python
Când se folosește SDK-ul, obiectul AnalysisResult oferă acces tastat la rezultate. Proprietatea contents conține o listă de obiecte de conținut, fiecare cu câmpuri, markdown și metadate. Următorul cod arată cum să extragi valorile câmpurilor de șir:
# (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}")
Utilizarea API-ului REST
Când folosești API-ul REST, răspunsul este un payload JSON pe care aplicația ta trebuie să-l analizeze. Iată răspunsul complet JSON pentru analiza cărții de vizită:
{
"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"
]
}
]
}
]
}
}
Aplicația dvs. trebuie să analizeze de obicei JSON pentru a regăsi valorile de câmp. De exemplu, următorul cod Python extrage toate valorile șirurilor :
# (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']}")
Ieșirea din acest cod este afișată aici:
ContactName: John Smith
EmailAddress: john@contoso.com