Bildanalyse kognitive Fähigkeiten

Die Bildanalyse-Fähigkeit extrahiert eine reiche Auswahl an visuellen Merkmalen basierend auf dem Bildgehalt. Zum Beispiel können Sie eine Bildunterschrift aus einem Bild erstellen, Tags erstellen oder Prominente und Wahrzeichen identifizieren. Dieser Artikel ist die Referenzdokumentation für die Bildanalyse-Fertigkeit . Siehe Text und Informationen aus Bildern extrahieren für Nutzungsanweisungen.

Diese Fähigkeit verwendet die maschinellen Lernmodelle von Azure Vision in Foundry Tools. Bildanalyse arbeitet an Bildern, die folgende Anforderungen erfüllen:

  • Das Bild muss im JPEG-, PNG-, GIF- oder BMP-Format präsentiert werden
  • Die Dateigröße des Bilds muss kleiner als 4 MB sein.
  • Die Abmessungen des Bildes müssen 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 sowie Bildinhalte in Microsoft OneLake. Bilder können eigenständige Dateien oder eingebettete Bilder in einem 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 Service-API (wie Version 4.0) erfordert, sollten Sie über Web API Custom Skill implementieren oder die Power Skill ImageAnalysisV4 Power Skill verwenden.

Note

Diese Fähigkeit ist an Foundry Tools gebunden und erfordert eine abrechenbare Ressource für Transaktionen, die pro Indexer pro Tag 20 Dokumente umfassen. Die Ausführung der integrierten Fähigkeiten wird zum bestehenden Foundry Tools Standard-Preis berechnet.

Außerdem ist die Bildgewinnung abrechenbar nach Azure KI-Suche.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Skill parameters

Bei Parametern wird die Groß-/Kleinschreibung beachtet.

Parameter name Description
defaultLanguageCode Eine Zeichenkette, die anzeigt, welche Sprache zurückkehren soll. Der Service liefert Erkennungsergebnisse in einer bestimmten Sprache zurück. Wenn dieser Parameter nicht angegeben ist, ist der Standardwert "en".

Unterstützte Sprachen umfassen eine Teilmenge von allgemein verfügbaren Sprachen von Azure Vision. Wenn eine Sprache mit dem Status der allgemeinen Verfügbarkeit neu in Azure Vision eingeführt wird, gibt es eine erwartete Verzögerung, bevor sie vollständig in diese Fähigkeit integriert ist.
visualFeatures Ein Array von Zeichenketten, die die visuellen Merkmalstypen angeben, die zurückkehren sollen. Gültige visuelle Merkmale umfassen:
  • Erwachsene – erkennt, ob das Bild pornografisch ist (zeigt Nacktheit oder einen sexuellen Akt), blutig (zeigt extreme Gewalt oder Blut) oder anzüglich (auch bekannt als gewagter Inhalt).
  • Marken – Erkennt verschiedene Marken in einem Bild, einschließlich des ungefähren Ortes.
  • Kategorien – Kategorisiert Bildinhalte nach einer von Foundry Tools definierten Taxonomie .
  • Beschreibung – Beschreibt den Bildinhalt mit einem vollständigen Satz in unterstützten Sprachen.
  • Gesichter – Erkennt, ob Gesichter vorhanden sind. Falls vorhanden, erzeugt Koordinaten, Geschlecht und Alter.
  • Objekte – Erkennt verschiedene Objekte in einem Bild, einschließlich des ungefähren Ortes.
  • Tags – Markiert das Bild mit einer detaillierten Liste von Wörtern, die mit dem Bildinhalt zusammenhängen.
Die Namen der visuellen Merkmale sind groß- und kleinschreibungsabhängig. Sowohl Farb- als auch ImageType-visuelle Funktionen wurden veraltet, aber du kannst diese Funktionalität über eine benutzerdefinierte Fähigkeit nutzen. Siehe die Azure Vision Image Analysis Dokumentation für welche visuelle Merkmale mit jedem defaultLanguageCode unterstützt werden.
details Ein Array von Strings, die angeben, welche domänenspezifischen Details zurückgegeben werden sollen. Gültige visuelle Merkmale umfassen:
  • Prominente – Identifiziert Prominente, wenn sie im Bild erkannt werden.
  • Orientierungspunkte – Identifiziert Orientierungspunkte, wenn sie im Bild erkannt werden.

Skill inputs

Input name Description
image Complex Type. Derzeit funktioniert es nur mit dem Feld "/document/normalized_images", das vom Azure Blob-Indexer erzeugt wird, wenn imageAction auf einen anderen Wert als none gesetzt wird.

Skill outputs

