Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Object Storage
    • Все руководства
    • Получение статистики запросов к объекту с использованием S3 Select
    • Получение статистики посещения сайта с использованием S3 Select
    • Получение статистики запросов к объектам с использованием Yandex Query
    • Анализ поресурсной детализации расходов
    • Шифрование на стороне сервера
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Анализ логов с использованием DataLens
    • Монтирование бакетов к файловой системе хостов Yandex Data Processing
    • Использование Object Storage в Yandex Data Processing
    • Импорт данных из Object Storage, обработка и экспорт в Managed Service for ClickHouse®
    • Подключение бакета как диска в Windows
    • Миграция данных из Yandex Data Streams с помощью Yandex Data Transfer
    • Использование гибридного хранилища в Yandex Managed Service for ClickHouse®
    • Загрузка данных из Yandex Managed Service for OpenSearch в Yandex Object Storage с помощью Yandex Data Transfer
    • Автоматическое копирование объектов из бакета в бакет
    • Регулярное асинхронное распознавание аудиофайлов в бакете
    • Обучение модели в Yandex DataSphere на данных из Object Storage
    • Подключение к Object Storage из VPC
    • Перенос данных в Yandex Managed Service for PostgreSQL с использованием Yandex Data Transfer
    • Загрузка данных в Yandex Managed Service for Greenplum® с помощью Yandex Data Transfer
    • Загрузка данных в Yandex Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Загрузка данных в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Обмен данными между Yandex Managed Service for ClickHouse® и Yandex Data Processing
    • Загрузка данных из Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Хостинг статического сайта на фреймворке Gatsby в Object Storage
    • Миграция базы данных из Managed Service for PostgreSQL в Object Storage
    • Обмен данными между Yandex Managed Service for ClickHouse® и Yandex Data Processing
    • Импорт данных из Yandex Managed Service for PostgreSQL в Yandex Data Processing с помощью Sqoop
    • Импорт данных из Yandex Managed Service for MySQL® в Yandex Data Processing с помощью Sqoop
    • Миграция данных из Yandex Object Storage в Yandex Managed Service for MySQL® с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL® в Yandex Object Storage
    • Выгрузка данных Greenplum® в холодное хранилище Yandex Object Storage
    • Загрузка данных из Яндекс Директ в витрину Yandex Managed Service for ClickHouse® с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Миграция данных из Elasticsearch в Yandex Managed Service for OpenSearch
    • Загрузка состояний Terraform в Object Storage
    • Блокировка состояний Terraform с помощью Managed Service for YDB
    • Визуализация данных Yandex Query
    • Публикация обновлений для игр
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veeam Backup
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Резервное копирование кластера Managed Service for Kubernetes в Object Storage
    • Разработка пользовательской интеграции в API Gateway
    • Сокращатель ссылок
    • Хранение журналов работы приложения
    • Разработка навыка Алисы и сайта с авторизацией
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Telegram-бота
    • Репликация логов в Object Storage с помощью Fluent Bit
    • Репликация логов в Object Storage с помощью Data Streams
    • Загрузка аудитных логов в SIEM ArcSight
    • Загрузка аудитных логов в SIEM Splunk
    • Создание сервера MLFlow для логирования экспериментов и артефактов
    • Работа с данными с помощью Yandex Query
    • Федеративные запросы к данным с помощью Query
    • Распознавание архива изображений в Vision OCR
    • Конвертация видео в GIF на Python
    • Автоматизация задач с помощью Managed Service for Apache Airflow™
    • Обработка файлов детализации в сервисе Yandex Cloud Billing
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Поиск событий Yandex Cloud в Yandex Query
    • Поиск событий Yandex Cloud в Object Storage
    • Создание внешней таблицы на базе таблицы из бакета с помощью конфигурационного файла
    • Миграция базы данных из Google BigQuery в Managed Service for ClickHouse®
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте бакет
  • Создайте ВМ
  • Настройте ВМ
  • Настройте Yandex Cloud CLI
  • Настройте сервисный аккаунт
  • Настройте AWS CLI
  • Создайте архив с изображениями
  • Подготовьте скрипт для распознавания и загрузки изображений
  • Настройте окружение
  • Создайте скрипт
  • Проверьте корректность распознавания
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Распознавание архива изображений в Vision OCR

Распознавание архива изображений в Yandex Vision OCR

Статья создана
Yandex Cloud
Улучшена
Danila N.
Обновлена 21 марта 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Создайте бакет
  • Создайте ВМ
  • Настройте ВМ
    • Настройте Yandex Cloud CLI
    • Настройте сервисный аккаунт
    • Настройте AWS CLI
  • Создайте архив с изображениями
  • Подготовьте скрипт для распознавания и загрузки изображений
    • Настройте окружение
    • Создайте скрипт
  • Проверьте корректность распознавания
  • Как удалить созданные ресурсы

