安裝及執行容器
此內容適用於:v3.0 (GA)
v3.1 (GA)
Azure AI 文件智慧服務是一項 Azure AI 服務,可讓您使用機器學習技術建置自動化的資料處理軟體。 文件智慧服務可讓您從文件中識別和擷取文字、索引鍵/值組、選取標記、資料表資料等等。 結果會以結構化資料形式提供,其中 ../ 包括原始檔中的關聯性。 容器只會處理提供給它們的數據,並只利用其允許存取的資源。 容器無法處理來自其他區域的數據。
在本文中,您可以瞭解如何下載、安裝及執行 Document Intelligence 容器。 這些容器可讓您在自己的環境中執行文件智慧服務。 容器非常適合用於特定的安全性和資料控管需求。
文件智慧 v3.1 容器支援讀取、版面配置、身分證明文件、收據和發票模型。
文件智慧 v3.0 容器支援讀取、版面配置、一般文件、名片和自訂模型。
版本支援
文件智慧版本 v3.0: 2022-08-31 (GA)
(適用於所有模型) 和版本 v3.1 2023-07-31 (GA)
(適用於讀取、版面配置、身分證明文件、收據和發票模型) 目前提供對容器的支援:
-
REST API
v3.0: 2022-08-31 (GA)
-
REST API
v3.1: 2023-07-31 (GA)
-
以
REST API v3.0: 2022-08-31 (GA)
為目標的用戶端程式庫 -
以
REST API v3.1: 2023-07-31 (GA)
為目標的用戶端程式庫
必要條件
若要開始,您需要使用中的 Azure 帳戶。 如果您沒有帳戶,您可以建立免費帳戶。
您也需要下列項目才能使用文件智慧服務容器:
必要 | 目的 |
---|---|
熟悉 Docker | 您應具備對 Docker 概念 (例如登錄、存放庫、容器和容器映像等) 的基本了解,以及基本 docker 術語與命令的知識。 |
已安裝 Docker 引擎 | |
文件智慧服務資源 | Azure 入口網站中的單一服務 Azure AI 文件智慧服務或多服務資源。 若要使用容器,您必須具有相關聯的金鑰和端點 URI。 這兩個值都可以在 Azure 入口網站文件智慧服務的 [金鑰和端點] 頁面上找到:
|
選擇性 | 目的 |
---|---|
Azure CLI (命令列介面) | Azure CLI 可讓您使用一組線上命令來建立和管理 Azure 資源。 其可安裝在 Windows、macOS 和 Linux 環境中,且可以在 Docker 容器和 Azure Cloud Shell 中執行。 |
主機電腦需求
主機是可執行 Docker 容器的 x64 型電腦。 它可以是您內部部署的電腦,或是在 Azure 中裝載服務的 Docker,例如:
- Azure Kubernetes Service。
- Azure 容器執行個體。
- 部署至 Azure Stack 的 Kubernetes \(英文\) 叢集。 如需詳細資訊,請參閱將 Kubernetes 部署至 Azure Stack。
注意
請注意,Studio 容器無法在 Azure Kubernetes Service 中部署和執行。 僅支援本機上執行 Studio 容器。
容器的需求和建議
必要的支援容器
下表列出了您所下載的每個文件智慧容器的一個或多個支援容器。 如需詳細資訊,請參閱計費一節。
功能容器 | 支援容器 |
---|---|
讀取 | 非必要 |
版面配置 | 非必要 |
商務名片 | 讀取 |
一般文件 | 版面配置 |
發票 | 版面配置 |
收據 | 讀取或版面配置 |
身分證明文件 | 讀取 |
自訂範本 | 版面配置 |
建議的 CPU 核心數和記憶體
注意
建議的最小值取決於 Docker 限制,而「不是」主機電腦資源。
文件智慧服務容器
容器 | 最小值 | 建議需求 |
---|---|---|
Read |
8 核心,10 GB 記憶體 |
8 核心,24 GB 記憶體 |
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 記憶體 |
- 每個核心必須至少 2.6 GHz 或更快。
- 核心和記憶體會對應至
--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 命令執行容器
以您在 Azure 資源頁面中的資源端點 URI 和金鑰取代 {ENDPOINT_URI} and {API_KEY} 值。
確定
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 compose 檔案
將此檔案命名為 docker-compose.yml
下列程式碼範例是用來一起執行文件智慧服務版面配置、工作室和自訂範本容器的獨立
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 compose 檔案
將此檔案命名為 docker-compose.yml
下列程式碼範例是用來一起執行文件智慧服務版面配置、工作室和自訂範本容器的獨立
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 儲存體佇列或記憶體內部佇列。 只有在使用 Azure 儲存體佇列時,才需要設定 Storage:ObjectStore:AzureBlob:ConnectionString
和 queue:azure:connectionstring
環境變數。 在本機執行時,請刪除這些變數。
確保服務正在執行
為了確保服務已啟動並執行, 請在 Ubuntu 殼層中執行這些命令。
$cd <folder containing the docker-compose file>
$source .env
$docker-compose up
自訂範本容器需要幾個不同的設定,且支援其他選擇性設定。
設定 | 必要 | 描述: |
---|---|---|
EULA |
Yes | 授權接受範例:Eula=accept |
計費 | Yes | FR 資源的計費端點 URI |
ApiKey | Yes | FR 資源的端點金鑰 |
Queue:Azure:ConnectionString | No | Azure 佇列連接字串 |
Storage:ObjectStore:AzureBlob:ConnectionString | No | Azure Blob 連接字串 |
HealthCheck:MemoryUpperboundInMB | No | 報告活躍度狀況不良的記憶體閾值。 預設值:與建議的記憶體相同 |
StorageTimeToLiveInMinutes | No | 要移除所有中繼和最終檔案的 TTL 持續時間。 預設值:兩天,TTL 可以設定為五分鐘到七天之間 |
Task:MaxRunningTimeSpanInMinutes | No | 將要求視為逾時的最大執行時間。 預設值:60 分鐘 |
HTTP_PROXY_BYPASS_URLS | No | 指定用於略過 Proxy 的 URL。範例:HTTP_PROXY_BYPASS_URLS = abc.com, xyz.com |
AzureCognitiveServiceReadHost (僅限收據、身分證明文件容器) | Yes | 指定讀取容器 URI。範例:AzureCognitiveServiceReadHost=http://onprem-frread:5000 |
AzureCognitiveServiceLayoutHost (僅限文件、發票容器) | Yes | 指定版面配置容器 URI。範例:AzureCognitiveServiceLayoutHost=http://onprem-frlayout:5000 |
使用文件智慧服務工作室來定型模型
收集一組至少五個相同類型的表單。 您會使用此資料來定型模型和測試表單。 您可以使用範例資料集 (下載 sample_data.zip 並將其解壓縮)。
在能夠確認容器正在執行之後,請開啟瀏覽器並瀏覽至您已部署容器的端點。 如果此部署是本機電腦,則端點是
[http://localhost:5001](http://localhost:5001)
。選取自訂擷取模型圖格。
選取
Create project
選項。提供專案名稱和選擇性的描述
在 [設定您的資源] 步驟中,提供自訂範本模型的端點。 如果您將容器部署在本機電腦上,請使用此 URL
[http://localhost:5000](http://localhost:5000)
。在檔案資料夾內提供定型資料所在的子資料夾。
最後,建立專案
您現在應該已建立專案,並可供標記。 請上傳定型資料並開始使用標記。 如果您未使用過標記,請參閱建置和定型自訂模型。
使用 API 來定型
如果您打算直接呼叫 API 來定型模型,自訂範本模型定型 API 需要有您標記專案內容的 base64 編碼 ZIP 檔案。 您可以省略 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 容器會為端點提供一組完整的文件和立即試用功能。 使用此功能,您可以將自己的設定輸入至以 Web 為基礎的 HTML 表單並進行查詢,而無須撰寫任何程式碼。 在查詢傳回後,會提供範例 CURL 命令來示範必要的 HTTP 標頭和本文格式。
停止容器
若要停止容器,請使用下列命令:
docker-compose down
計費
文件智慧服務容器會使用您 Azure 帳戶上的文件智慧服務資源,將計費資訊傳送至 Azure。
對於容器的查詢,會以針對 API Key
使用的 Azure 資源定價層來計費。 系統會針對用來處理文件和影像的每個容器執行個體計算計費。
如果您收到下列錯誤:容器未處於有效狀態。訂用帳戶驗證失敗,狀態為 'OutOfQuota' API 金鑰超出配額。 這表示您的容器未與計費端點進行通訊。
連接到 Azure
容器需要計費引數值才能執行。 這些值讓容器能夠連線到計費端點。 容器會每隔 10 到 15 分鐘回報使用量。 如果容器未在允許的時間範圍內連線到 Azure,容器會繼續執行,但在還原計費端點之前不會提供查詢。 以 10 到 15 分鐘的相同時間間隔嘗試連線 10 次。 如果無法在 10 次嘗試內連線到計費端點,容器會停止處理要求。 請參閱 Azure AI 容器常見問題,以獲得需傳送哪些資訊給 Microsoft 以供計費的範例。
計費引數
當下列三個選項都填入了有效值時,docker-compose up 命令便會啟動容器:
選項 | 描述 |
---|---|
ApiKey |
用來追蹤計費資訊的 Azure AI 服務資源的金鑰。 此選項的值必須設定為 Billing 中指定的已佈建資源的金鑰。 |
Billing |
用於追蹤計費資訊的 Azure AI 服務資源的端點。 此選項的值必須設定為已佈建 Azure 資源的端點 URI。 |
Eula |
表示您接受容器的授權。 此選項的值必須設定為接受。 |
如需這些選項的詳細資訊,請參閱設定容器。
摘要
介紹完畢 在本文中,您已了解下載、安裝及執行文件智慧服務容器的概念和工作流程。 摘要中:
- 文件智慧服務會針對 Docker 提供七個 Linux 容器。
- 容器映像會從 mcr 下載。
- 容器映像是在 Docker 中執行。
- 當您具現化容器時,必須指定計費資訊。
重要
Azure AI 容器若未連線至用於計量的 Azure,即無法獲得執行的授權。 客戶必須啟用容器以持續與計量服務進行帳單資訊的通訊。 Azure AI 容器不會將客戶資料 (例如正在分析的影像或文字) 傳送至 Microsoft。