Output name Description
adult Ausgabe ist ein einzelnes erwachsenes Objekt eines komplexen Typs, bestehend aus Booleschen Feldern (isAdultContent, isGoryContent, isRacyContent) und Doppeltyp-Werten (adultScore, goreScore, , racyScore).
brands Ausgabe ist ein Array von Markenobjekten , wobei das Objekt ein komplexer Typ ist, bestehend aus name (String) und einem confidence Score (Double). Es gibt außerdem ein mit rectangle vier Begrenzungsbox-Koordinaten (x, y, w, h, in Pixeln) zurück, die die Platzierung innerhalb des Bildes anzeigen. Für das Rechteck x sind und y oben links. Unten links ist x, y+h. Oben rechts ist x+w, y. Unten rechts ist x+w, y+h.
categories Output ist ein Array von Kategorienobjekten , wobei jedes Kategorienobjekt ein komplexer Typ ist, der aus einer name (Zeichenkette), score (doppelt) und optional detail besteht und Prominenten- oder Meilensteindetails enthält. Siehe die Kategorie-Taxonomie für die vollständige Liste der Kategorienamen. Ein Detail ist ein verschachtelter komplexer Typ. Ein Promi-Detail besteht aus einem Namen, einem Vertrauenswert und einem Face-Bounding-Box. Ein wegweisendes Detail besteht aus einem Namen und einem Vertrauenswert.
description Ausgabe ist ein Einzelbeschreibungsobjekt komplexen Typs, bestehend aus Listen von tags und caption (ein Array bestehend aus Text (Zeichenkette) und confidence (doppeltem)).
faces Komplexer Typ, bestehend aus age, gender, und faceBoundingBox mit vier Begrenzungsbox-Koordinaten (in Pixeln), die die Platzierung innerhalb des Bildes anzeigen. Die Koordinaten sind top, left, width, . height
objects Ausgabe ist ein Array visueller Merkmalsobjekte. Jedes Objekt ist ein komplexer Typ, bestehend aus object (Zeichenkette), confidence (doppelt), rectangle (mit vier Begrenzungsbox-Koordinaten, die die Platzierung im Bild anzeigen) und a parent , das einen Objektnamen und Konfidenz enthält.
tags Ausgabe ist ein Array von imageTag-Objekten , wobei ein Tag-Objekt ein komplexer Typ ist, bestehend aus name (Zeichenkette), hint (Zeichenkette) und confidence (Doppel). Die Hinzufügung eines Hinweises ist selten. Es wird nur generiert, wenn ein Tag mehrdeutig ist. Zum Beispiel könnte ein Bild, das als "Curling" markiert ist, einen Hinweis auf "Sport" enthalten, um seinen Inhalt besser anzuzeigen.

Beispiel-Fertigkeitsdefinition

{
    "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"
        }
    ]
}

Sample index

Für einzelne Objekte (wie adult und description) können Sie sie im Index so Collection(Edm.ComplexType) strukturieren, dass Sie für alle zurückgeben adult und description ausgeben. Weitere Informationen zur Abbildung von Ausgaben auf Indexfelder finden Sie unter Abflachung von Informationen aus komplexen 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
                }
            ]
        }
    ]
}

Beispielausgabefeldabbildung

Das Zielfeld kann ein komplexes Feld oder eine Sammlung sein. Die Indexdefinition spezifiziert beliebige Teilfelder.

"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 der Ausgabefeldabbildungen (verschachtelte Eigenschaften)

Man kann Ausgabefeldzuordnungen zu niedrigeren Eigenschaften definieren, wie zum Beispiel nur Prominente oder Wahrzeichen. In diesem Fall solltest du sicherstellen, dass dein Indexschema ein Feld enthält, das jedes Detail speziell enthält.

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
        "targetFieldName": "celebrities"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
        "targetFieldName": "landmarks"
    }

Sample input

{
    "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
                }
            }
        }
    ]
}

Sample output

{
  "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
              }
           }
        ]
      }
    }
  ]
}

Error cases

In den folgenden Fehlerfällen werden keine Elemente extrahiert.

Error Code Description
NotSupportedLanguage Die bereitgestellte Sprache wird nicht unterstützt.
InvalidImageUrl Die Bild-URL ist schlecht formatiert oder nicht zugänglich.
InvalidImageFormat Eingabedaten sind kein gültiges Bild.
InvalidImageSize Das Eingabebild ist zu groß.
NotSupportedVisualFeature Der angegebene Feature-Typ ist nicht gültig.
NotSupportedImage Nicht unterstütztes Bild, zum Beispiel Kinderpornografie.
InvalidDetails Nicht unterstütztes domänenspezifisches Modell.

Wenn du einen ähnlichen "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"Fehler wie bekommst, überprüfe den Pfad. Sowohl Prominente als auch Wahrzeichen sind Immobilien unter detail.

"categories":[  
      {  
         "name":"building_",
         "score":0.97265625,
         "detail":{  
            "landmarks":[  
               {  
                  "name":"Forbidden City",
                  "confidence":0.92013400793075562
               }
            ]

See also