С помощью сервисов Vision OCR и Yandex Object Storage можно организовать распознавание текста на изображениях и хранение архива исходных изображений и результатов распознавания.

Чтобы настроить инфраструктуру для распознавания текста с помощью Vision OCR и автоматической выгрузки результатов в Object Storage:

  1. Подготовьте облако к работе.
  2. Создайте бакет.
  3. Создайте виртуальную машину.
  4. Настройте ВМ.
  5. Создайте архив с изображениями.
  6. Подготовьте скрипт для распознавания и загрузки изображений.
  7. Проверьте корректность распознавания.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры для распознавания изображений и хранения данных входят:

  • Плата за вычислительные ресурсы и диски ВМ (см. тарифы Yandex Compute Cloud).
  • Плата за хранение данных в бакете и операции с ними (см. тарифы Object Storage).
  • Плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).
  • Плата за использование Vision OCR (см. тарифы для Vision OCR).

Создайте бакетСоздайте бакет

Чтобы создать бакет Object Storage для хранения исходных изображений и результатов распознавания:

Консоль управления
  1. В консоли управления выберите каталог, в котором будете выполнять операции.
  2. Выберите сервис Object Storage.
  3. Нажмите кнопку Создать бакет.
  4. Введите имя бакета в соответствии с правилами именования.
  5. В поле Доступ на чтение объектов выберите Ограниченный.
  6. В поле Класс хранилища выберите Холодное.
  7. Нажмите кнопку Создать бакет.

Создайте ВМСоздайте ВМ

Консоль управления
  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В блоке Образ загрузочного диска в поле Поиск продукта введите CentOS 7 и выберите публичный образ CentOS 7.

  3. В блоке Расположение выберите зону доступности, в которой будет создана ВМ. Если вы не знаете, какая зона доступности вам нужна, оставьте выбранную по умолчанию.

  4. В блоке Диски и файловые хранилища выберите тип диска SSD и задайте размер 19 ГБ.

  5. В блоке Вычислительные ресурсы перейдите на вкладку Своя конфигурация и укажите необходимую платформу, количество vCPU и объем RAM:

    • Платформа — Intel Cascade Lake.
    • vCPU — 2.
    • Гарантированная доля vCPU — 20%.
    • RAM — 2 ГБ.
  6. В блоке Сетевые настройки:

    • В поле Подсеть выберите сеть и подсеть, к которым нужно подключить ВМ. Если нужной сети или подсети еще нет, создайте их.
    • В поле Публичный IP-адрес оставьте значение Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
  7. В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:

    • В поле Логин введите имя пользователя. Не используйте имя root или другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.
    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

      Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.

  8. В блоке Общая информация задайте имя ВМ. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  9. Нажмите кнопку Создать ВМ.

  10. Дождитесь перехода ВМ в статус Running и сохраните ее публичный IP-адрес, он понадобится для SSH-подключения.

Настройте ВМНастройте ВМ

Настройте Yandex Cloud CLIНастройте Yandex Cloud CLI

  1. Подключитесь к ВМ по протоколу SSH.

  2. Установите на ВМ Yandex Cloud CLI и создайте профиль.

  3. Убедитесь, что Yandex Cloud CLI функционирует корректно:

    CLI

    На ВМ выполните команду:

    yc config list
    

    Результат:

    token: AQ...gs
    cloud-id: b1gdtdqb1900********
    folder-id: b1gveg9vude9********
    

    Сохраните идентификатор каталога — параметр folder-id, он понадобится для настройки сервисного аккаунта.

Настройте сервисный аккаунтНастройте сервисный аккаунт

