已中斷連線(離線)環境中的容器
所有模型的檔智慧版本 2022-08-31 (GA)
以及 2023-07-31 (GA)
讀取、配置、發票、收據和標識符檔模型目前都支援容器:
- REST API
2022-08-31 (GA)
- REST API
2023-07-31 (GA)
- 以
REST API 2022-08-31 (GA)
為目標的用戶端程式庫 - 以
REST API 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
定價層的選項從至少一個自定義、讀取或預先建置的承諾用量層中選取適當的定價層
容器 | 最小值 | 建議需求 | 承諾用量方案 |
---|---|---|---|
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 入口網站中資源的金鑰和端點頁面上找到金鑰和端點:
重要
您將只使用金鑰和端點來設定容器,使其在中斷連線的環境中執行。 設定容器後,您將不需要金鑰和端點值來傳送 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
}
]
}
疑難排解
在已啟用輸出裝載和記錄的情况下執行容器。 這些設定可讓容器產生記錄檔,有助於針對啟動或執行容器時發生的問題進行疑難解答。
提示
如需更多疑難排解資訊和指引,請參閱已中斷連線的容器常見問題集。