Bildanalyse – kognitiver Skill
Der Skill Bildanalyse extrahiert einen umfangreichen Satz von visuellen Merkmalen aus dem Bildinhalt. So können Sie beispielsweise anhand eines Bilds eine Beschriftung erstellen, Tags generieren oder Prominente und Sehenswürdigkeiten identifizieren. Dieser Artikel bildet die Referenzdokumentation zum Skill Bildanalyse. Verwendungsanweisungen finden Sie unter Extrahieren von Text und Informationen aus Bildern in der KI-Anreicherung.
Dieser Skill verwendet die Machine Learning-Modelle, die durch Azure KI Vision in Azure KI Services bereitgestellt werden. Die Bild-Analyse kann Bilder analysieren, die folgende Anforderungen erfüllen:
- Das Bild muss im JPEG-, PNG-, GIF- oder BMP-Format vorliegen.
- Die Dateigröße muss weniger als 4 MB betragen.
- Das Bild muss größer als 50 x 50 Pixel sein.
Unterstützte Datenquellen für OCR und Bildanalyse sind Blobs in Azure Blob Storage und Azure Data Lake Storage (ADLS) Gen2 und Bildinhalte in OneLake. Bilder können eigenständige Dateien oder eingebettete Bilder in einer PDF oder anderen Dateien sein.
Diese Fähigkeit wird mit der AI Image Analysis API Version 3.2 implementiert. Wenn Ihre Lösung einen Aufruf einer neueren Version dieser Dienst-API (z. B. Version 4.0) erfordert, sollten Sie die Implementierung über benutzerdefinierte Web-API-Kenntnisse in Betracht ziehen.
Hinweis
Dieser Skill ist an Azure KI Services gebunden und erfordert eine abrechenbare Ressource für Transaktionen, die 20 Dokumente pro Indexer und Tag überschreiten. Die Ausführung integrierter Skills wird nach dem bestehenden nutzungsbasierten Preis für Azure KI Services berechnet.
Darüber hinaus wird die Bildextraktion durch Azure KI Search abgerechnet.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Skillparameter
Bei den Parametern wird zwischen Groß- und Kleinschreibung unterschieden.
Parametername | Beschreibung |
---|---|
defaultLanguageCode |
Eine Zeichenfolge, die angibt, welche Sprache zurückgegeben werden soll. Der Dienst gibt die Ergebnisse der Erkennung in einer bestimmten Sprache zurück. Wenn dieser Parameter nicht angegeben wird, ist der Standardwert „en“. Unterstützte Sprachen umfassen eine Teilmenge der allgemein verfügbaren Sprachen von Azure AI Vision. Wenn eine Sprache neu mit allgemeinem Verfügbarkeitsstatus in den AI Vision-Dienst eingeführt wird, wird erwartet, dass sie in diese Fähigkeit vollständig integriert sind. |
visualFeatures |
Ein Array aus Zeichenfolgen, die angibt, welche Arten von visuellen Merkmalen zurückgegeben werden sollen. Folgende Arten von visuellen Merkmalen sind gültig:
defaultLanguageCode unterstützt werden. |
details |
Ein Array aus Zeichenfolgen, die angeben, welche domänenspezifischen Informationen zurückgegeben werden sollen. Folgende Arten von visuellen Merkmalen sind gültig:
|
Skilleingaben
Eingabename | Beschreibung |
---|---|
image |
Komplexer Typ. Arbeitet derzeit mit dem Feld „/document/normalized_images“, das vom Azure Blob-Indexer generiert wird, wenn imageAction auf einen anderen Wert als none gesetzt ist. |
Skillausgaben
Ausgabename | Beschreibung |
---|---|
adult |
Die Ausgabe ist ein einzelnes adult-Objekt eines komplexen Typs, bestehend aus booleschen Feldern (isAdultContent , isGoryContent , isRacyContent ) und Bewertungen vom Typ „Double“ (adultScore , goreScore , racyScore ). |
brands |
Die Ausgabe ist ein Array von brand-Objekten, bei denen das Objekt ein komplexer Typ aus name (Zeichenfolge) und einer confidence -Bewertung (Double) ist. Des Weiteren wird ein Rechteck (rectangle ) mit vier Begrenzungsrahmenkoordinaten (x , y , w , h in Pixeln) zurückgegeben, das die Position innerhalb des Bilds angibt. Für das Rechteck sind x und y links oben. Links unten ist x , y+h . Rechts oben ist x+w , y . Rechts unten ist x+w , y+h . |
categories |
Die Ausgabe ist ein Array von category-Objekten, bei dem jedes Kategorieobjekt ein komplexer Typ aus name (Zeichenfolge), score (Double) und optional detail mit Details zu Prominenten oder Wahrzeichen ist. Die vollständige Liste der Kategorienamen finden Sie in der Kategorietaxonomie. Ein Detail ist ein geschachtelter komplexer Typ. Ein Prominentendetail besteht aus einem Namen, einer Zuverlässigkeitsbewertung und einem Gesichtsbegrenzungsrahmen. Ein Wahrzeichendetail besteht aus einem Namen und einer Zuverlässigkeitsbewertung. |
description |
Die Ausgabe ist ein einzelnes description-Objekt eines komplexen Typs aus Listen mit tags und caption (Array mit Text (Zeichenfolge) und confidence (Double)). |
faces |
Komplexer Typ aus age , gender und faceBoundingBox mit vier Begrenzungsrahmenkoordinaten (in Pixel) zur Angabe der Position innerhalb des Bilds. Die Koordinaten sind top , left , width und height . |
objects |
Die Ausgabe ist ein Array aus Objekten vom Typ „visuelles Feature“. Jedes Objekt ist ein komplexer Typ, bestehend aus object (Zeichenfolge), confidence (Double), rectangle (mit vier Begrenzungsrahmenkoordinaten, die die Position innerhalb des Bilds angeben) und einem parent -Element, das einen Objektnamen und einen Konfidenzwert enthält. |
tags |
Die Ausgabe ist ein Array von imageTag-Objekten, bei denen ein Tagobjekt ein komplexer Typ aus name (Zeichenfolge), hint (Zeichenfolge) und confidence (Double) ist. In seltenen Fällen wird noch ein Hinweis hinzugefügt. Er wird nur generiert, wenn ein Tag mehrdeutig ist. Ein als „Curling“ markiertes Bild kann beispielsweise mit dem Hinweis „Sport“ versehen werden, um den Inhalt besser anzugeben. |
Beispieldefinition einer Qualifikation
{
"description": "Extract image analysis.",
"@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": "en",
"visualFeatures": [
"adult",
"brands",
"categories",
"description",
"faces",
"objects",
"tags"
],
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "adult"
},
{
"name": "brands"
},
{
"name": "categories"
},
{
"name": "description"
},
{
"name": "faces"
},
{
"name": "objects"
},
{
"name": "tags"
}
]
}
Beispielindex
Einzelne Objekte (beispielsweise adult
und description
) können im Index als Collection(Edm.ComplexType)
strukturiert werden, um die Ausgabe adult
und description
für alle zurückzugeben. Weitere Informationen zum Zuordnen von Ausgaben zu Indexfeldern finden Sie unter Vereinfachen von Informationen komplexer Typen.
{
"fields": [
{
"name": "metadata_storage_name",
"type": "Edm.String",
"key": true,
"searchable": true,
"filterable": false,
"facetable": false,
"sortable": true
},
{
"name": "metadata_storage_path",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false,
"sortable": true
},
{
"name": "content",
"type": "Edm.String",
"sortable": false,
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "adult",
"type": "Edm.ComplexType",
"fields": [
{
"name": "isAdultContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "isGoryContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "isRacyContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "adultScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "goreScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "racyScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "brands",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "rectangle",
"type": "Edm.ComplexType",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "w",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "h",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "categories",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "score",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "detail",
"type": "Edm.ComplexType",
"fields": [
{
"name": "celebrities",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "faceBoundingBox",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "landmarks",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
}
]
},
{
"name": "description",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "tags",
"type": "Collection(Edm.String)",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "captions",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "text",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "faces",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "age",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "gender",
"type": "Edm.String",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "faceBoundingBox",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "top",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "left",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "width",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "height",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "objects",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "object",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "rectangle",
"type": "Edm.ComplexType",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "w",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "h",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "parent",
"type": "Edm.ComplexType",
"fields": [
{
"name": "object",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "tags",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "hint",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
}
Exemplarische Ausgabefeldzuordnung
Das Zielfeld kann ein komplexes Feld oder eine Sammlung sein. Die Indexdefinition gibt alle ggf. vorhandenen Unterfelder an.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/adult",
"targetFieldName": "adult"
},
{
"sourceFieldName": "/document/normalized_images/*/brands/*",
"targetFieldName": "brands"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/*",
"targetFieldName": "categories"
},
{
"sourceFieldName": "/document/normalized_images/*/description",
"targetFieldName": "description"
},
{
"sourceFieldName": "/document/normalized_images/*/faces/*",
"targetFieldName": "faces"
},
{
"sourceFieldName": "/document/normalized_images/*/objects/*",
"targetFieldName": "objects"
},
{
"sourceFieldName": "/document/normalized_images/*/tags/*",
"targetFieldName": "tags"
}
Variation von Ausgabefeldzuordnungen (verschachtelte Eigenschaften)
Sie können Ausgabefeldzuordnungen für Eigenschaften niedrigerer Ebenen definieren, also beispielsweise nur Prominente oder Wahrzeichen. Stellen Sie in diesem Fall sicher, dass Ihr Indexschema jeweils über ein spezifisches Feld für das jeweilige Detail verfügt.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Beispieleingabe
{
"values": [
{
"recordId": "1",
"data": {
"image": {
"data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
"width": 500,
"height": 300,
"originalWidth": 5000,
"originalHeight": 3000,
"rotationFromOriginal": 90,
"contentOffset": 500,
"pageNumber": 2
}
}
}
]
}
Beispielausgabe
{
"values": [
{
"recordId": "1",
"data": {
"categories": [
{
"name": "abstract_",
"score": 0.00390625
},
{
"name": "people_",
"score": 0.83984375,
"detail": {
"celebrities": [
{
"name": "Satya Nadella",
"faceBoundingBox": [
{
"x": 273,
"y": 309
},
{
"x": 395,
"y": 309
},
{
"x": 395,
"y": 431
},
{
"x": 273,
"y": 431
}
],
"confidence": 0.999028444
}
],
"landmarks": [ ]
}
}
],
"adult": {
"isAdultContent": false,
"isRacyContent": false,
"isGoryContent": false,
"adultScore": 0.0934349000453949,
"racyScore": 0.068613491952419281,
"goreScore": 0.08928389008070282
},
"tags": [
{
"name": "person",
"confidence": 0.98979085683822632
},
{
"name": "man",
"confidence": 0.94493889808654785
},
{
"name": "outdoor",
"confidence": 0.938492476940155
},
{
"name": "window",
"confidence": 0.89513939619064331
}
],
"description": {
"tags": [
"person",
"man",
"outdoor",
"window",
"glasses"
],
"captions": [
{
"text": "Satya Nadella sitting on a bench",
"confidence": 0.48293603002174407
}
]
},
"faces": [
{
"age": 44,
"gender": "Male",
"faceBoundingBox": [
{
"x": 1601,
"y": 395
},
{
"x": 1653,
"y": 395
},
{
"x": 1653,
"y": 447
},
{
"x": 1601,
"y": 447
}
]
}
],
"objects": [
{
"rectangle": {
"x": 25,
"y": 43,
"w": 172,
"h": 140
},
"object": "person",
"confidence": 0.931
}
],
"brands":[
{
"name":"Microsoft",
"confidence": 0.903,
"rectangle":{
"x":20,
"y":97,
"w":62,
"h":52
}
}
]
}
}
]
}
Auftretende Fehler
In den folgenden Fällen werden keine Elemente extrahiert.
Fehlercode | Beschreibung |
---|---|
NotSupportedLanguage |
Die angegebene Sprache wird nicht unterstützt. |
InvalidImageUrl |
Die Bild-URL ist falsch formatiert, oder es kann nicht darauf zugegriffen werden. |
InvalidImageFormat |
Bei den Eingabedaten handelt es sich nicht um ein gültiges Bild. |
InvalidImageSize |
Das Eingabebild ist zu groß. |
NotSupportedVisualFeature |
Der angegebene Featuretyp ist ungültig. |
NotSupportedImage |
Nicht unterstütztes Bild, z.B. Kinderpornografie. |
InvalidDetails |
Nicht unterstütztes domänenspezifisches Modell. |
Wenn Sie eine Fehlermeldung ähnlich "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"
erhalten, überprüfen Sie den Pfad. Sowohl Prominente als auch Wahrzeichen sind Eigenschaften unter detail
.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]