CLI
  1. Создайте сервисный аккаунт:

    yc iam service-account create \
      --name <имя_сервисного_аккаунта> \
      --description "<описание_сервисного_аккаунта>"
    

    Где:

    • --name — имя сервисного аккаунта, например vision-sa.
    • --description — описание сервисного аккаунта, например this is vision service account.

    Результат:

    id: aje6aoc8hccu********
    folder_id: b1gv87ssvu49********
    created_at: "2022-10-12T14:04:43.198559512Z"
    name: vision-sa
    description: this is vision service account
    

    Сохраните идентификатор сервисного аккаунта — параметр id, он понадобится для дальнейшей настройки.

  2. Назначьте сервисному аккаунту роль editor:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
      --role editor \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Где:

    • --role — назначаемая роль.
    • --subject serviceAccount — идентификатор сервисного аккаунта.
  3. Создайте статический ключ доступа для сервисного аккаунта:

    yc iam access-key create \
      --service-account-id <идентификатор_сервисного_аккаунта> \
      --description "<описание_ключа>"
    

    Где:

    • --service-account-id — идентификатор сервисного аккаунта.
    • --description — описание ключа, например this key is for vision.

    Результат:

    access_key:
      id: ajen8d7fur27********
      service_account_id: aje6aoc8hccu********
      created_at: "2022-10-12T15:08:08.045280520Z"
      description: this key is for vision
      key_id: YC...li
    secret: YC...J5
    

    Сохраните следующие параметры, они понадобятся для конфигурации утилиты AWS CLI:

    • key_id — идентификатор статического ключа доступа.
    • secret — секретный ключ.
  4. Создайте авторизованный ключ для сервисного аккаунта:

    yc iam key create \
      --service-account-id <идентификатор_сервисного_аккаунта> \
      --output key.json
    

    Где:

    • --service-account-id — идентификатор сервисного аккаунта.
    • --output — имя файла с авторизованным ключом в формате JSON.

    Результат:

    id: aje3qc9pagb9********
    service_account_id: aje6aoc8hccu********
    created_at: "2022-10-13T12:53:04.810240976Z"
    key_algorithm: RSA_2048
    
  5. Создайте профиль Yandex Cloud CLI для работы от имени сервисного аккаунта, например vision-profile:

    yc config profile create vision-profile
    

    Результат:

    Profile 'vision-profile' created and activated
    
  6. Укажите в конфигурации профиля авторизованный ключ сервисного аккаунта:

    yc config set service-account-key key.json
    
  7. Получите IAM-токен для сервисного аккаунта:

    yc iam create-token
    

    Сохраните IAM-токен, он понадобится для отправки изображений в Vision OCR.

Настройте AWS CLIНастройте AWS CLI

  1. Обновите пакеты, установленные в операционной системе ВМ, для этого выполните команду:

    sudo yum update -y
    
  2. Установите AWS CLI:

    sudo yum install awscli -y
    
  3. Настройте AWS CLI:

    aws configure
    

    Укажите значения параметров:

    • AWS Access Key ID — идентификатор статического ключа доступа key_id, который вы получили при настройке сервисного аккаунта.
    • AWS Secret Access Key — секретный ключ secret, который вы получили при настройке сервисного аккаунта.
    • Default region name — ru-central1.
    • Default output format — json.
  4. Проверьте, что файл ~/.aws/credentials содержит правильные значения параметров key_id и secret:

    cat ~/.aws/credentials
    
  5. Проверьте, что файл ~/.aws/config содержит правильные значения параметров Default region name и Default output format:

    cat ~/.aws/config
    

