配置文档智能容器

目前,文档智能版本 2022-08-31 (GA) 提供对所有模型的容器支持,文档智能版本 2023-07-31 (GA) 提供对读取、布局、发票、收据和 ID 文档模型的容器支持:

✔️ 有关支持的容器文档,请参阅配置文档智能 v3.0 容器

此内容适用于:选中标记 v3.0 (GA) 选中标记 v3.1 (GA)

使用文档智能容器,你可以构建经过优化的应用程序体系结构,以利用强大的云功能和边缘位置。 容器提供了一个最简单的隔离环境,可以轻松部署在本地和云中。 在本文中,你将了解如何使用 docker compose 命令参数配置文档智能容器运行时环境。 以下七个文档智能功能容器支持文档智能功能 - 读取、布局、名片、ID 文档、回执、发票、自定义。 这些容器既有必需的设置也有可选设置。 有关示例,请参阅示例 docker-compose.yml 文件部分。

配置设置

每个容器都有以下配置设置:

必须 设置 目的
跟踪账单信息。
Billing 指定 Azure 上服务资源的终结点 URI。 有关详细信息,请参阅计费。 有关详细信息和区域终结点的完整列表,请参阅 Azure AI 服务的自定义子域名
Eula 表示已接受容器的许可条款。
ApplicationInsights 允许向容器添加 Azure Application Insights 客户支持。
Fluentd 将日志和(可选)指标数据写入 Fluentd 服务器。
HTTP 代理 配置 HTTP 代理以发出出站请求。
日志记录 为容器提供 ASP.NET Core 日志记录支持。

重要

KeyBillingEula 设置一起使用。 必须为所有三项设置提供有效值,否则容器将无法启动。 有关使用这些配置设置实例化容器的详细信息,请参阅计费

密钥和计费配置设置

Key 设置指定用于跟踪容器账单信息的 Azure 资源键。 键值必须是在“计费配置设置”部分为 Billing 指定的资源的有效键。

Billing 设置指定 Azure 上用于计量容器账单信息的资源的终结点 URI。 此配置设置的值必须是 Azure 上某个资源的有效终结点 URI。 容器约每 10 到 15 分钟报告一次使用情况。

可以在 Azure 门户中的“密钥和终结点”页上找到这些设置。

Azure 门户“密钥和终结点”页面的屏幕截图。

EULA 设置

Eula 设置表示已接受容器的许可条款。 必须为此配置设置指定值,并且该值必须设置为 accept

必须 名称 数据类型 说明
Eula 字符串 接受许可证

示例:
Eula=accept

Azure AI 服务容器根据管理 Azure 使用的协议获得许可。 如果没有管理 Azure 使用情况的现有协议,则表示你同意管理 Azure 使用情况的协议是 Azure 在线订阅协议,其中包含联机服务条款。 使用容器即表示同意这些条款。

ApplicationInsights 设置

ApplicationInsights 设置允许向容器添加 Azure Application Insights 遥测支持。 Application Insights 可深入监视容器。 可以轻松监视容器的可用性、性能和使用情况。 还可以快速识别和诊断容器中的错误。

下表描述了 ApplicationInsights 节支持的配置设置。

必须 名称 数据类型 说明
InstrumentationKey 字符串 容器遥测数据要发送到的 Application Insights 实例的检测密钥。 有关详细信息,请参阅适用于 ASP.NET Core 的 Application Insights

例如:
InstrumentationKey=123456789

Fluentd 设置

Fluentd 是一个用于统一日志记录的开放源代码数据收集器。 Fluentd 设置管理容器到 Fluentd 服务器的连接。 容器包含一个 Fluentd 日志记录提供程序,使容器可以向 Fluentd 服务器写入日志和(可选)指标数据。

下表描述了 Fluentd 节支持的配置设置。

名称 数据类型 说明
Host 字符串 Fluentd 服务器的 IP 地址或 DNS 主机名。
Port 整数 Fluentd 服务器的端口。
默认值为 24224。
HeartbeatMs 整数 检测信号间隔,以毫秒为单位。 如果在此间隔过期之前未发送事件流量,则将检测信号发送到 Fluentd 服务器。 默认值为 60000 毫秒(1 分钟)。
SendBufferSize 整数 为发送操作分配的网络缓冲空间,以字节为单位。 默认值为 32768 字节(32 KB)。
TlsConnectionEstablishmentTimeoutMs Integer 与 Fluentd 服务器建立 SSL/TLS 连接的超时值,以毫秒为单位。 默认值为 10000 毫秒(10 秒)。
如果 UseTLS 设置为 false,则会忽略此值。
UseTLS 布尔 指示容器是否应使用 SSL/TLS 来与 Fluentd 服务器通信。 默认值为 false。

