Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Веб-сайт на базе 1С-Битрикс
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage через CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage через Bacula
    • Резервное копирование в Object Storage через Veritas Backup Exec
    • Оцифровка архива в Yandex Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных SQL Server
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
  • Построение Data Platform
    • Все руководства
    • Синхронизация данных из MySQL с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в MySQL
    • Настройка управляемой базы данных в кластере ClickHouse для Graphite
    • Обмен данными между Yandex Managed Service for ClickHouse и Yandex Data Proc
    • Импорт базы данных в Yandex Data Proc с использованием Sqoop
    • Использование Confluent Schema Registry с Yandex Managed Service for Apache Kafka®
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Миграция данных в Yandex Managed Service for Apache Kafka®
    • Перенос коллекций из MongoDB в Yandex Managed Service for MongoDB
    • Миграция базы данных в Yandex Managed Service for SQL Server
    • Перенос данных из PostgreSQL в ClickHouse с помощью Yandex Data Transfer
    • Настройка Kafka Connect для работы с кластером Yandex Managed Service for Apache Kafka®
    • Настройка Yandex Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Миграция в Yandex Managed Service for Elasticsearch с помощью Reindex API
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
  • Windows в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая маршрутизация
    • Все руководства
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Настройка сети для Yandex Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью SQL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
  1. Архив данных
  2. Оцифровка архива в Yandex Vision

Оцифровка архива в Yandex Vision

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте и настройте виртуальную машину
    • Создайте виртуальную машину:
    • Настройте Yandex CLI
    • Настройте сервисный аккаунт
  • Настройте AWS CLI
  • Настройте доступ в Object Storage
  • Создайте архив с изображениями
  • Создайте скрипт для оцифровки и загрузки изображений
    • Подготовка
    • Написание скрипта
  • Проверьте корректность оцифровки
  • Удалите созданные облачные ресурсы

Yandex Vision — сервис компьютерного зрения для анализа изображений.

С помощью этой инструкции вы выполните:

  • настройку окружения Yandex Cloud для работы с Yandex Vision;
  • распознавание текста в изображениях с помощью Yandex Vision;
  • загрузите результат на Yandex Object Storage.
  1. Подготовьте облако к работе.
  2. Создайте и настройте виртуальную машину.
  3. Настройте AWS CLI.
  4. Настройте доступ в Object Storage.
  5. Создайте архив с изображениями.
  6. Создайте скрипт для оцифровки и загрузки изображений.
  7. Проверьте корректность оцифровки.
  8. Удалите созданные облачные ресурсы.

Подготовьте облако к работе

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

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

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

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

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

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

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

Создайте и настройте виртуальную машину

Создайте виртуальную машину:

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

  2. В поле Имя введите имя виртуальной машины.

    • Длина — от 3 до 63 символов.
    • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
    • Первый символ — буква. Последний символ — не дефис.
  3. Выберите зону доступности, в которой должна находиться виртуальная машина.

  4. В блоке Образы из Cloud Marketplace выберите образ CentOS 7.

  5. В блоке Диски выберите:

    • SSD
    • 19 Гб
  6. В блоке Вычислительные ресурсы:

    • Выберите платформу виртуальной машины.
    • Укажите необходимое количество vCPU и объем RAM:
      • Платформа — Intel Cascade Lake.
      • Гарантированная доля vCPU — 20%.
      • vCPU — 2.
      • RAM — 2 ГБ.
  7. В блоке Сетевые настройки выберите сеть и подсеть, к которым нужно подключить виртуальную машину. Если нужной сети или подсети еще нет, вы можете создать их на странице создания виртуальной машины.

  8. В поле Публичный адрес оставьте значение Автоматически, чтобы назначить виртуальной машине случайный внешний IP-адрес из пула Yandex Cloud. Чтобы внешний IP-адрес не изменялся после остановки виртуальной машины, сделайте его статическим.

  9. Укажите данные для доступа на виртуальную машину:

    • В поле Логин введите имя пользователя.

    • В поле SSH-ключ вставьте содержимое файла открытого ключа.

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

    Внимание

    IP-адрес и имя хоста (FQDN) для подключения к машине будут назначены ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к виртуальной машине из интернета.

  10. Нажмите кнопку Создать ВМ.

Создание виртуальной машины может занять несколько минут.

Настройте Yandex CLI

  1. Зайдите на виртуальную машину по SSH.
  2. Установите YC CLI по инструкции:
    1. Выполните установку.
    2. Выполните инициализацию.
  3. Убедитесь, что YC CLI функционирует корректно:
    yc config list
    
    Результатом должен быть вывод настроек, произведенных на этапе конфигурации.

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

  1. Создайте сервисный аккаунт, назовите его, например vision:

    yc iam service-account create --name vision --description "this is vision service account"
    
  2. Узнайте идентификатор каталога по инструкции.

  3. Узнайте идентификатор вашего сервисного аккаунта, подставив соответствующий идентификатор каталога:

    yc iam service-account --folder-id <FOLDER-ID>  get vision
    

    На выводе вы получите одну из строк вида:

    id: <SERVICE-ACCOUNT-ID>
    
  4. Настройте роль editor для вашего сервисного аккаунта, подставив соответствующее значение:

    yc resource-manager folder add-access-binding default --role editor --subject serviceAccount:<SERVICE-ACCOUNT-ID>
    
  5. Создайте статический ключ доступа для вашего сервисного аккаунта:

    yc iam access-key create --service-account-name vision --description "this key is for vision"
    

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

    • key_id
    • secret
  6. Получите IAM-токен для сервисного аккаунта с помощью CLI по инструкции:

    yc iam key create --service-account-name vision --output key.json
    yc config profile create vision-profile
    yc config set service-account-key key.json
    yc iam create-token
    

    Сохраните значение IAM-токена, полученного после ввода команды yc iam create-token. В дальнейшем это значение понадобится для пересылки изображений в Vision.

