範例:建立表格辨識器自訂技能 (封存)
此範例已封存且不支援。 其中說明如何使用 C# 和 Visual Studio 建立表格辨識器自訂技能。
必要條件
- Visual Studio (任何版本) 。
- 至少有五個相同類型的表單。 您可以使用本指南提供的範例資料。
建立表格辨識器資源
請參閱建立表格辨識器資源
定型模型
您必須先使用輸入表單來定型表格辨識器模型,才能使用此技能。 使用表格辨識器模型說明如何定型模型。 您可以使用範例資料或自行提供。
模型定型後,請將其識別碼值複製到安全的位置。
設定自訂技能
本教學課程使用 Azure Search Power Skills GitHub 存放庫中的 AnalyzeForm 專案。 將此存放庫複製到本機電腦,並瀏覽至 Vision/AnalyzeForm/ 以存取專案。 然後,在 Visual Studio 中開啟 AnalyzeForm.csproj。 此專案會建立可實行自訂技能介面、並且可用於 Azure 認知搜尋擴充的 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,並尋找參考 field-mappings.json 檔案的 fieldMappings
變數。 此檔案 (和加以參考的變數) 會定義您想要從表單中擷取的索引鍵清單,以及每個索引鍵的自訂標籤。 例如,值 { "Address:", "address" }, { "Invoice For:", "recipient" }
表示指令碼只會儲存偵測到的 Address:
和 Invoice For:
欄位的值,且會分別這些值標記為 "address"
和 "recipient"
。
最後,請記下 contentType
變數。 此指令碼會在 URL 所參考的遠端文件上執行指定的表格辨識器模型,因此內容類型為 application/json
。 如果您想要藉由在 HTTP 要求中包含位元組資料流來分析本機檔案,則必須將 contentType
變更為檔案的適當 MIME 類型。
從 Visual Studio 測試函式
編輯專案後請加以儲存,並將 AnalyzeForm 專案設定為 Visual Studio 中的啟始專案 (如果尚未設定)。 然後,按 F5 在本機環境中執行函式。 使用 Postman 之類的 REST 服務來呼叫 函式。
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 儲存體中的遠端文件,請在 "formUrl"
欄位中貼上其 URL,並將 "formSasToken"
欄位保留為空白。
注意
當技能整合到技能集時,認知搜尋將會提供 URL 和權杖。
回應
您應該會看到類似於以下範例的回應:
{
"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 區塊是範例技能定義 (您應更新輸入和輸出,以反映您的特定案例和技能集環境)。 將 AzureFunctionEndpointUrl
取代為您的函式 URL,並將 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"
}
]
}
]
}