此範例已封存且不支援。 它說明如何使用 C# 和 Visual Studio 建立表單辨識器自定義技能。
先決條件
- Visual Studio (任何版本)。
- 至少五種相同類型的形式。 您可以使用本指南所提供的範例數據。
建立表單辨識器資源
請參閱 建立窗體辨識器資源
訓練你的模型
在使用這項技能之前,您必須用輸入表單訓練表單辨識器模型。 使用表格識別器模型 說明如何訓練模型。 您可以使用範例資料或提供您自己的資料。
定型模型之後,將其標識碼值複製到安全的位置。
設定自定義技能
本教學課程使用 Azure 搜尋服務 Power Skills GitHub 存放庫中的 AnalyzeForm 專案。 將此存放庫複製到本機計算機,並流覽至 Vision/AnalyzeForm/ 以存取專案。 然後在 Visual Studio 中開啟 AnalyzeForm.csproj。 此專案會建立滿足自定義技能介面的 Azure Function 資源,並可用於 Azure 認知搜尋擴充。 它會採用表單檔做為輸入,並輸出您指定的索引鍵/值組(以文字形式)。
首先,新增專案層級環境變數。 在左窗格中找到 AnalyzeForm 專案,以滑鼠右鍵按兩下它,然後選取 [屬性] 。 在 [屬性] 視窗中,選取 [偵錯] 索引標籤,然後尋找 [環境變數] 字段。 選取 [],然後選擇 [新增] 以新增下列變數:
- 將
FORMS_RECOGNIZER_ENDPOINT_URL的值設定為您的端點 URL。 -
FORMS_RECOGNIZER_API_KEY值設定為訂用帳戶金鑰。 -
FORMS_RECOGNIZER_MODEL_ID值設定為您訓練之模型的識別碼。 -
FORMS_RECOGNIZER_RETRY_DELAY值設定為 1000。 此值是程式在重試查詢之前所等候的時間,以毫秒為單位。 -
FORMS_RECOGNIZER_MAX_ATTEMPTS值設定為100。 此值是程式在嘗試取得成功回應時查詢服務的次數。
接下來,開啟 AnalyzeForm.cs 並尋找參考 fieldMappings 檔案的 變數。 這個檔案(以及參考它的變數)會定義用來從窗體中擷取的鍵清單,以及每個鍵的自訂標籤。 例如,{ "Address:", "address" }, { "Invoice For:", "recipient" } 的值表示腳本只會儲存偵測到的 Address: 和 Invoice For: 欄位的值,而且會分別以 "address" 和 "recipient"標記這些值。
最後,記下 contentType 變數。 給定的指令碼會在 URL 所參考的遠端檔案上執行表單辨識模型,因此內容類型為 application/json。 如果您想要在 HTTP 要求中包含其位元組資料流來分析本機檔案,您必須將 contentType 變更為檔案的適當 MIME 類型。
從 Visual Studio 測試功能
編輯項目之後,請將它儲存並設定 AnalyzeForm 項目作為 Visual Studio 中的啟始專案(如果尚未設定)。 然後按 F5,在本機環境中執行函式。 使用 REST 服務,例如 Postman 來呼叫功能。
HTTP 要求
您將發出以下請求以呼叫函數。
POST http://localhost:7071/api/analyze-form
請求體
從請求正文範本開始
{
"values": [
{
"recordId": "record1",
"data": {
"formUrl": "<your-form-url>",
"formSasToken": "<your-sas-token>"
}
}
]
}
在此,您需要提供與您訓練時使用之表單類型相同的表單 URL。 為了進行測試,您可以使用你的訓練表單。 如果您遵循 cURL 快速入門,您的表單會位於 Azure Blob 儲存帳戶中。 開啟 Azure 記憶體總管,找出表單檔,以滑鼠右鍵按鍵按下該檔案,然後選取 [取得共用存取簽章] 。 下一個對話框視窗會提供URL和SAS令牌。 分別在請求主體的 "formUrl" 和 "formSasToken" 欄位中輸入這些字串。
如果您想要分析不在 Azure Blob 記憶體中的遠端檔,請將其 URL 貼到 ["formUrl"] 字段中,並將 ["formSasToken"] 字段保留空白。
注意
當技能整合到技能集中時,認知搜尋會提供 URL 和 token。
回應
您應該會看到類似下列範例的回應:
{
"values": [
{
"recordId": "record1",
"data": {
"address": "1111 8th st. Bellevue, WA 99501 ",
"recipient": "Southridge Video 1060 Main St. Atlanta, GA 65024 "
},
"errors": null,
"warnings": null
}
]
}
將函式發佈至 Azure
當您滿意函式行為時,您可以發佈它。
- 在 Visual Studio 中的 [方案總管] 中,以滑鼠右鍵按專案,然後選取 [發佈]。 選擇 建立新>發行。
- 如果您尚未將 Visual Studio 連線至 Azure 帳戶,請選取 [[新增帳戶...]
- 遵循畫面上的提示。 指定應用程式服務、Azure 訂用帳戶、資源群組、主控方案和您想要使用的記憶體帳戶的唯一名稱。 如果您還沒有新的資源群組,您可以建立新的資源群組、新的主控方案和新的儲存體帳戶。 完成後,選擇 建立。
- 部署完成之後,請注意網站 URL。 此 URL 是 Azure 中函式應用程式的位址。 將它儲存到暫存位置。
- 在 Azure 入口網站的 中,瀏覽至 [資源群組],然後尋找您發佈的
AnalyzeForm函數。 在 [管理] 區段底下,您應該會看到主機密鑰。 複製 預設 主機金鑰,並將它儲存到暫存位置。
連接到您的管道
若要在認知搜尋管線中使用此技能,您必須將技能定義新增至技能集。 下列 JSON 區塊是範例技能定義(您應該更新輸入和輸出,以反映您的特定案例和技能集環境)。 以函式 URL 取代 AzureFunctionEndpointUrl,並以主機金鑰取代 AzureFunctionDefaultHostKey。
{
"description":"Skillset that invokes the Form Recognizer custom skill",
"skills":[
"[... your existing skills go here]",
{
"@odata.type":"#Microsoft.Skills.Custom.WebApiSkill",
"name":"formrecognizer",
"description":"Extracts fields from a form using a pre-trained form recognition model",
"uri":"[AzureFunctionEndpointUrl]/api/analyze-form?code=[AzureFunctionDefaultHostKey]",
"httpMethod":"POST",
"timeout":"PT30S",
"context":"/document",
"batchSize":1,
"inputs":[
{
"name":"formUrl",
"source":"/document/metadata_storage_path"
},
{
"name":"formSasToken",
"source":"/document/metadata_storage_sas_token"
}
],
"outputs":[
{
"name":"address",
"targetName":"address"
},
{
"name":"recipient",
"targetName":"recipient"
}
]
}
]
}