Dela via


Exempel: Skapa en Formigenkänning anpassad färdighet (arkiverad)

Det här exemplet arkiveras och stöds inte. Den förklarade hur du skapar en Formigenkänning anpassad färdighet 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änning resurs

Se Skapa en Formigenkänning resurs

Träna modellen

Du måste träna en Formigenkänning modell med dina indataformulär innan du använder den här färdigheten. Använd Formigenkänning modeller 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 AnalyzeForm-projektet på GitHub-lagringsplatsen för Azure Search Power Skills . Klona den här lagringsplatsen till din lokala dator och gå till Vision/AnalyzeForm/ för att komma åt projektet. Öppna sedan AnalyzeForm.csproj i Visual Studio. Det här projektet skapar en Azure-funktionsresurs som uppfyller det anpassade kompetensgränssnittet och kan användas för Azure Cognitive Search berikande. Den tar formulärdokument som indata och matar ut (som text) de nyckel-/värdepar som du anger.

Lägg först till miljövariabler på projektnivå. Leta upp AnalyzeForm-projektet i det vänstra fönstret, högerklicka på det och välj Egenskaper. I fönstret Egenskaper väljer du fliken Felsök och letar sedan upp 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:t 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 försöker igen.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS med värdet inställt på 100. Det här värdet är det antal gånger som programmet frå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 filen field-mappings.json . Den här filen (och variabeln som refererar till den) definierar listan med nycklar som du vill extrahera från dina formulär och en anpassad etikett för varje nyckel. Ett värde { "Address:", "address" }, { "Invoice For:", "recipient" } innebär till exempel att skriptet bara sparar värdena för de identifierade Address: fälten och Invoice For: fälten, och de värdena märks med "address""recipient"respektive .

Observera slutligen variabeln contentType . Det här skriptet kör den angivna Formigenkänning modellen 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 lämplig MIME-typ för filen.

Testa funktionen från Visual Studio

När du har redigerat projektet sparar du det och anger AnalyzeForm-projektet 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 för 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. Nästa dialogruta innehåller en URL och EN SAS-token. Ange dessa strängar i fälten och "formSasToken" i begärandetexten"formUrl".

Azure Storage Explorer; ett pdf-dokument har valts

Om du vill analysera ett fjärrdokument som inte finns i Azure Blob Storage klistrar du in url:en i "formUrl" fältet och lämnar fältet "formSasToken" tomt.

Anteckning

När färdigheten är integrerad i en kompetensuppsättning tillhandahålls URL:en och token av Cognitive Search.

Svarsåtgärder

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 i Azure

När du är nöjd med funktionsbeteendet kan du publicera det.

  1. Högerklicka på projektet i Solution Explorer i Visual Studio och välj Publicera. Välj Skapa ny>publicering.
  2. Om du inte redan har anslutit Visual Studio till ditt Azure-konto väljer du Lägg till ett konto....
  3. Följ anvisningarna på skärmen. Ange ett unikt namn för din apptjänst, 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.
  4. 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.
  5. I Azure Portal navigerar du till resursgruppen och letar efter den AnalyzeForm funktion som du publicerade. Under avsnittet Hantera bör du se Värdnycklar. Kopiera standardvärdnyckeln och spara den på en tillfällig plats.

Ansluta till din pipeline

Om du vill använda den här färdigheten i en Cognitive Search-pipeline måste du lägga till en färdighetsdefinition i din kompetensuppsättning. Följande JSON-block är en exempel på färdighetsdefinition (du bör uppdatera indata och utdata för att återspegla ditt specifika scenario och din kompetensmiljö). 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"
        }
      ]
    }
  ]
}