Поделиться через


Установка и запуск контейнеров

Следующее содержимое относится к:checkmarkверсия 3.0 (GA)checkmarkверсия 3.1 (GA)checkmarkверсия 4.0 (GA)

Аналитика документов Azure — это служба ИИ Azure, которая позволяет создавать автоматизированное программное обеспечение для обработки данных с помощью технологии машинного обучения. Аналитика документов позволяет выявлять и извлекать текст, пары "ключ-значение", метки выделения, табличные данные и многое другое из документов. Результаты предоставляются в виде структурированных данных, которые .. /включает связи в исходном файле. Контейнеры обрабатывают только предоставленные им данные и используют только те ресурсы, к которых они могут получить доступ. Контейнеры не могут обрабатывать данные из других регионов.

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

  • Read и Layout модели поддерживаются контейнерами Document Intelligence версии 4.0.

  • Модели чтения, макета, документа идентификатора, квитанции и счета поддерживаются контейнерами Аналитики документов версии 3.1.

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

Поддерживаемые версии

Поддержка контейнеров в настоящее время доступна в версии v3.0: 2022-08-31 (GA) Аналитики документов для всех моделей, для чтения, макета, v3.1 2023-07-31 (GA) документа идентификатора, квитанции и счета, а v4.0 2024-11-30 (GA) также для моделей чтения и макета:

Необходимые компоненты

Чтобы приступить к работе, требуется активная учетная запись Azure. Если ее нет, можно создать бесплатную учетную запись.

Для использования контейнеров аналитики документов также требуется следующее:

Обязательное поле Характер использования
Знакомство с Docker У вас должно быть базовое понимание концепций Docker, таких как реестры, репозитории, контейнеры и образы контейнеров, а также знание базовой dockerтерминологии и команд.
Модуль Docker установлен
  • На главном компьютере должен быть установлен модуль Docker. Docker предоставляет пакеты, которые настраивают среду Docker в ОС macOS, Windows и Linux. Ознакомьтесь с общими сведениями о Docker и контейнерах.
  • Docker нужно настроить таким образом, чтобы контейнеры могли подключать и отправлять данные о выставлении счетов в Azure.
  • В Windows для поддержки контейнеров Linux также должен быть настроен Docker.
Ресурс аналитики документов Однослужба Azure AI Document Intelligence или ресурс с несколькими службами в портал Azure. Чтобы использовать контейнеры, необходимо иметь соответствующий ключ и универсальный код ресурса (URI) конечной точки. Оба значения доступны на странице портал Azure ключей аналитики документов и конечной точки:
  • {FORM_RECOGNIZER_KEY}: один из двух доступных ключей ресурсов.
  • {FORM_RECOGNIZER_ENDPOINT_URI}: конечная точка для ресурса, используемая для трассировки сведений о выставлении счетов.
Необязательно Характер использования
Azure CLI (интерфейс командной строки) Azure CLI позволяет использовать набор онлайн-команд для создания ресурсов Azure и управления ими. Интерфейс доступен для установки в средах Windows, macOS и Linux и может запускаться в контейнере Docker и в Azure Cloud Shell.

Требования к компьютеру узла

Хост — это компьютер на основе архитектуры x64, на котором выполняется контейнер Docker. Это может быть компьютер в локальной среде или служба размещения Docker в Azure, включая следующие решения:

Примечание.

Контейнер Studio нельзя развернуть и запустить в службе Azure Kubernetes. Контейнер Studio поддерживается только для запуска на локальных компьютерах.

Требования к контейнеру и рекомендации

Обязательные вспомогательные контейнеры

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

Контейнер функций Сопровождение контейнеров
Читай Не требуется
Макет Не требуется
Визитная карточка Читай
Общий документ Макет
Счет-фактура Макет
Квитанция Чтение или макет
Удостоверение Читай
Пользовательский шаблон Макет

Примечание.

Минимальные и рекомендуемые значения основаны на ограничениях Docker, а не на ресурсах узла.

