Kognitivní dovednost analýzy obrázků
Dovednost Analýza obrázků extrahuje bohatou sadu vizuálních funkcí na základě obsahu obrázku. Můžete například vygenerovat titulek z obrázku, vygenerovat značky nebo identifikovat celebrity a orientační body. Tento článek je referenční dokumentací pro dovednosti analýzy obrázků. Pokyny k použití najdete v tématu Extrakce textu a informací z obrázků .
Tato dovednost využívá modely strojového učení poskytované službou Azure AI Vision ve službách Azure AI. Analýza obrázků funguje jen u obrázků, které vyhovují následujícím požadavkům:
- Obrázek musí být prezentován ve formátu JPEG, PNG, GIF nebo BMP.
- Velikost souboru obrázku musí být menší než 4 megabajty (MB).
- Rozměry obrázku musí být větší než 50 × 50 pixelů
Podporované zdroje dat pro analýzu OCR a obrázků jsou objekty blob ve službě Azure Blob Storage a Azure Data Lake Storage (ADLS) Gen2 a obsah obrázků ve OneLake. Obrázky můžou být samostatné soubory nebo vložené obrázky v PDF nebo jiných souborech.
Tato dovednost se implementuje pomocí rozhraní API pro analýzu obrázků AI verze 3.2. Pokud vaše řešení vyžaduje volání novější verze tohoto rozhraní API služby (například verze 4.0), zvažte implementaci prostřednictvím vlastní dovednosti webového rozhraní API.
Poznámka:
Tato dovednost je vázána na služby Azure AI a vyžaduje fakturovatelný prostředek pro transakce, které překračují 20 dokumentů na indexer za den. Provádění integrovaných dovedností se účtuje za stávající cenu průběžných plateb za služby Azure AI.
Kromě toho je extrakce obrázků fakturovatelná službou Azure AI Search.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Parametry dovedností
Parametry rozlišují malá a velká písmena.
Název parametru | Popis |
---|---|
defaultLanguageCode |
Řetězec označující jazyk, který se má vrátit. Služba vrátí výsledky rozpoznávání v zadaném jazyce. Pokud tento parametr není zadaný, výchozí hodnota je en. Podporované jazyky zahrnují podmnožinu obecně dostupných jazyků služby Azure AI Vision. Když je jazyk nově zaveden se stavem obecné dostupnosti do služby AI Vision, očekává se zpoždění, než se plně integrují do této dovednosti. |
visualFeatures |
Pole řetězců označující typy funkcí vizuálu, které se mají vrátit. Mezi platné typy funkcí vizuálu patří:
defaultLanguageCode vizuálních funkcích najdete v dokumentaci k analýze obrázků ve službě Azure AI Vision. |
details |
Pole řetězců označující, které podrobnosti specifické pro doménu se mají vrátit. Mezi platné typy funkcí vizuálu patří:
|
Vstupy dovedností
Název vstupu | Popis |
---|---|
image |
Komplexní typ. V současné době pracuje pouze s polem /document/normalized_images, které indexer objektů blob Azure vytvoří, když imageAction je nastavená na jinou hodnotu než none . |
Výstupy dovedností
Název výstupu | Popis |
---|---|
adult |
Výstup je jeden objekt dospělého komplexního typu, který se skládá z logických polí (isAdultContent , isGoryContent , isRacyContent ) a skóre dvojitého typu (adultScore , goreScore , racyScore ). |
brands |
Výstup je pole objektů značky , kde je objekt komplexním typem skládajícím se z name (řetězce) a confidence skóre (double). Vrátí také rectangle čtyři souřadnice ohraničujícího rámečku (x , y , w , h v pixelech) označující umístění uvnitř obrázku. Pro obdélník x a y jsou vlevo nahoře. Vlevo dole je x , y+h . Vpravo nahoře je x+w , y . Vpravo dole je x+w , y+h . |
categories |
Výstup je pole objektů kategorií, kde každý objekt kategorie je komplexním typem skládajícím se z name (řetězce), score (double) a volitelného detail typu, který obsahuje podrobnosti o celebritách nebo orientačních bodech. Úplný seznam názvů kategorií najdete v taxonomii kategorií. Detail je vnořený komplexní typ. Detail celebrity se skládá z názvu, skóre spolehlivosti a ohraničujícího rámečku tváře. Podrobnosti orientačních bodů se skládají z názvu a skóre spolehlivosti. |
description |
Výstup je jeden objekt popisu komplexního typu, který se skládá ze seznamů tags a caption (pole sestávající z Text (řetězec) a confidence (double)). |
faces |
Komplexní typ skládající age se z , gender a faceBoundingBox má čtyři souřadnice ohraničujícího rámečku (v pixelech) označující umístění uvnitř obrázku. Souřadnice jsou top , left , width , height . |
objects |
Výstup je pole objektů vizuálních funkcí. Každý objekt je komplexní typ, který se skládá z object (řetězec), confidence (double), rectangle (se čtyřmi souřadnicemi ohraničujícího rámečku označujícími umístění uvnitř obrázku) a parent obsahující název a jistotu objektu . |
tags |
Výstup je pole objektů imageTag , kde objekt značky je komplexní typ skládající se z name (string), hint (string) a confidence (double). Přidání nápovědy je vzácné. Generuje se jenom v případě, že je značka nejednoznačná. Například obrázek označený jako "curling" může mít nápovědu "sport", aby lépe vyznačil jeho obsah. |
Definice ukázkové dovednosti
{
"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"
}
]
}
Ukázkový index
Pro jednotlivé objekty (například adult
a description
) je můžete strukturovat v indexu Collection(Edm.ComplexType)
jako návrat adult
a description
výstup pro všechny objekty. Další informace omapováních
{
"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
}
]
}
]
}
Ukázkové mapování výstupních polí
Cílové pole může být komplexní pole nebo kolekce. Definice indexu určuje všechna dílčí pole.
"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"
}
Varianta mapování výstupních polí (vnořené vlastnosti)
Mapování výstupních polí můžete definovat na vlastnosti nižší úrovně, například jenom celebrity nebo orientační body. V tomto případě se ujistěte, že schéma indexu obsahuje pole, které obsahuje jednotlivé podrobnosti konkrétně.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Ukázkový vstup
{
"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
}
}
}
]
}
Ukázkový výstup
{
"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
}
}
]
}
}
]
}
Chybové případy
V následujících případech chyb nejsou extrahovány žádné prvky.
Kód chyby | Popis |
---|---|
NotSupportedLanguage |
Zadaný jazyk není podporovaný. |
InvalidImageUrl |
Adresa URL obrázku je špatně naformátovaná nebo není přístupná. |
InvalidImageFormat |
Vstupní data nejsou platným obrázkem. |
InvalidImageSize |
Vstupní obrázek je příliš velký. |
NotSupportedVisualFeature |
Zadaný typ funkce není platný. |
NotSupportedImage |
Nepodporovaný obrázek, například dětská pornografie. |
InvalidDetails |
Nepodporovaný model specifický pro doménu |
Pokud se zobrazí podobná chyba "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"
, zkontrolujte cestu. Celebrity i památky jsou v oblasti detail
.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]