Как начать работать c Vision
Этот раздел описывает, как начать использовать Vision API для анализа изображений.
Перед началом
Чтобы воспользоваться примерами, установите cURL и получите данные вашего аккаунта для авторизации:
- На странице биллинга убедитесь, что платежный аккаунт находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. - Получите IAM-токен, необходимый для аутентификации.
- Получите идентификатор любого каталога, на который у вашего аккаунта есть роль
editor
или выше.
-
Выберите способ аутентификации:
-
Получите IAM-токен, используемый в примерах.
-
Создайте API-ключ. Передайте API-ключ в заголовке
Authorization
в следующем формате:Authorization: Api-Key <API-ключ>
-
-
Назначьте сервисному аккаунту роль
editor
или выше на каталог, в котором он был создан.Не указывайте в запросах идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.
-
Аутентифицируйтесь в CLI от имени федеративного пользователя.
-
С помощью CLI получите IAM-токен, необходимый для аутентификации:
yc iam create-token
-
Получите идентификатор любого каталога, на который у вашего аккаунта есть роль
editor
или выше.
Проанализируйте изображение
Вы можете использовать любые возможности для анализа из списка. Для примера, воспользуемся возможностью Распознавание текста:
-
Подготовьте файл изображения, соответствующий требованиям:
-
Поддерживаемые форматы файлов: JPEG, PNG, PDF.
MIME-тип файла вы указываете в свойстве
mime_type
. По умолчаниюimage
. -
Максимальный размер файла: 1 МБ.
-
Размер изображения не должен превышать 20 мегапикселей (длина x ширина).
Примечание
Нужен пример изображения? Скачайте изображение дорожного знака, предупреждающего о пингвинах.
-
-
Кодируйте файл в формат Base64:
UNIXWindowsPowerShellPythonNode.jsJavaGo$ base64 -i input.jpg > output.txt
C:> Base64.exe -e input.jpg > output.txt
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./input.jpg")) > output.txt
# Импортируйте библиотеку для кодирования в Base64 import base64 # Создайте функцию, которая кодирует файл и возвращает результат. def encode_file(file): file_content = file.read() return base64.b64encode(file_content)
// Считайте содержимое файла в память. var fs = require('fs'); var file = fs.readFileSync('/path/to/file'); // Получите содержимое файла в формате Base64. var encoded = Buffer.from(file).toString('base64');
// Импортируйте библиотеку для кодирования в Base64. import org.apache.commons.codec.binary.Base64; // Получите содержимое файла в формате Base64. byte[] fileData = Base64.encodeBase64(yourFile.getBytes());
import ( "bufio" "encoding/base64" "io/ioutil" "os" ) // Откройте файл f, _ := os.Open("/path/to/file") // Прочитайте содержимое файла. reader := bufio.NewReader(f) content, _ := ioutil.ReadAll(reader) // Получите содержимое файла в формате Base64. base64.StdEncoding.EncodeToString(content)
-
Создайте файл с телом запроса, например
body.json
. В свойствеcontent
укажите изображение, кодированное в Base64.Чтобы сервис автоматически определил язык текста, укажите в конфигурации свойство
"language_codes": ["*"]
.body.json:
{ "folderId": "b1gvmob95yysaplct532", "analyze_specs": [{ "content": "iVBORw0KGgo...", "features": [{ "type": "TEXT_DETECTION", "text_detection_config": { "language_codes": ["*"] } }] }] }
-
Отправьте запрос с помощью метода batchAnalyze и сохраните ответ в файл, например
output.json
:$ export IAM_TOKEN=CggaATEVAgA... $ curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
Ответ будет состоять из распознанных блоков текста, строк и слов с указанием их местоположения на изображении:
{ "results": [{ "results": [{ "textDetection": { "pages": [{ "blocks": [{ "boundingBox": { ... }, "lines": [{ "boundingBox": { ... }, "words": [{ "boundingBox": { "vertices": [{ "x": "504", "y": "760" }, { "x": "504", "y": "836" }, { "x": "826", "y": "836" }, { "x": "826", "y": "760" } ] }, "languages": [{ "languageCode": "en", "confidence": 0.9520227313 }], "text": "PENGUINS", "confidence": 0.9520227313 }], "confidence": 0.9520227313 }, ... ] }], "width": "1920", "height": "1280" }] } }] }] }
-
Чтобы получить все распознанные слова с изображения, найдите все строки с свойством
text
, например с помощью grep:$ grep -o "\"text\":\s\".*\"" output.json "text": "PENGUINS" "text": "CROSSING" "text": "SLOW"