Контейнеры аналитики документов
Контейнер Минимум Рекомендуется
Read 8 ядра, 10 ГБ памяти 8 ядра, 24 ГБ памяти
Layout 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти
Business Card 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти
General Document 8 ядра, 12 ГБ памяти 8 ядра, 24 ГБ памяти
ID Document 8 ядра, 8 ГБ памяти 8 ядра, 24 ГБ памяти
Invoice 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти
Receipt 8 ядра, 11 ГБ памяти 8 ядра, 24 ГБ памяти
Custom Template 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти
  • Частота каждого ядра должна быть минимум 2,6 ГГц.
  • Ядро и память соответствуют параметрам --cpus и --memory, которые используются как часть команды docker compose или docker run.

Совет

Используйте команду docker images, чтобы получить список скачанных образов контейнеров. Например, следующая команда возвращает таблицу со списком идентификаторов, репозиториев и тегов для каждого скачанного образа контейнера:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Запустите контейнер с помощью команды docker-compose up.

  • Замените значения {ENDPOINT_URI} и {API_KEY} на URI конечной точки ресурса и ключ со страницы ресурса Azure.

    Снимок экрана страницы ключей и конечной точки портала Azure.

  • Убедитесь, что EULA значение установлено на accept.

  • Значения EULA, Billing, и ApiKey должны быть указаны; в противном случае контейнер не удастся запустить.

Внимание

Ключи используются для доступа к ресурсу Аналитики документов. Не предоставляйте доступ к ключам другим пользователям. Храните их защищенным образом, например в Azure Key Vault. Также рекомендуется регулярно обновлять эти ключи. Для вызова API необходим только один ключ. При повторном создании первого ключа можно использовать второй ключ для продолжения доступа к службе.

Следующий пример кода является автономным docker compose примером для запуска контейнера макета аналитики документов. С помощью docker compose используйте файл YAML для настройки сервисов вашего приложения. Затем с помощью команды docker-compose up вы создаете и запускаете все службы из своей конфигурации. Введите значения {FORM_RECOGNIZER_ENDPOINT_URI} и {FORM_RECOGNIZER_KEY} для вашего экземпляра контейнера layout.

version: "3.9"
services:
  azure-form-recognizer-layout:
    container_name: azure-form-recognizer-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-4.0
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - apiKey={FORM_RECOGNIZER_KEY}
    ports:
      - "5000:5000"
    networks:
      - ocrvnet
networks:
  ocrvnet:
    driver: bridge

Теперь можно запустить службу с помощью команды docker compose.

docker-compose up

Запустите контейнер с помощью команды docker-compose up.

  • Замените значения {ENDPOINT_URI} и {API_KEY} на URI конечной точки ресурса и ключ со страницы ресурса Azure.

    Снимок экрана страницы ключей и конечной точки портала Azure.

  • Убедитесь, что EULA значение установлено на accept.

  • Значения EULA, Billing, и ApiKey должны быть указаны; в противном случае контейнер не удастся запустить.

Внимание

Ключи используются для доступа к ресурсу Аналитики документов. Не предоставляйте доступ к ключам другим пользователям. Храните их защищенным образом, например в Azure Key Vault. Также рекомендуется регулярно обновлять эти ключи. Для вызова API необходим только один ключ. При повторном создании первого ключа можно использовать второй ключ для продолжения доступа к службе.

Следующий пример кода является автономным docker compose примером для запуска контейнера макета аналитики документов. С помощью docker compose используйте файл YAML для настройки сервисов вашего приложения. Затем с помощью команды docker-compose up вы создаете и запускаете все службы из своей конфигурации. Введите значения {FORM_RECOGNIZER_ENDPOINT_URI} и {FORM_RECOGNIZER_KEY} для вашего экземпляра контейнера layout.

version: "3.9"
services:
  azure-form-recognizer-layout:
    container_name: azure-form-recognizer-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.1
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - apiKey={FORM_RECOGNIZER_KEY}
    ports:
      - "5000:5000"
    networks:
      - ocrvnet
networks:
  ocrvnet:
    driver: bridge

Теперь можно запустить службу с помощью команды docker compose.

docker-compose up

