分享方式:


已中斷連線(離線)環境中的容器

所有模型的檔智慧版本 2022-08-31 (GA) 以及 2023-07-31 (GA) 讀取、配置、發票、收據和標識符檔模型目前都支援容器:

✔️ 如需支援的容器檔,請參閱 中斷聯機環境中 的檔智慧 v3.0 容器。

此內容適用於: 勾選記號 v3.0 (GA) 勾選記號 v3.1 (GA)

什麼是中斷連線的容器?

Azure AI 容器 可讓您彈性地在容器中本機執行一些 Document Intelligence 服務。 線上的容器會在您的環境中在本機執行,並將使用量資訊傳送至雲端以進行計費。 已中斷連線的容器適用於不需要與雲端連線即可執行容器的案例。

Azure AI 檔智慧容器可讓您使用 Document Intelligence API 搭配容器化的優點。 與隨用隨付定價相比,中斷連線的容器透過承諾用量層定價提供折扣的費率。 透過承諾層定價,您可以根據工作負載的需求,以可預測的總成本,承諾使用 Document Intelligence 功能進行固定費用。

開始使用

在嘗試在離線環境中執行 Docker 容器之前,請確保您熟悉以下需求,以便成功下載和使用容器:

  • 主電腦需求和建議。
  • 用於下載容器的 Docker pull 命令。
  • 如何驗證容器是否正在執行。
  • 如何在容器的端點執行之後,將查詢傳送至該端點。

要求在中斷連線的環境中使用容器的存取權

您必須先填寫並提交要求窗體購買承諾方案,才能在中斷聯機的環境中使用 Document Intelligence 容器。

在 Azure 入口網站 中建立新的資源

首先,在入口網站中布建新的資源。

  • 請確定您選取 Commitment tier disconnected containers DC0 定價層的選項

  • 從至少一個自定義、讀取或預先建置的承諾用量層中選取適當的定價層

    Azure 入口網站 中已中斷連線層設定的螢幕快照。

容器 最小值 建議需求 承諾用量方案
Read 8 核心,10 GB 記憶體 8 核心,24 GB 記憶體 OCR (閱讀)
Layout 8 核心,16 GB 記憶體 8 核心,24 GB 記憶體 預建
Business Card 8 核心,16 GB 記憶體 8 核心,24 GB 記憶體 預建
General Document 8 核心,12 GB 記憶體 8 核心,24 GB 記憶體 預建
ID Document 8 核心,8 GB 記憶體 8 核心,24 GB 記憶體 預建
Invoice 8 核心,16 GB 記憶體 8 核心,24 GB 記憶體 預建
Receipt 8 核心,11 GB 記憶體 8 核心,24 GB 記憶體 預建
Custom Template 8 核心,16 GB 記憶體 8 核心,24 GB 記憶體 自訂 API

收集必要參數

所有 Azure AI 服務的容器都需要三個參數:

  • 使用者授權合約 (EULA) 必須存在,且其值為 [接受]
  • Azure 入口網站中資源的端點 URL。
  • 來自 Azure 入口網站之資源的 API 金鑰。

當您第一次執行容器時,同時需要端點 URL 和 API 金鑰,才能針對已中斷連線的使用量設定該容器。 您可以在 Azure 入口網站中資源的金鑰和端點頁面上找到金鑰和端點

Azure 入口網站金鑰和端點頁面的螢幕擷取畫面。

重要

您將只使用金鑰和端點來設定容器,使其在中斷連線的環境中執行。 設定容器後,您將不需要金鑰和端點值來傳送 API 要求。 安全地加以儲存,例如使用 Azure Key Vault。 此流程只需要一個金鑰。

使用 下載 Docker 容器 docker pull

下載已核准在中斷連線的環境中執行的 Docker 容器。 例如:

Docker pull 命令 格式
• • • • docker pull [image]

docker pull [image]latest
最新的容器映像。 • • • • mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice-3.0:latest

範例 Docker pull 命令

docker pull mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice:latest

將容器設定為在中斷連線的環境中執行

已中斷連線的容器映像與連線的容器相同。 主要差異在於已中斷連線的容器需要授權檔。 此授權檔是藉由以連線模式啟動容器,並將 downloadLicense 參數設定為 true 來下載。

現在已下載您的容器,您必須使用下列參數來執行 docker run 命令:

  • DownloadLicense=True. 此參數下載授權檔案,可讓 Docker 容器在未連線至網際網絡時執行。 它還包含到期日,該日期後,授權檔案將無法執行容器。 您只能在相應的已核准容器中使用授權檔案。

重要

docker run 命令將產生可用於執行容器的範本。 範本包含下載的模型和設定檔所需的參數。 請確定您儲存此範本。

下列範例顯示命令與佔位元值搭配使用的格式 docker run 設定。 以您自己的值取代這些預留位置值。

預留位置 格式或範例
{IMAGE} 您想要使用的容器映像。 mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{LICENSE_MOUNT} 下載和裝載授權的路徑。 /host/license:/path/to/license/directory
{ENDPOINT_URI} 用於驗證服務要求的端點。 在 Azure 入口網站上,您可以在資源的 [金鑰和端點] 頁面上找到金鑰。 https://<your-custom-subdomain>.cognitiveservices.azure.com
{API_KEY} 檔智慧資源的索引鍵。 在 Azure 入口網站上,您可以在資源的 [金鑰和端點] 頁面上找到金鑰。 {string}
{CONTAINER_LICENSE_DIRECTORY} 容器本機檔案系統上的授權資料夾位置。 /path/to/license/directory

範例 docker run 命令


docker run --rm -it -p 5000:5050 \

-v {LICENSE_MOUNT} \

