Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Навык анализа изображений извлекает богатый набор визуальных функций на основе содержания изображения. Например, вы можете создать подпись с изображения, создать теги или идентифицировать знаменитостей и достопримечательности. Эта статья является справочной документацией по навыку анализа изображений . См. Извлечение текста и информации из изображений для инструкций по использованию.
Этот навык использует модели машинного обучения, предоставленные Azure Vision in Foundry Tools. Image Analysis работает с изображениями, соответствующими следующим требованиям:
- Изображение должно быть представлено в форматах JPEG, PNG, GIF или BMP
- Размер файла изображения должен быть меньше 4 мегабайт (МБ)
- Размеры изображения должны превышать 50 x 50 пикселей
Поддерживаемые источники данных для OCR и анализа изображений — это blobs в Хранилище BLOB-объектов Azure и Azure Data Lake Storage (ADLS) Gen2, а также содержимое изображений в Microsoft OneLake. Изображения могут быть отдельными файлами или встроенными изображениями в PDF или другие файлы.
Этот навык реализован с помощью AI Image Analysis API версии 3.2. Если ваше решение требует вызова новой версии этого API (например, версии 4.0), рассмотрите возможность реализации через Web API custom skill или используйте ImageAnalysisV4 power skill.
Note
Этот навык связан с Foundry Tools и требует оплачиваемого ресурса для транзакций, превышающих 20 документов на индексатор в день. Выполнение встроенных навыков взимается по существующей цене средств Foundry Standard.
Кроме того, извлечение изображений оплачивается по Поиск с использованием ИИ Azure.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Skill parameters
Параметры чувствительны к регистру.
| Parameter name | Description |
|---|---|
defaultLanguageCode |
Строка, указывающая язык для возврата. Сервис возвращает результаты распознавания в заданном языке. Если этот параметр не указан, значение по умолчанию — «en». Поддерживаемые языки включают подмножество общедоступных языков Azure Vision. Когда язык вводится в Azure Vision с статусом общего доступа, ожидается задержка до полной интеграции в этот навык. |
visualFeatures |
Массив строк, указывающих типы визуальных признаков для возврата. Допустимые типы визуальных признаков включают:
defaultLanguageCode. |
details |
Массив строк, указывающих, какие детали, специфичные для домена, возвращать. Допустимые типы визуальных признаков включают:
|
Skill inputs
| Input name | Description |
|---|---|
image |
Complex Type. В настоящее время работает только с полем "/document/normalized_images", которое создаётся индексатором Azure blob, когда imageAction устанавливается на значение, отличное от none. |
Skill outputs
| Output name | Description |
|---|---|
adult |
Выход — это один взрослый объект сложного типа, состоящий из булевых полей (isAdultContent, isGoryContent, isRacyContent) и двойных типов оценок (adultScore, goreScore, ). racyScore |
brands |
Выход — это массив брендовых объектов, где объект представляет собой сложный тип, состоящий из name (строка) и confidence партитура (двойной). Также он возвращает a rectangle с четырьмя ограничивающими рамками координатами (x, y, wh, в пикселях), указывающими на расположение внутри изображения. Для прямоугольника x и y — это верхний левый угол. Внизу слева — x. y+h Верхний правый угол — x+w. y Внизу справа — x+w, y+h. |
categories |
Output — это массив объектов категорий , где каждый объект категории представляет собой комплексный тип, состоящий из name (строки), score (двойной) и опционального detail варианта, содержащий детали знаменитостей или знаковых объектов. См. таксономию категорий для полного списка названий категорий. Деталь — это вложенный комплексный тип. Деталь знаменитости состоит из имени, рейтинга уверенности и рамки с лицом. Ключевой деталь состоит из имени и оценки уверенности. |
description |
Выход — это один объект описания сложного типа, состоящий из списков и tagscaption (массив из Text (строка) и confidence (двойный)). |
faces |
Комплексный тип, состоящий из age, genderи faceBoundingBox имеющий четыре ограничивающих квадратных координаты (в пикселях), указывающие на расположение внутри изображения. Координаты: top, left, width, height. |
objects |
Выход — это массив визуальных объектов признаков. Каждый объект — это комплексный тип, состоящий из object (строка), confidence (двойной), rectangle (с четырьмя координатами ограничивающих рамок, указывающих на расположение внутри изображения) и , parent содержащий имя объекта и уверенность . |
tags |
Выход — это массив объектов imageTag , где объект тегов представляет собой сложный тип, состоящий из name (строка), hint (строка) и confidence (двойной). Добавление подсказки — редкость. Он генерируется только если тег неоднозначен. Например, изображение с тегом «кёрлинг» может содержать намёк на «спорт», чтобы лучше обозначить его содержание. |
Примерное определение навыка
{
"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
Для отдельных объектов (например adult , и description), вы можете структурировать их в индексе как a Collection(Edm.ComplexType) , чтобы они возвращали adult и description выводили для всех них. Для получения дополнительной информации о отображении выходов в индексные поля см. раздел «Выравнивание информации из комплексных типов».
{
"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
}
]
}
]
}
Выборочное отображение выходных полей
Целевым полем может быть сложное поле или коллекция. Определение индекса указывает любые подполя.
"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"
}
Вариации отображения выходных полей (вложенные свойства)
Вы можете задать отображение выходных полей на более низкоуровневые объекты, например, просто знаменитости или ориентиры. В этом случае убедитесь, что в индексной схеме есть отдельное поле для каждой детали.
"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
В следующих случаях ошибок элементы не извлекаются.
| Error Code | Description |
|---|---|
NotSupportedLanguage |
Предоставленная формулировка не поддерживается. |
InvalidImageUrl |
URL изображения плохо отформатирован или недоступен. |
InvalidImageFormat |
Входные данные не являются действительным изображением. |
InvalidImageSize |
Входное изображение слишком большое. |
NotSupportedVisualFeature |
Указанный тип признака невалиден. |
NotSupportedImage |
Неподтверждённое изображение, например, детская порнография. |
InvalidDetails |
Неподдерживаемая модель, специфичная для конкретной области. |
Если вы получите ошибку, похожую на "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", проверьте путь. И знаменитости, и достопримечательности относятся к объектам под detail.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]