Создать файл docker compose

  1. Назовите этот файл docker-compose.yml.

  2. Следующий пример кода является автономным docker compose примером для совместного запуска контейнеров шаблонов "Document Intelligence Layout", "Studio" и пользовательских шаблонов. С помощью docker compose используйте файл YAML для настройки сервисов вашего приложения. Затем с помощью команды docker-compose up вы создаете и запускаете все службы из своей конфигурации.

version: '3.3'
services:
  nginx:
    image: nginx:alpine
    container_name: reverseproxy
    depends_on:
      - layout
      - custom-template
    volumes:
      - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
    ports:
      - "5000:5000"
  layout:
    container_name: azure-cognitive-service-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest
    environment:
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  custom-template:
    container_name: azure-cognitive-service-custom-template
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/custom-template-3.0:latest
    restart: always
    depends_on:
      - layout
    environment:
      AzureCognitiveServiceLayoutHost: http://azure-cognitive-service-layout:5000
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  studio:
    container_name: form-recognizer-studio
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/studio:3.0
    environment:
      ONPREM_LOCALFILE_BASEPATH: /onprem_folder
      STORAGE_DATABASE_CONNECTION_STRING: /onprem_db/Application.db
    volumes:
      - type: bind
        source: ${FILE_MOUNT_PATH} # path to your local folder
        target: /onprem_folder
      - type: bind
        source: ${DB_MOUNT_PATH} # path to your local folder
        target: /onprem_db
    ports:
      - "5001:5001"
    user: "1000:1000" # echo $(id -u):$(id -g)

Создать файл docker compose

  1. Назовите этот файл docker-compose.yml.

  2. Следующий пример кода является автономным docker compose примером для совместного запуска контейнеров шаблонов "Document Intelligence Layout", "Studio" и пользовательских шаблонов. С помощью docker compose используйте файл YAML для настройки сервисов вашего приложения. Затем с помощью команды docker-compose up вы создаете и запускаете все службы из своей конфигурации.

version: '3.3'
services:
  nginx:
    image: nginx:alpine
    container_name: reverseproxy
    depends_on:
      - layout
      - custom-template
    volumes:
      - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
    ports:
      - "5000:5000"
  layout:
    container_name: azure-cognitive-service-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.1:latest
    environment:
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  custom-template:
    container_name: azure-cognitive-service-custom-template
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/custom-template-3.1:latest
    restart: always
    depends_on:
      - layout
    environment:
      AzureCognitiveServiceLayoutHost: http://azure-cognitive-service-layout:5000
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  studio:
    container_name: form-recognizer-studio
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/studio:3.1
    environment:
      ONPREM_LOCALFILE_BASEPATH: /onprem_folder
      STORAGE_DATABASE_CONNECTION_STRING: /onprem_db/Application.db
    volumes:
      - type: bind
        source: ${FILE_MOUNT_PATH} # path to your local folder
        target: /onprem_folder
      - type: bind
        source: ${DB_MOUNT_PATH} # path to your local folder
        target: /onprem_db
    ports:
      - "5001:5001"
    user: "1000:1000" # echo $(id -u):$(id -g)

Контейнеры пользовательского шаблона и макета могут использовать очереди службы хранилища Azure или очереди в памяти. Переменные среды Storage:ObjectStore:AzureBlob:ConnectionString и queue:azure:connectionstring должны быть заданы только в том случае, если вы используете очереди хранилища Azure. При локальном запуске удалите эти переменные.

Убедитесь, что служба запущена.

Необходимо убедиться, что служба запущена и работает. Выполните эти команды в оболочке Ubuntu.

$cd <folder containing the docker-compose file>

$source .env

$docker-compose up

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