{IMAGE} \

eula=accept \

billing={ENDPOINT_URI} \

apikey={API_KEY} \

DownloadLicense=True \

Mounts:License={CONTAINER_LICENSE_DIRECTORY}

在下列命令中,取代資料夾路徑、計費端點和 API 金鑰的佔位元,以下載配置容器的授權檔案。

docker run -v {folder path}:/license --env Mounts:License=/license --env DownloadLicense=True --env Eula=accept --env Billing={billing endpoint} --env ApiKey={api key} mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

設定容器之後,請使用下一節以授權在您的環境中執行容器,以及適當的記憶體和 CPU 配置。

檔智慧容器模型和設定

設定 容器之後,將會在容器輸出中產生並顯示所下載檔智慧模型和容器組態的值。

在已中斷連線的環境中執行容器

下載授權文件之後,您可以使用授權、適當的記憶體和適當的 CPU 配置,在中斷聯機的環境中執行容器。 以下範例顯示了帶有預留位置值的 docker run 命令之格式設定。 以您自己的值取代這些預留位置值。

無論何時執行容器,授權檔案都必須裝載至容器,而且授權資料夾在容器本機檔案系統上的位置必須是使用 Mounts:License= 指定的。 此外,必須指定輸出裝載,以便可以寫入計費使用量記錄。

預留位置 格式或範例
{IMAGE} 您想要使用的容器映像。 mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{MEMORY_SIZE} 要為您容器配置的適當記憶體大小。 4g
{NUMBER_CPUS} 要為您容器配置的適當 CPU 數目。 4
{LICENSE_MOUNT} 授權所在和裝載的路徑。 /host/license:/path/to/license/directory
{OUTPUT_PATH} 用於記錄使用量記錄的輸出路徑。 /host/output:/path/to/output/directory
{CONTAINER_LICENSE_DIRECTORY} 容器本機檔案系統上的授權資料夾位置。 /path/to/license/directory
{CONTAINER_OUTPUT_DIRECTORY} 容器本機檔案系統上的輸出資料夾位置。 /path/to/output/directory

範例 docker run 命令

docker run --rm -it -p 5000:5050 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \

-v {LICENSE_MOUNT} \

-v {OUTPUT_PATH} \

{IMAGE} \

eula=accept \

Mounts:License={CONTAINER_LICENSE_DIRECTORY}

Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}

啟動已中斷連線的容器類似於 啟動已連線的容器。 已中斷連線的容器需要新增的授權參數。 以下是以中斷連線模式啟動自定義容器的範例docker-compose.yml檔案。 將CUSTOM_LICENSE_MOUNT_PATH環境變數的值設定為包含所下載授權檔案的資料夾,並將 OUTPUT_MOUNT_PATH 值設定為保留使用記錄的資料夾, 環境變數。

version: '3.3'
services:
 nginx:
  image: nginx:alpine
  container_name: reverseproxy
  volumes:
    - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
  ports:
    - "5000:5050"
 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: /shared
    Mounts:Shared: /shared
    Mounts:Output: /logs
    Mounts:License: /license
  volumes:
    - type: bind
      source: ${SHARED_MOUNT_PATH}
      target: /shared
    - type: bind
      source: ${OUTPUT_MOUNT_PATH}
      target: /logs
    - type: bind
      source: ${LAYOUT_LICENSE_MOUNT_PATH}
      target: /license
  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: /shared
    Mounts:Shared: /shared
    Mounts:Output: /logs
    Mounts:License: /license
  volumes:
    - type: bind
      source: ${SHARED_MOUNT_PATH}
      target: /shared
    - type: bind
      source: ${OUTPUT_MOUNT_PATH}
      target: /logs
    - type: bind
      source: ${CUSTOM_LICENSE_MOUNT_PATH}
      target: /license
  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 容器時,容器會將使用量記錄寫入至已在其中收集它們一段時間的磁碟區。 您也可以呼叫 REST API 端點,以產生有關服務使用量的報告。

用於儲存記錄的引數

在已中斷連線的環境中執行時,輸出掛接必須可供容器使用,才能儲存使用量記錄。 例如,您會在下列範例中包含 -v /host/output:{OUTPUT_PATH}Mounts:Output={OUTPUT_PATH},將 {OUTPUT_PATH} 取代為儲存記錄的路徑:

docker run -v /host/output:{OUTPUT_PATH} ... <image> ... Mounts:Output={OUTPUT_PATH}

使用容器端點取得記錄

容器提供兩個端點來傳回其使用量的相關記錄。

取得所有記錄

下列端點提供一份報告,彙總在裝載的帳單記錄目錄中收集到的所有使用量。

https://<service>/records/usage-logs/

範例 HTTPS 端點

http://localhost:5000/records/usage-logs

使用量記錄端點會傳回類似下列範例的 JSON 回應:

{
  "apiType": "string",
  "serviceName": "string",
  "meters": [
    {
      "name": "string",
      "quantity": 256345435
    }
  ]
}

取得特定月份的記錄

下列端點提供一份報告,摘要說明特定月份和年份的使用量。

https://<service>/records/usage-logs/{MONTH}/{YEAR}

此使用量記錄端點傳回類似於以下範例的 JSON 回應:

{
  "apiType": "string",
  "serviceName": "string",
  "meters": [
    {
      "name": "string",
      "quantity": 56097
    }
  ]
}

疑難排解

在已啟用輸出裝載和記錄的情况下執行容器。 這些設定可讓容器產生記錄檔,有助於針對啟動或執行容器時發生的問題進行疑難解答。

提示

如需更多疑難排解資訊和指引,請參閱已中斷連線的容器常見問題集

下一步