HTTP 代理凭据设置

如果需要配置 HTTP 代理以发出出站请求,请使用以下两个参数:

名称 数据类型 说明
HTTP_PROXY string 要使用的代理,例如 http://proxy:8888
<proxy-url>
HTTP_PROXY_CREDS 字符串 对代理进行身份验证所需的任何凭据,例如 username:password。 此值必须采用小写形式。
<proxy-user> string 代理的用户。
<proxy-password> string 与代理的 <proxy-user> 关联的密码。
docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
HTTP_PROXY=<proxy-url> \
HTTP_PROXY_CREDS=<proxy-user>:<proxy-password> \

日志记录设置

Logging 设置管理容器的 ASP.NET Core 日志记录支持。 可对容器使用用于 ASP.NET Core 应用程序的相同配置设置和值。

容器支持以下日志记录提供程序:

提供程序 目标
控制台 ASP.NET Core Console 日志记录提供程序。 支持此日志记录提供程序的所有 ASP.NET Core 配置设置和默认值。
调试 ASP.NET Core Debug 日志记录提供程序。 支持此日志记录提供程序的所有 ASP.NET Core 配置设置和默认值。
Disk JSON 日志记录提供程序。 此日志记录提供程序将日志数据写入输出装入点。

此容器命令以 JSON 格式将日志记录信息存储到输出装入点:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Disk:Format=json \
Mounts:Output=/output

当容器正在运行时,此容器命令显示调试信息(前缀为 dbug):

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Console:LogLevel:Default=Debug

Disk 日志记录

Disk 日志记录提供程序支持以下配置设置:

名称 数据类型 说明
Format 字符串 日志文件的输出格式。
注意:此值必须设置为 json 才能启用日志记录提供程序。 如果指定了此值,但未同时在实例化容器时指定输出装入点,则会发生错误。
MaxFileSize 整数 日志文件的最大大小,以 MB 为单位。 如果当前日志文件的大小达到或超过此值,则日志记录提供程序会启动新的日志文件。 如果指定 -1,则日志文件的大小仅受输出装入点的最大文件大小(如果有)的限制。 默认值为 1。

有关配置 ASP.NET Core 日志记录支持的详细信息,请参阅设置文件配置

卷设置

使用从容器读取数据以及将数据写入容器。 卷是用于保存 Docker 容器生成和使用的数据的首选方式。 你可以通过包括 volumes 选项并指定 type(绑定)、source(文件夹路径)和 target(文件路径参数)来指定输入装载或输出装载。

文档智能容器需要一个输入卷和一个输出卷。 输入卷可以是只读的 (ro),需要使用它来访问用于训练和评分的数据。 输出卷必须是可写的,用于存储模型和临时数据。

主机卷位置的确切语法因主机操作系统而异。 另外,由于 Docker 服务帐户权限与主机装载位置权限之间有冲突,因此可能无法访问主机的卷位置。

示例 docker-compose.yml 文件

docker compose 方法是通过三个步骤构建的:

  1. 创建 Dockerfile。
  2. 在 docker-compose.yml 中定义服务,以便它们可以在隔离的环境中一起运行。
  3. 运行 docker-compose up 来启动并运行你的服务。

单容器示例

在此示例中,输入你的布局容器实例的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值。

布局容器

version: "3.9"
services:
  azure-cognitive-service-layout:
    container_name: azure-cognitive-service-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - key={FORM_RECOGNIZER_KEY}

    ports:
      - "5000"
    networks:
      - ocrvnet
networks:
  ocrvnet:
    driver: bridge

多容器示例

收据和 OCR 读取容器

在此示例中,输入你的收据容器的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值,并输入你的 Azure AI 视觉读取容器的 {COMPUTER_VISION_ENDPOINT_URI} 和 {COMPUTER_VISION_KEY} 值。

version: "3"
services:
  azure-cognitive-service-receipt:
    container_name: azure-cognitive-service-receipt
    image: cognitiveservicespreview.azurecr.io/microsoft/cognitive-services-form-recognizer-receipt:2.1
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - key={FORM_RECOGNIZER_KEY}
      - AzureCognitiveServiceReadHost=http://azure-cognitive-service-read:5000
    ports:
      - "5000:5050"
    networks:
      - ocrvnet
  azure-cognitive-service-read:
    container_name: azure-cognitive-service-read
    image: mcr.microsoft.com/azure-cognitive-services/vision/read:3.2
    environment:
      - EULA=accept
      - billing={COMPUTER_VISION_ENDPOINT_URI}
      - key={COMPUTER_VISION_KEY}
    networks:
      - ocrvnet

networks:
  ocrvnet:
    driver: bridge

后续步骤