Настройка Обязательное поле Описание:
EULA Да Пример принятия лицензии: Eula=принять
Выставление счетов Да URI конечной точки выставления счетов ресурса FR
Ключ API (ApiKey) Да Ключ конечной точки ресурса FR
Очередь:Azure:ConnectionString Нет Строка подключения очереди Azure
Storage:ObjectStore:AzureBlob:ConnectionString Нет Строка подключения BLOB-объектов Azure
HealthCheck:MemoryUpperboundInMB Нет Порог памяти для создания отчетов о неработоспособных действиях. По умолчанию: то же самое, что и рекомендуемая память
Время хранения в минутах Нет TTL длительность удаления всех промежуточных и конечных файлов. По умолчанию: два дня может TTL быть задано от пяти минут до семи дней.
Задача:MaxRunningTimeSpanInMinutes Нет Максимальное время выполнения для обработки запроса в качестве времени ожидания. Значение по умолчанию: 60 минут
HTTP_PROXY_BYPASS_URLS (URL-адреса для обхода HTTP-прокси) Нет Укажите URL-адреса для обхода прокси-сервера: HTTP_PROXY_BYPASS_URLS = abc.com, xyz.com
AzureCognitiveServiceReadHost (только контейнеры Receipt и IdDocument) Да Укажите пример URI контейнера чтения:AzureCognitiveServiceReadHost=http://onprem-frread:5000
AzureCognitiveServiceLayoutHost (только для контейнеров документов и счетов-фактур) Да Укажите URI контейнера макета. Пример: AzureCognitiveServiceLayoutHost=http://onprem-frlayout:5000

