Exempel: Skapa en anpassad färdighet för formigenkänning (arkiverad)
Det här exemplet är arkiverat och stöds inte. Den förklarade hur du skapar en anpassad färdighet för formigenkänning med hjälp av C# och Visual Studio.
Förutsättningar
- Visual Studio (valfri utgåva).
- Minst fem former av samma typ. Du kan använda exempeldata som tillhandahålls med den här guiden.
Skapa en formigenkänningsresurs
Se Skapa en resurs för formulärigenkänning
Träna din modell
Du måste träna en formigenkänningsmodell med dina indataformulär innan du använder den här färdigheten. Använda formigenkänningsmodeller förklarar hur du tränar en modell. Du kan använda exempeldata eller ange egna.
När modellen har tränats kopierar du dess ID-värde till en säker plats.
Konfigurera den anpassade färdigheten
I den här självstudien används projektet AnalyzeForm i Azure Search Power Skills GitHub-repo. Klona den här lagringsplatsen till den lokala datorn och gå till Vision/AnalyzeForm/ för att få åtkomst till projektet. Öppna sedan AnalyzeForm.csproj i Visual Studio. Det här projektet skapar en Azure-funktionsresurs som uppfyller det anpassade kunskapsgränssnittet och som kan användas för Azure Cognitive Search-berikning. Den tar formulärdokument som indata och matar ut (som text) de nyckel/värde-par som du anger.
Lägg först till miljövariabler på projektnivå. Leta upp projektet AnalyzeForm i det vänstra fönstret, högerklicka på det och välj Egenskaper. I fönstret Egenskaper väljer du fliken Felsökning och letar sedan reda på fältet Miljövariabler. Välj Lägg till för att lägga till följande variabler:
-
FORMS_RECOGNIZER_ENDPOINT_URL
med värdet inställt på slutpunkts-URL:en. -
FORMS_RECOGNIZER_API_KEY
med värdet inställt på din prenumerationsnyckel. -
FORMS_RECOGNIZER_MODEL_ID
med värdet inställt på ID för den modell som du har tränat. -
FORMS_RECOGNIZER_RETRY_DELAY
med värdet inställt på 1000. Det här värdet är den tid i millisekunder som programmet väntar innan frågan provas igen. -
FORMS_RECOGNIZER_MAX_ATTEMPTS
med värdet inställt på 100. Det här värdet är antalet gånger som programmet avfrågar tjänsten när det försöker få ett lyckat svar.
Öppna sedan AnalyzeForm.cs och leta reda på variabeln fieldMappings
som refererar till field-mappings.json-filen. Den här filen (och variabeln som refererar till den) definierar listan över nycklar som du vill extrahera från formulären och en anpassad etikett för varje nyckel. Ett värde på { "Address:", "address" }, { "Invoice For:", "recipient" }
innebär till exempel att skriptet bara sparar värdena för de identifierade fälten Address:
och Invoice For:
, och de värdena märks med "address"
respektive "recipient"
.
Observera slutligen variabeln contentType
. Det här skriptet kör den angivna formigenkänningsmodellen på fjärrdokument som refereras till av URL: en, så innehållstypen är application/json
. Om du vill analysera lokala filer genom att inkludera deras byteströmmar i HTTP-begäranden måste du ändra contentType
till rätt MIME-typ för filen.
Testa funktionen från Visual Studio
När du har redigerat projektet sparar du det och anger AnalyzeForm- projekt som startprojekt i Visual Studio (om det inte redan har angetts). Tryck sedan på F5 för att köra funktionen i din lokala miljö. Använd en REST-tjänst som Postman för att anropa funktionen.
HTTP-begäran
Du gör följande begäran om att anropa funktionen.
POST http://localhost:7071/api/analyze-form
Begärandetext
Börja med mallen för begärandetext
{
"values": [
{
"recordId": "record1",
"data": {
"formUrl": "<your-form-url>",
"formSasToken": "<your-sas-token>"
}
}
]
}
Här måste du ange URL:en för ett formulär som har samma typ som de formulär som du har tränat med. I testsyfte kan du använda ett av dina träningsformulär. Om du följde cURL-snabbstarten finns dina formulär i ett Azure Blob Storage-konto. Öppna Azure Storage Explorer, leta upp en formulärfil, högerklicka på den och välj Hämta signatur för delad åtkomst. I nästa dialogruta visas en URL och EN SAS-token. Ange dessa strängar i fälten "formUrl"
respektive "formSasToken"
i begärandetexten.
Om du vill analysera ett fjärrdokument som inte finns i Azure Blob Storage klistrar du in dess URL i fältet "formUrl"
och lämnar fältet "formSasToken"
tomt.
Not
När kunskapen är integrerad i en kompetensuppsättning tillhandahålls URL:en och token av Cognitive Search.
Svar
Du bör se ett svar som liknar följande exempel:
{
"values": [
{
"recordId": "record1",
"data": {
"address": "1111 8th st. Bellevue, WA 99501 ",
"recipient": "Southridge Video 1060 Main St. Atlanta, GA 65024 "
},
"errors": null,
"warnings": null
}
]
}
Publicera funktionen till Azure
När du är nöjd med funktionsbeteendet kan du publicera det.
- Högerklicka på projektet i Solution Explorer i Visual Studio och välj Publicera. Välj Skapa ny>Publicera.
- Om du inte redan har anslutit Visual Studio till ditt Azure-konto väljer du Lägg till ett konto....
- Följ anvisningarna på skärmen. Ange ett unikt namn för apptjänsten, Azure-prenumerationen, resursgruppen, värdplanen och det lagringskonto som du vill använda. Du kan skapa en ny resursgrupp, en ny värdplan och ett nytt lagringskonto om du inte redan har dessa. När du är klar väljer du Skapa.
- När distributionen är klar lägger du märke till webbplats-URL:en. Den här URL:en är adressen till din funktionsapp i Azure. Spara den på en tillfällig plats.
- I Azure-portalennavigerar du till resursgruppen och letar efter den
AnalyzeForm
funktion som du publicerade. Under avsnittet Hantera bör du se värdnycklar. Kopiera standard värdnyckel och spara den på en tillfällig plats.
Ansluta till din pipeline
Om du vill använda den här färdigheten i en pipeline för kognitiv sökning måste du lägga till en kompetensdefinition i din kompetensuppsättning. Följande JSON-block är en exempel på kompetensdefinition (du bör uppdatera indata och utdata för att återspegla ditt specifika scenario och din kompetensuppsättningsmiljö). Ersätt AzureFunctionEndpointUrl
med funktions-URL:en och ersätt AzureFunctionDefaultHostKey
med värdnyckeln.
{
"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"
}
]
}
]
}