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


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

Это содержимое относится к:флажок версии 3.0 (GA)флажокверсии 3.1 (GA)

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

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

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

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

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

Поддержка контейнеров в настоящее время доступна в версии v3.0: 2022-08-31 (GA) Аналитики документов для всех моделей и v3.1 2023-07-31 (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.

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

Узел — это 64-разрядный компьютер, на котором выполняется контейнер 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 для значения задано значение.

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

Внимание

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

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

version: "3.9"
services:
  azure-form-recognizer-read:
    container_name: azure-form-recognizer-read
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/read-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

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

  2. Следующий пример кода — это автономный docker compose пример для запуска контейнеров шаблонов аналитики документов, Студии и пользовательских шаблонов. При работе в 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

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

  2. Следующий пример кода — это автономный docker compose пример для запуска контейнеров шаблонов аналитики документов, Студии и пользовательских шаблонов. При работе в 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=accept
Выставление счетов Да URI конечной точки выставления счетов ресурса FR
ApiKey Да Ключ конечной точки ресурса FR
Очередь:Azure:ConnectionString No Строка подключения очереди Azure
Storage:ObjectStore:AzureBlob:ConnectionString No Строка подключения BLOB-объектов Azure
HealthCheck:MemoryUpperboundInMB No Порог памяти для создания отчетов о неработоспособных действиях. По умолчанию: то же самое, что и рекомендуемая память
StorageTimeToLiveInMinutes No TTL длительность удаления всех промежуточных и конечных файлов. По умолчанию: два дня может TTL быть задано от пяти минут до семи дней.
Task:MaxRunningTimeSpanInMinutes No Максимальное время выполнения для обработки запроса в качестве времени ожидания. Значение по умолчанию: 60 минут
HTTP_PROXY_BYPASS_URLS No Укажите URL-адреса для обхода прокси-сервера: HTTP_PROXY_BYPASS_URLS = abc.com, xyz.com
AzureCognitiveServiceReadHost (только для получения, контейнеров 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. Выставление счетов вычисляется для каждого экземпляра контейнера, используемого для обработки документов и изображений.

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

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

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

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

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

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

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

Итоги

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

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

Внимание

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

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