Настройте AWS CLI

  1. Установите yum репозиторий:
    sudo yum install epel-release -y
    
  2. Установите pip:
    sudo yum install python-pip -y
    
  3. Установите AWS CLI:
    sudo pip install awscli --upgrade
    
  4. Настройте AWS CLI:
    aws configure
    
    • AWS Access Key ID - это значение key_id из предыдущего раздела пункта "Создайте статический ключ доступа для сервисного аккаунта".
    • AWS Secret Access Key - это значение secret там же.
    • Default region name - введите ru-central1.
    • Default output format - введите json.
  5. Проверьте, что файл ~/.aws/credentials содержит правильные значения:
    cat ~/.aws/credentials
    
  6. Проверьте, что файл ~/.aws/config содержит правильные значения:
    cat ~/.aws/config
    

Настройте доступ в Object Storage

  1. Создайте Object Storage бакет по инструкции:

    • Максимальный размер оставьте по умолчанию.
    • Доступ к бакету - Ограниченный.
    • Класс хранилища - Холодное.
  2. Зайдите в консоль Yandex Cloud и убедитесь, что бакет отображается в списке:

    https://console.cloud.yandex.ru/folders/<FOLDER-ID>/storage
    

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

  1. Загрузите изображения с текстом в ваш бакет по инструкции.
  2. Убедитесь, что изображения были загружены:
    aws --endpoint-url=https://storage.yandexcloud.net s3 ls s3://<BUCKET-NAME>/
    
    <BUCKET-NAME> - название вашего бакета
  3. Скачайте изображения на виртуальную машину, например, в папку my_pictures:
    aws --endpoint-url=https://storage.yandexcloud.net s3 cp s3://<BUCKET-NAME>/ my_pictures --recursive
    
  4. Запакуйте изображения в архив с названием, например my_pictures:
    tar -cf my_pictures.tar my_pictures/*
    
  5. Удалите папку с изображениями:
    rm -rfd my_pictures
    

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

Подготовка

  1. Установите пакет jq, который понадобится в скрипте для обработки результатов из Vision:
    yum install jq -y
    
  2. Создайте переменные окружения, необходимые для работы скрипта:
    export BUCKETNAME="<BUCKET-NAME>"
    export FOLDERID="<FOLDER-ID>"
    export IAMTOKEN="<IAM-TOKEN>"
    
    • BUCKETNAME - название вашего бакета.
    • FOLDERID - название каталога.
    • IAMTOKEN- IAM-токен полученный в этом разделе.

Написание скрипта

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

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

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

  1. Создайте файл, c произвольныйм названием, например vision.sh. Откройте это файл в текстовом редакторе, например vi:
    vi vision.sh
    
  2. Скопируйте туда скрипт:
    #!/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.
        CODEIMG=$(base64 -i $f | cat)
    
        # Создайте файл body.json, который будет отправляться в POST запросе на сервер Vision.
        cat <<EOF > body.json
    {
    "folderId": "$FOLDERID",
    "analyze_specs": [{
    "content": "$CODEIMG",
    "features": [{
    "type": "TEXT_DETECTION",
    "text_detection_config": {
    "language_codes": ["en","ru"]
    }
    }]
    }]
    }
    EOF
        # Отправьте картинку на сервер Vision для обработки и запишите результат в файл output.json.
        echo "Processing file $f in Vision..."
        curl -X POST --silent \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer ${IAMTOKEN}" \
        -d '@body.json' \
        https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
    
        # Получите название картинки для дальнейшей подстановки.
        IMAGE_BASE_NAME=$(basename -- "$f")
        IMAGE_NAME="${IMAGE_BASE_NAME%.*}"
    
        # Получите из JSON файла с результатом обработки текстовые данные и запишите их в текстовый файл с названием аналогичным файлу картинки, изменив расширение на ".txt".
        cat output.json | jq -r '.results[].results[].textDetection.pages[].blocks[].lines[].words[].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. Зайдите в Vision в консоли Yandex Cloud.
  2. Убедитесь, что в вашем бакете появился архив my_pictures_text.tar.
  3. Скачайте и распакуйте архив.
  4. Убедитесь что текст в файле <имя изображения>.txt совпадает с текстом на соответствующем изображении.

Удалите созданные облачные ресурсы

Если вам больше не нужны облачные ресурсы, созданные в процессе оцифровки архива:

  • Удалите виртуальную машину.
  • Удалите статический IP адрес, если он был вами создан.
  • Удалите бакет Object Storage.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте и настройте виртуальную машину
  • Создайте виртуальную машину:
  • Настройте Yandex CLI
  • Настройте сервисный аккаунт
  • Настройте AWS CLI
  • Настройте доступ в Object Storage
  • Создайте архив с изображениями
  • Создайте скрипт для оцифровки и загрузки изображений
  • Подготовка
  • Написание скрипта
  • Проверьте корректность оцифровки
  • Удалите созданные облачные ресурсы