Azure AI 文件智慧服務是一項 Azure AI 服務,可讓您使用機器學習技術建置自動化的資料處理軟體。 文件智慧服務可讓您從文件中識別和擷取文字、索引鍵/值組、選取標記、資料表資料等等。 結果會以結構化資料形式提供,其中 ../ 包括原始檔中的關聯性。 容器只會處理提供給它們的數據,並只利用其允許存取的資源。 容器無法處理來自其他區域的數據。
在本文中,您可以瞭解如何下載、安裝及執行 Document Intelligence 容器。 這些容器可讓您在自己的環境中執行文件智慧服務。 容器非常適合用於特定的安全性和資料控管需求。
下列程式碼範例是用來執行文件智慧服務版面配置容器的獨立 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
,透過 YAML 檔案來設定應用程式的服務。 然後,您可以使用 docker-compose up
命令,從您的設定建立並啟動所有服務。 輸入您一般文件和版面配置容器執行個體的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值。
version: "3.9"
services:
azure-cognitive-service-document:
container_name: azure-cognitive-service-document
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/document-3.0
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
- AzureCognitiveServiceLayoutHost=http://azure-cognitive-service-layout:5000
ports:
- "5000:5050"
azure-cognitive-service-layout:
container_name: azure-cognitive-service-layout
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
現在,您可以使用 docker compose 命令來啟動服務:
docker-compose up
考慮到電腦上的資源,一般文件容器可能需要一些時間才能啟動。
下列程式碼範例是用來執行文件智慧服務版面配置容器的獨立 docker compose
範例。 您可以使用 docker compose
,透過 YAML 檔案來設定應用程式的服務。 然後,您可以使用 docker-compose up
命令,從您的設定建立並啟動所有服務。 輸入您版面配置容器執行個體的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值。
version: "3.9"
services:
azure-form-recognizer-layout:
container_name: azure-form-recognizer-layout
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-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
,透過 YAML 檔案來設定應用程式的服務。 然後,您可以使用 docker-compose up
命令,從您的設定建立並啟動所有服務。 輸入您發票和版面配置容器執行個體的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值。
您必須將 3.1 GA 版面配置影像用作 3.0 GA 和 3.1 GA 發票模型的上游版本。
version: "3.9"
services:
azure-cognitive-service-invoice:
container_name: azure-cognitive-service-invoice
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice-3.1
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
- AzureCognitiveServiceLayoutHost=http://azure-cognitive-service-layout:5000
ports:
- "5000:5050"
azure-cognitive-service-layout:
container_name: azure-cognitive-service-layout
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.1
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
現在,您可以使用 docker compose 命令來啟動服務:
docker-compose up
下列程式碼範例是用來執行文件智慧服務一般文件容器的獨立 docker compose
範例。 您可以使用 docker compose
,透過 YAML 檔案來設定應用程式的服務。 然後,您可以使用 docker-compose up
命令,從您的設定建立並啟動所有服務。 輸入您收據和讀取容器執行個體的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值。
您可以將 3.1 GA 版面配置影像作為上游版本,而不是讀取影像。
version: "3.9"
services:
azure-cognitive-service-receipt:
container_name: azure-cognitive-service-receipt
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/receipt-3.1
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
- AzureCognitiveServiceReadHost=http://azure-cognitive-service-read:5000
ports:
- "5000:5050"
azure-cognitive-service-read:
container_name: azure-cognitive-service-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}
現在,您可以使用 docker compose 命令來啟動服務:
docker-compose up
下列程式碼範例是用來執行文件智慧服務一般文件容器的獨立 docker compose
範例。 您可以使用 docker compose
,透過 YAML 檔案來設定應用程式的服務。 然後,您可以使用 docker-compose up
命令,從您的設定建立並啟動所有服務。 輸入您身分證明和讀取容器執行個體的 {FORM_RECOGNIZER_ENDPOINT_URI} 和 {FORM_RECOGNIZER_KEY} 值。
您可以將 3.1 GA 版面配置影像作為上游版本,而不是讀取影像。
version: "3.9"
services:
azure-cognitive-service-id-document:
container_name: azure-cognitive-service-id-document
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/id-document-3.1
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
- AzureCognitiveServiceReadHost=http://azure-cognitive-service-read:5000
ports:
- "5000:5050"
azure-cognitive-service-read:
container_name: azure-cognitive-service-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}
現在,您可以使用 docker compose 命令來啟動服務:
docker-compose up
version: "3.9"
services:
azure-cognitive-service-invoice:
container_name: azure-cognitive-service-businesscard
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/businesscard-3.0
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
- AzureCognitiveServiceLayoutHost=http://azure-cognitive-service-layout:5000
ports:
- "5000:5050"
azure-cognitive-service-layout:
container_name: azure-cognitive-service-layout
image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0
environment:
- EULA=accept
- billing={FORM_RECOGNIZER_ENDPOINT_URI}
- apiKey={FORM_RECOGNIZER_KEY}
除了必要條件之外,您還需要執行下列動作才能處理自訂文件:
建立資料夾並儲存下列檔案
- 將此資料夾命名為 files。
- 我們會以 {FILE_MOUNT_PATH} 來參考此資料夾的檔案路徑。
- 將檔案路徑複製到方便的位置,您需要將其新增至 .env 檔案。 例如,如果資料夾名稱為 files (與
docker-compose
檔案位於同一個資料夾中),則 .env 檔案項目為 FILE_MOUNT_PATH="./files"
建立資料夾將文件智慧服務所寫入的記錄儲存在您的本機電腦上
- 將此資料夾命名為 output。
- 我們會以 {OUTPUT_MOUNT_PATH} 來參考此資料夾的檔案路徑。
- 將檔案路徑複製到方便的位置,您需要將其新增至 .env 檔案。 例如,如果資料夾名稱為 output (與
docker-compose
檔案位於同一個資料夾中),則 .env 檔案項目為 OUTPUT_MOUNT_PATH="./output"
建立資料夾以儲存容器之間共用的內部處理
- 將此資料夾命名為 shared。
- 我們會以 {SHARED_MOUNT_PATH} 來參考此資料夾的檔案路徑。
- 將檔案路徑複製到方便的位置,您需要將其新增至 .env 檔案。 例如,如果資料夾名稱為 shared (與
docker-compose
檔案位於同一個資料夾中),則 .env 檔案項目為 SHARED_MOUNT_PATH="./shared"
- 將此資料夾命名為 db。
- 我們會以 {DB_MOUNT_PATH} 來參考此資料夾的檔案路徑。
- 將檔案路徑複製到方便的位置,您需要將其新增至 .env 檔案。 例如,如果資料夾名稱為 db (與
docker-compose
檔案位於同一個資料夾中),則 .env 檔案項目為 DB_MOUNT_PATH="./db"
建立環境檔案
將此檔案命名為 .env。
宣告下列環境變數:
SHARED_MOUNT_PATH="./shared"
OUTPUT_MOUNT_PATH="./output"
FILE_MOUNT_PATH="./files"
DB_MOUNT_PATH="./db"
FORM_RECOGNIZER_ENDPOINT_URI="YourFormRecognizerEndpoint"
FORM_RECOGNIZER_KEY="YourFormRecognizerKey"
NGINX_CONF_FILE="./nginx.conf"
建立 nginx 檔案
將此檔案命名為 nginx.conf。
輸入下列設定:
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
client_max_body_size 90M;
upstream docker-custom {
server azure-cognitive-service-custom-template:5000;
}
upstream docker-layout {
server azure-cognitive-service-layout:5000;
}
server {
listen 5000;
location = / {
proxy_set_header Host $host:$server_port;
proxy_set_header Referer $scheme://$host:$server_port;
proxy_pass http://docker-custom/;
}
location /status {
proxy_pass http://docker-custom/status;
}
location /test {
return 200 $scheme://$host:$server_port;
}
location /ready {
proxy_pass http://docker-custom/ready;
}
location /swagger {
proxy_pass http://docker-custom/swagger;
}
location /formrecognizer/documentModels/prebuilt-layout {
proxy_set_header Host $host:$server_port;
proxy_set_header Referer $scheme://$host:$server_port;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'cache-control,content-type,ocp-apim-subscription-key,x-ms-useragent' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Expose-Headers' '*' always;
if ($request_method = 'OPTIONS') {
return 200;
}
proxy_pass http://docker-layout/formrecognizer/documentModels/prebuilt-layout;
}
location /formrecognizer/documentModels {
proxy_set_header Host $host:$server_port;
proxy_set_header Referer $scheme://$host:$server_port;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'cache-control,content-type,ocp-apim-subscription-key,x-ms-useragent' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE' always;
add_header 'Access-Control-Expose-Headers' '*' always;
if ($request_method = 'OPTIONS') {
return 200;
}
proxy_pass http://docker-custom/formrecognizer/documentModels;
}
location /formrecognizer/operations {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'cache-control,content-type,ocp-apim-subscription-key,x-ms-useragent' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Expose-Headers' '*' always;
if ($request_method = OPTIONS ) {
return 200;
}
proxy_pass http://docker-custom/formrecognizer/operations;
}
}
}
建立 docker compose 檔案
將此檔案命名為 docker-compose.yml
下列程式碼範例是用來一起執行文件智慧服務版面配置、工作室和自訂範本容器的獨立 docker compose
範例。 您可以使用 docker compose
,透過 YAML 檔案來設定應用程式的服務。 然後,您可以使用 docker-compose up
命令,從您的設定建立並啟動所有服務。
version: '3.3'
services:
nginx:
image: nginx:alpine
container_name: reverseproxy
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: /shared
Mounts:Shared: /shared
Mounts:Output: /logs
volumes:
- type: bind
source: ${SHARED_MOUNT_PATH}
target: /shared
- 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: /shared
Mounts:Shared: /shared
Mounts:Output: /logs
volumes:
- type: bind
source: ${SHARED_MOUNT_PATH}
target: /shared
- 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)
自訂範本容器和版面配置容器可以使用 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"
}
}
容器需要計費引數值才能執行。 這些值讓容器能夠連線到計費端點。 容器會每隔 10 到 15 分鐘回報使用量。 如果容器未在允許的時間範圍內連線到 Azure,容器會繼續執行,但在還原計費端點之前不會提供查詢。 以 10 到 15 分鐘的相同時間間隔嘗試連線 10 次。 如果無法在 10 次嘗試內連線到計費端點,容器會停止處理要求。 請參閱 Azure AI 容器常見問題,以獲得需傳送哪些資訊給 Microsoft 以供計費的範例。