Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Inhaltsverständnisanalyseer definieren, wie Erkenntnisse aus Ihren Inhalten verarbeitet und extrahiert werden. Sie stellen eine einheitliche Verarbeitungs- und Ausgabestruktur für alle Inhalte sicher, sodass Sie zuverlässige und vorhersagbare Ergebnisse erzielen. Bei gängigen Anwendungsfällen können Sie die vorgefertigten Analysatoren verwenden. In diesem Handbuch wird gezeigt, wie Sie diese Analyzer an Ihre Anforderungen anpassen können.
In dieser Anleitung verwenden Sie das Befehlszeilentool cURL. Wenn sie nicht installiert ist, können Sie die entsprechende Version für Ihre Entwicklerumgebung herunterladen .
Voraussetzungen
Stellen Sie zu Beginn sicher, dass Sie über die folgenden Ressourcen und Berechtigungen verfügen:
- Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.
- Nachdem Sie Ihr Azure-Abonnement erhalten haben, erstellen Sie eine Microsoft Foundry-Ressource im Azure-Portal. Achten Sie darauf, sie in einer unterstützten Region zu erstellen.
- Das Portal listet diese Ressource unter Foundry>Foundry.
- Richten Sie Standardmodellbereitstellungen für Ihre Ressource für Inhaltsverständnis ein. Durch das Festlegen von Standardeinstellungen erstellen Sie eine Verbindung zu den Microsoft Foundry-Modellen, die Sie für Inhaltsverständnisanfragen verwenden. Wählen Sie eine der folgenden Methoden:
Wechseln Sie zur Seite "Inhaltsverständniseinstellungen".
Wählen Sie oben links die Schaltfläche "+Ressource hinzufügen " aus.
Wählen Sie die Foundry-Ressource aus, die Sie verwenden möchten, und wählen Sie "Nächstes Speichern">aus.
Stellen Sie sicher, dass das Kontrollkästchen "Automatische Bereitstellung für erforderliche Modelle aktivieren" aktiviert ist, wenn keine Standardeinstellungen verfügbar sind . Diese Auswahl stellt sicher, dass Ihre Ressource vollständig mit den erforderlichen
GPT-4.1,GPT-4.1-miniundtext-embedding-3-largeModellen eingerichtet ist. Für unterschiedliche vorkonfigurierte Analysegeräte sind unterschiedliche Modelle erforderlich.
Definieren eines Analyseschemas
Zum Erstellen eines benutzerdefinierten Analyzers definieren Sie ein Feldschema, das die strukturierten Daten beschreibt, die Sie extrahieren möchten. Im folgenden Beispiel erstellen Sie einen Analysator basierend auf der vorgefertigten Dokumentenanalyse für die Verarbeitung eines Belegs.
Erstellen Sie eine JSON-Datei mit dem folgenden Inhalt receipt.json.
{
"description": "Sample receipt analyzer",
"baseAnalyzerId": "prebuilt-document",
"models": {
"completion": "gpt-4.1",
"embedding": "text-embedding-ada-002"
},
"config": {
"returnDetails": true,
"enableFormula": false,
"disableContentFiltering": false,
"estimateFieldSourceAndConfidence": true,
"tableFormat": "html"
},
"fieldSchema": {
"fields": {
"VendorName": {
"type": "string",
"method": "extract",
"description": "Vendor issuing the receipt"
},
"Items": {
"type": "array",
"method": "extract",
"items": {
"type": "object",
"properties": {
"Description": {
"type": "string",
"method": "extract",
"description": "Description of the item"
},
"Amount": {
"type": "number",
"method": "extract",
"description": "Amount of the item"
}
}
}
}
}
}
}
Wenn Sie über verschiedene Arten von Dokumenten verfügen, die Sie verarbeiten müssen, aber Sie nur die Quittungen kategorisieren und analysieren möchten, erstellen Sie einen Analyzer, der das Dokument zuerst kategorisiert. Leiten Sie sie dann mit dem folgenden Schema an den zuvor erstellten Analyzer weiter.
Erstellen Sie eine JSON-Datei mit dem folgenden Inhalt categorize.json.
{
"baseAnalyzerId": "prebuilt-document",
// Use the base analyzer to invoke the document specific capabilities.
//Specify the model the analyzer should use. This is one of the supported completion models and one of the supported embeddings model. The specific deployment used during analyze is set on the resource or provided in the analyze request.
"models": {
"completion": "gpt-4.1",
"embedding": "text-embedding-ada-002"
},
"config": {
// Enable splitting of the input into segments. Set this property to false if you only expect a single document within the input file. When specified and enableSegment=false, the whole content will be classified into one of the categories.
"enableSegment": false,
"contentCategories": {
// Category name.
"receipt": {
// Description to help with classification and splitting.
"description": "Any images or documents of receipts",
// Define the analyzer that any content classified as a receipt should be routed to
"analyzerId": "receipt"
},
"invoice": {
"description": "Any images or documents of invoice",
"analyzerId": "prebuilt-invoice"
},
"policeReport": {
"description": "A police or law enforcement report detailing the events that lead to the loss."
// Don't perform analysis for this category.
}
},
// Omit original content object and only return content objects from additional analysis.
"omitContent": true
}
//You can use fieldSchema here to define fields that are needed from the entire input content.
}
Erstellen Sie einen Analyzer
PUT-Anforderung
Erstellen Sie zuerst einen Beleganalysator, und erstellen Sie dann das Kategorisierungswerkzeug.
curl -i -X PUT "{endpoint}/contentunderstanding/analyzers/{analyzerId}?api-version=2025-11-01" \
-H "Ocp-Apim-Subscription-Key: {key}" \
-H "Content-Type: application/json" \
-d @receipt.json
PUT-Antwort
Die 201 Created Antwort enthält einen Operation-Location Header mit einer URL, mit der Sie den Status dieses asynchronen Analyseerstellungsvorgangs nachverfolgen können.
201 Created
Operation-Location: {endpoint}/contentunderstanding/analyzers/{analyzerId}/operations/{operationId}?api-version=2025-05-01-preview
Nach Abschluss des Vorgangs gibt ein HTTP-GET auf die URL des Vorgangsorts "status": "succeeded" zurück.
curl -i -X GET "{endpoint}/contentunderstanding/analyzers/{analyzerId}/operations/{operationId}?api-version=2025-11-01" \
-H "Ocp-Apim-Subscription-Key: {key}"
Analysieren einer Datei
Übermitteln der Datei
Sie können nun die von Ihnen erstellte benutzerdefinierte Analyse verwenden, um Dateien zu verarbeiten und die felder zu extrahieren, die Sie im Schema definiert haben.
Nehmen Sie vor dem Ausführen des cURL-Befehls die folgenden Änderungen an der HTTP-Anforderung vor:
- Ersetzen Sie
{endpoint}und{key}durch die Endpunkt- und Schlüsselwerte aus Ihrer Foundry-Instanz im Azure-Portal. - Ersetzen Sie
{analyzerId}durch den Namen des benutzerdefinierten Analyzers, den Sie mit dercategorize.jsonDatei erstellt haben. - Ersetzen Sie
{fileUrl}durch eine öffentlich zugängliche URL der zu analysierenden Datei, z. B. einen Pfad zu einer Azure Storage Blob-Instanz mit einer SAS (Shared Access Signature) oder zur Beispiel-URLhttps://github.com/Azure-Samples/azure-ai-content-understanding-python/raw/refs/heads/main/data/receipt.png.
POST-Anforderung
In diesem Beispiel wird die benutzerdefinierte Analyse verwendet, die Sie mit der categorize.json Datei erstellt haben, um einen Beleg zu analysieren.
curl -i -X POST "{endpoint}/contentunderstanding/analyzers/{analyzerId}:analyze?api-version=2025-11-01" \
-H "Ocp-Apim-Subscription-Key: {key}" \
-H "Content-Type: application/json" \
-d '{
"inputs":[
{
"url": "https://github.com/Azure-Samples/azure-ai-content-understanding-python/raw/refs/heads/main/data/receipt.png"
}
]
}'
POST-Antwort
Die 202 Accepted Antwort enthält das {resultId}, das Sie verwenden können, um den Status dieses asynchronen Vorgangs nachzuverfolgen.
{
"id": {resultId},
"status": "Running",
"result": {
"analyzerId": {analyzerId},
"apiVersion": "2025-11-01",
"createdAt": "YYYY-MM-DDTHH:MM:SSZ",
"warnings": [],
"contents": []
}
}
Abrufen des Analyseergebnisses
Verwenden Sie die Operation-Location aus der POST Antwort, um das Ergebnis der Analyse zu erhalten.
GET-Anforderung
curl -i -X GET "{endpoint}/contentunderstanding/analyzerResults/{resultId}?api-version=2025-11-01" \
-H "Ocp-Apim-Subscription-Key: {key}"
GET-Antwort
Eine 200 OK Antwort enthält ein status Feld, das den Fortschritt des Vorgangs anzeigt.
- Das
statusistSucceeded, wenn der Vorgang erfolgreich abgeschlossen ist. - Wenn der Status
runningodernotStartedlautet, rufen Sie die API erneut manuell auf oder verwenden Sie ein Skript. Warten Sie mindestens eine Sekunde zwischen Anfragen.
Beispielantwort
{
"id": {resultId},
"status": "Succeeded",
"result": {
"analyzerId": {analyzerId},
"apiVersion": "2025-11-01",
"createdAt": "YYYY-MM-DDTHH:MM:SSZ",
"warnings": [],
"contents": [
{
"path": "input1/segment1",
"category": "receipt",
"markdown": "Contoso\n\n123 Main Street\nRedmond, WA 98052\n\n987-654-3210\n\n6/10/2019 13:59\nSales Associate: Paul\n\n\n<table>\n<tr>\n<td>2 Surface Pro 6</td>\n<td>$1,998.00</td>\n</tr>\n<tr>\n<td>3 Surface Pen</td>\n<td>$299.97</td>\n</tr>\n</table> ...",
"fields": {
"VendorName": {
"type": "string",
"valueString": "Contoso",
"spans": [{"offset": 0,"length": 7}],
"confidence": 0.996,
"source": "D(1,774.0000,72.0000,974.0000,70.0000,974.0000,111.0000,774.0000,113.0000)"
},
"Items": {
"type": "array",
"valueArray": [
{
"type": "object",
"valueObject": {
"Description": {
"type": "string",
"valueString": "2 Surface Pro 6",
"spans": [ { "offset": 115, "length": 15}],
"confidence": 0.423,
"source": "D(1,704.0000,482.0000,875.0000,482.0000,875.0000,508.0000,704.0000,508.0000)"
},
"Amount": {
"type": "number",
"valueNumber": 1998,
"spans": [{ "offset": 140,"length": 9}
],
"confidence": 0.957,
"source": "D(1,952.0000,482.0000,1048.0000,482.0000,1048.0000,508.0000,952.0000,509.0000)"
}
}
}, ...
]
}
},
"kind": "document",
"startPageNumber": 1,
"endPageNumber": 1,
"unit": "pixel",
"pages": [
{
"pageNumber": 1,
"angle": -0.0944,
"width": 1743,
"height": 878
}
],
"analyzerId": "{analyzerId}",
"mimeType": "image/png"
}
]
},
"usage": {
"documentPages": 1,
"tokens": {
"contextualization": 1000
}
}
}
Verwandte Inhalte
- Sehen Sie sich das Codebeispiel an: visuelle Dokumentsuche.
- Sehen Sie sich das Codebeispiel an: Analysevorlagen.
- Versuchen Sie, Ihre Dokumentinhalte mithilfe von Inhaltsverständnis in Foundry zu verarbeiten.