Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе IQ Foundry, управляемого уровня знаний, который преобразует корпоративное содержимое в многократно используемые базы знаний с поддержкой разрешений для агентов на портале Foundry Microsoft.
Навык анализа изображений извлекает богатый набор визуальных функций на основе содержания изображения. Например, вы можете создать подпись с изображения, создать теги или идентифицировать знаменитостей и достопримечательности. Эта статья является справочной документацией по навыку анализа изображений . См. Извлечение текста и информации из изображений для инструкций по использованию.
Этот навык использует модели машинного обучения, предоставленные 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, рассмотрите возможность реализации с помощью навыка пользовательского веб-API.
Note
Этот навык связан с Foundry Tools и требует оплачиваемого ресурса для транзакций, превышающих 20 документов на индексатор в день. Выполнение встроенных навыков взимается по существующей цене средств Foundry Standard.
Кроме того, извлечение изображений оплачивается по Поиск с использованием ИИ Azure.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Параметры навыков
Параметры чувствительны к регистру.
| Имя параметра | Description |
|---|---|
defaultLanguageCode |
Строка, указывающая язык для возврата. Сервис возвращает результаты распознавания в заданном языке. Если этот параметр не указан, значение по умолчанию — «en». Поддерживаемые языки включают подмножество общедоступных языков Azure Vision. Когда язык вводится в Azure Vision с статусом общего доступа, ожидается задержка до полной интеграции в этот навык. |
visualFeatures |
Массив строк, указывающих типы визуальных признаков для возврата. Допустимые типы визуальных признаков включают:
defaultLanguageCode. |
details |
Массив строк, указывающих, какие детали, специфичные для домена, возвращать. Допустимые типы визуальных признаков включают:
|
Входные параметры навыков
| Введите имя | Description |
|---|---|
image |
Сложный тип. В настоящее время работает только с полем "/document/normalized_images", которое создаётся индексатором Azure blob, когда imageAction устанавливается на значение, отличное от none. |
Выходные данные навыка
| Имя результата | 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"
}
]
}
Пример индекса
Для отдельных объектов (например 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"
}
Пример ввода
{
"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
}
}
}
]
}
Пример полученных результатов
{
"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
}
}
]
}
}
]
}
Случаи ошибок
В следующих случаях ошибок элементы не извлекаются.
| Код ошибки | 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
}
]