Обучение модели с помощью Document Intelligence Studio

  • Соберите по крайней мере пять форм одного типа. Эти данные используются для обучения модели и тестирования формы. Можно использовать образец набора данных (загрузите и распакуйте sample_data.zip).

  • Убедившись, что контейнеры запущены, откройте браузер и перейдите к конечной точке, в которой развернуты контейнеры. Если это развертывание производится на вашем локальном компьютере, конечная точка — это [http://localhost:5001](http://localhost:5001).

  • Выберите элемент пользовательской модели извлечения.

  • Create project Выберите параметр.

  • Укажите имя проекта и при необходимости описание

  • На этапе "Настройка ресурса" укажите конечную точку для вашей пользовательской модели шаблона. Если вы развернули контейнеры на локальном компьютере, используйте этот URL-адрес [http://localhost:5000](http://localhost:5000).

  • Укажите подпапку, в которой располагаются данные обучения, внутри папки файлов.

  • Наконец, создайте проект

Теперь у вас должен быть созданный проект, готовый к маркировке. Отправьте данные обучения и начните работу с метками. Если вы не знакомы с метками, ознакомьтесь со сборкой и обучением пользовательской модели.

Обучение с помощью API

Если вы планируете вызывать API для непосредственного обучения модели, для API обучения пользовательской модели по шаблону требуется ZIP-файл, закодированный в Base64, содержащий данные вашего проекта маркировки. Вы можете опустить PDF-файлы или файлы изображений и отправлять только JSON-файлы.

Как только ваш набор данных будет промаркирован, а файлы *.ocr.json, *.labels.json и fields.json добавлены в архив ZIP, используйте команды PowerShell для создания строки в кодировке Base64.

$bytes = [System.IO.File]::ReadAllBytes("<your_zip_file>.zip")
$b64String = [System.Convert]::ToBase64String($bytes, [System.Base64FormattingOptions]::None)

Используйте API модели сборки для отправки запроса.


  POST http://localhost:5000/formrecognizer/documentModels:build?api-version=2023-07-31

  {
      "modelId": "mymodel",
      "description": "test model",
      "buildMode": "template",

      "base64Source": "<Your base64 encoded string>",
      "tags": {
         "additionalProp1": "string",
         "additionalProp2": "string",
         "additionalProp3": "string"
       }
  }

Убедитесь, что сервер запущен.

Есть несколько способов проверить, что контейнер запущен:

  • Контейнер предоставляет домашнюю страницу \ в качестве визуальной проверки того, что контейнер работает.

  • Вы можете открыть свой любимый веб-браузер и перейти к внешнему IP-адресу и открытому порту соответствующего контейнера. Используйте УКАЗАННЫе URL-адреса запроса для проверки запуска контейнера. Перечисленные примеры URL-адресов запросов являются http://localhost:5000, но конкретный контейнер может отличаться. Помните, что вы подключаетесь к внешнему IP-адресу вашего контейнера и открытому порту.

    Запросить URL-адрес Характер использования
    http:// localhost:5000/ Контейнер предоставляет домашнюю страницу.
    http:// localhost:5000/ready GET-запрос подтверждает, что контейнер готов выполнить запрос к модели. Этот запрос может использоваться для проб активности и готовности Kubernetes.
    http:// localhost:5000/status Запрос с помощью команды GET проверяет, действителен ли ключ API, используемый для запуска контейнера, без запроса конечной точки. Этот запрос может использоваться для проб активности и готовности Kubernetes.
    http:// localhost:5000/swagger Контейнер предоставляет полный набор документации по конечным точкам и функции Попробовать. Эта функция позволяет ввести параметры в веб-форму HTML и создать запрос без необходимости писать код. После возврата запроса предоставляется пример команды CURL, чтобы продемонстрировать необходимые заголовки HTTP и формат текста.

Снимок экрана: страница приветствия контейнеров Azure.

Остановка контейнеров

Чтобы остановить контейнеры, используйте следующую команду.

docker-compose down

Выставление счетов

Контейнеры аналитики документов отправляют сведения о выставлении счетов в Azure с помощью ресурса Аналитики документов в учетной записи Azure.

Запросы к контейнеру рассчитываются по тарифному плану ресурса Azure, используемого для API Key. Расчет стоимости производится для каждого экземпляра контейнера, используемого для обработки ваших документов и изображений.

Если вы получите следующую ошибку: Контейнер не находится в допустимом состоянии. Проверка подписки не удалась с состоянием 'OutOfQuota'; ключ API исчерпал квоту. Это индикатор того, что ваши контейнеры не могут обмениваться данными с конечной точкой выставления счетов.

Подключение к Azure

Для запуска контейнера необходимо указать значения аргументов, касающихся выставления счетов. Эти значения обеспечивают подключение контейнера к конечной точке выставления счетов. Контейнер сообщает об использовании примерно каждые 10—15 минут. Если контейнер не подключится к Azure в течение допустимого периода времени, контейнер будет продолжать работать, но не будет обслуживать запросы, пока не будет восстановлена конечная точка выставления счетов. Попытки подключения выполняются 10 раз на протяжении одинакового интервала времени (10–15 минут). Если контейнеру не удается подключиться к конечной точке выставления счетов в течение 10 попыток, он прекращает обработку запросов. См. часто задаваемые вопросы о контейнере ИИ Azure, чтобы получить пример информации, отправляемой в Корпорацию Майкрософт для выставления счетов.

Аргументы для выставления счетов

Команда docker-compose up запускает контейнер, когда все три из следующих параметров предоставляются допустимыми значениями:

Вариант Описание:
ApiKey Ключ ресурса Azure AI Foundry, используемого для отслеживания сведений о выставлении счетов.
Значение этого параметра должно быть задано в качестве ключа для подготовленного ресурса, указанного в Billing.
Billing Конечная точка ресурса Azure AI Foundry, используемая для отслеживания сведений о выставлении счетов.
Этому параметру следует присвоить URI конечной точки подготовленного ресурса Azure.
Eula Указывает, что вы приняли условия лицензии для контейнера.
Для этого параметра следует задать значение accept.

Дополнительные сведения об этих параметрах см. в статье Настройка контейнеров.

Итоги

Вот и все! В этой статье вы узнали основные понятия и рабочие процессы для скачивания, установки и запуска контейнеров аналитики документов. Сводка:

  • Аналитика документов предоставляет семь контейнеров Linux для Docker.
  • Образы контейнеров загружаются из mcr.
  • Образы контейнеров выполняются в Docker.
  • При создании экземпляра контейнера необходимо указать данные для выставления счетов.

Внимание

Контейнеры ИИ Azure не лицензируются для запуска без подключения к Azure для измерения. Клиентам необходимо разрешить контейнерам всегда обмениваться данными о выставлении счетов со службой измерения. Контейнеры ИИ Azure не отправляют данные клиента (например, изображение или текст, анализируемый) в корпорацию Майкрософт.

Следующие шаги