Создайте архив с изображениямиСоздайте архив с изображениями

  1. Загрузите изображения с текстом в бакет.

    Совет

    Воспользуйтесь примером изображения дорожного знака, предупреждающего о пингвинах.

  2. Убедитесь, что изображения были загружены, указав в запросе имя бакета:

    aws --endpoint-url=https://storage.yandexcloud.net s3 ls s3://<имя_бакета>/
    
  3. Сохраните изображения из бакета на ВМ, например в директорию my_pictures:

    aws --endpoint-url=https://storage.yandexcloud.net s3 cp s3://<имя_бакета>/ my_pictures --recursive
    
  4. Запакуйте изображения в архив, например в my_pictures.tar:

    tar -cf my_pictures.tar my_pictures/*
    
  5. Удалите директорию с изображениями:

    rm -rfd my_pictures
    

Подготовьте скрипт для распознавания и загрузки изображенийПодготовьте скрипт для распознавания и загрузки изображений

Настройте окружениеНастройте окружение

  1. Установите репозиторий дополнительных пакетов epel:

    sudo yum install epel-release -y
    
  2. Установите пакет jq, который понадобится для обработки результатов из Vision OCR:

    sudo yum install jq -y
    
  3. Установите текстовый редактор nano:

    sudo yum install nano -y
    
  4. Задайте переменные окружения, необходимые для работы скрипта:

    export BUCKETNAME="<имя_бакета>"
    export FOLDERID="<идентификатор_каталога>"
    export IAMTOKEN="<IAM-токен>"
    

    Где:

    • BUCKETNAME — имя бакета.
    • FOLDERID — идентификатор каталога.
    • IAMTOKEN — IAM-токен, который вы получили при настройке сервисного аккаунта.

Создайте скриптСоздайте скрипт

Bash

В скрипте выполняются следующие этапы:

  1. Создаются необходимые директории.
  2. Распаковывается архив с изображениями.
  3. Последовательно обрабатываются все изображения:
    1. Изображение кодируется по стандарту Base64.
    2. Формируется тело запроса для конкретного изображения.
    3. Изображение отправляется в POST-запросе в Vision OCR для распознавания.
    4. Полученный результат записывается в файл output.json в формате JSON.
    5. Из файла output.json выделяется распознанный текст и записывается в текстовый файл.
  4. Полученные текстовые файлы запаковываются в архив.
  5. Архив с текстовыми файлами загружается в Object Storage.
  6. Удаляются служебные файлы.

Для удобства в текст скрипта добавлены комментарии к каждому этапу.

Чтобы реализовать скрипт:

  1. Создайте файл, например vision.sh, и откройте его в текстовом редакторе nano:

    sudo nano vision.sh
    
  2. Скопируйте в файл vision.sh текст скрипта на Bash:

    #!/bin/bash
    
    # Создать необходимые директории.
    echo "Creating directories..."
    
    # Создать директорию для распознанного текста.
    mkdir my_pictures_text
    
    # Распаковать архив с изображениями в созданную директорию.
    echo "Extract pictures in my_pictures directory..."
    tar -xf my_pictures.tar
    
    # Распознать изображения из архива.
    FILES=my_pictures/*
    for f in $FILES
    # В цикле для каждого файла из директории произвести следующие действия:
    do
       # Закодировать изображение по стандарту Base64 для отправки в Vision OCR.
       CODEIMG=$(base64 -i $f | cat)
    
       # Создать файл body.json, который будет отправляться в POST-запросе в Vision OCR.
       cat <<EOF > body.json
    {
    "mimeType": "JPEG",
    "languageCodes": ["*"],
    "model": "page",
    "content": "$CODEIMG"
    }
    EOF
    # Отправить изображение в Vision для распознавания и записать результат в файл output.json.
    echo "Processing file $f in Vision..."
    curl --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer ${IAMTOKEN}" \
      --header "x-data-logging-enabled: true" \
      --header "x-folder-id: ${FOLDERID}" \
      --data '@body.json' \
      https://ocr.api.cloud.yandex.net/ocr/v1/recognizeText \
      --output output.json
    
    # Получить имя файла с изображением для дальнейшей подстановки.
    IMAGE_BASE_NAME=$(basename -- "$f")
    IMAGE_NAME="${IMAGE_BASE_NAME%.*}"
    
    # Получить из файла output.json текстовые данные и записать их в TXT-файл с таким же именем, как у файла с изображением.
    cat output.json | jq -r '.result[].blocks[].lines[].text' | awk -v ORS=" " '{print}' > my_pictures_text/$IMAGE_NAME".txt"
    done
    
    # Запаковать содержимое директории с текстовыми файлами в архив.
    echo "Packing text files to archive..."
    tar -cf my_pictures_text.tar my_pictures_text
    
    # Отправить архив с текстовыми файлами в бакет.
    echo "Sending archive to Object Storage Bucket..."
    aws --endpoint-url=https://storage.yandexcloud.net s3 cp my_pictures_text.tar s3://$BUCKETNAME/ > /dev/null
    
    # Удалить служебные файлы.
    echo "Cleaning up..."
    rm -f body.json
    rm -f output.json
    rm -rfd my_pictures
    rm -rfd my_pictures_text
    rm -r my_pictures_text.tar
    
  3. Установите разрешения на запуск скрипта:

    sudo chmod 755 vision.sh
    
  4. Запустите скрипт:

    ./vision.sh
    

Проверьте корректность распознаванияПроверьте корректность распознавания

Консоль управления
  1. В консоли управления Yandex Cloud выберите каталог, в котором находится бакет с результатами распознавания.
  2. Выберите сервис Object Storage.
  3. Откройте бакет с результатами распознавания.
  4. Убедитесь, что в бакете появился архив my_pictures_text.tar.
  5. Скачайте и распакуйте архив.
  6. Убедитесь что текст в файлах <имя_изображения>.txt совпадает с текстом на соответствующих изображениях.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите все объекты в бакете.
  2. Удалите бакет.
  3. Удалите ВМ.
  4. Удалите статический публичный IP-адрес, если вы его зарезервировали.

Была ли статья полезна?

Предыдущая
Федеративные запросы к данным с помощью Query
Следующая
Конвертация видео в GIF на Python
Проект Яндекса
© 2025 ООО «Яндекс.Облако»