Delen via


Voorbeeld: Een aangepaste Form Recognizer vaardigheid maken (gearchiveerd)

Dit voorbeeld is gearchiveerd en wordt niet ondersteund. Hierin werd uitgelegd hoe u een Form Recognizer aangepaste vaardigheid maakt met behulp van C# en Visual Studio.

Vereisten

  • Visual Studio (elke editie).
  • Ten minste vijf formulieren van hetzelfde type. U kunt voorbeeldgegevens in deze handleiding gebruiken.

Een Form Recognizer-resource maken

Zie Een Form Recognizer resource maken

Uw model trainen

U moet een Form Recognizer-model trainen met uw invoerformulieren voordat u deze vaardigheid kunt gebruiken. In Form Recognizer-modellen wordt uitgelegd hoe u een model traint. U kunt voorbeeldgegevens gebruiken of uw eigen gegevens opgeven.

Zodra het model is getraind, kopieert u de id-waarde naar een veilige locatie.

De aangepaste vaardigheid instellen

In deze zelfstudie wordt gebruikgemaakt van het project AnalyzeForm in de GitHub-opslagplaats azure Search Power Skills . Kloon deze opslagplaats naar uw lokale computer en navigeer naar Vision/AnalyzeForm/ om toegang te krijgen tot het project. Open vervolgens AnalyzeForm.csproj in Visual Studio. Dit project maakt een Azure Function-resource die voldoet aan de aangepaste vaardigheidsinterface en kan worden gebruikt voor Azure Cognitive Search verrijking. Formulierdocumenten worden als invoer gebruikt en de sleutel-waardeparen die u opgeeft worden uitgevoerd (als tekst).

Voeg eerst omgevingsvariabelen op projectniveau toe. Zoek het project AnalyzeForm in het linkerdeelvenster, klik er met de rechtermuisknop op en selecteer Eigenschappen. Selecteer in het venster Eigenschappen het tabblad Foutopsporing en zoek vervolgens het veld Omgevingsvariabelen . Selecteer Toevoegen om de volgende variabelen toe te voegen:

  • FORMS_RECOGNIZER_ENDPOINT_URL met de waarde ingesteld op uw eindpunt-URL.
  • FORMS_RECOGNIZER_API_KEY met de waarde ingesteld op uw abonnementssleutel.
  • FORMS_RECOGNIZER_MODEL_ID waarbij de waarde is ingesteld op de id van het model dat u hebt getraind.
  • FORMS_RECOGNIZER_RETRY_DELAY met de waarde ingesteld op 1000. Deze waarde is de tijd in milliseconden die het programma wacht voordat de query opnieuw wordt uitgevoerd.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS met de waarde ingesteld op 100. Deze waarde is het aantal keren dat het programma een query uitvoert op de service terwijl wordt geprobeerd een geslaagd antwoord te krijgen.

Open vervolgens AnalyzeForm.cs en zoek de fieldMappings variabele die verwijst naar het bestand field-mappings.json . Dit bestand (en de variabele die ernaar verwijst) definieert de lijst met sleutels die u wilt ophalen uit uw formulieren en een aangepast label voor elke sleutel. Een waarde van { "Address:", "address" }, { "Invoice For:", "recipient" } betekent bijvoorbeeld dat het script alleen de waarden voor de gedetecteerde Address: velden en Invoice For: opslaat en dat deze waarden worden gelabeld met "address" respectievelijk en "recipient".

Let ten slotte op de contentType variabele. Met dit script wordt het opgegeven Form Recognizer-model uitgevoerd op externe documenten waarnaar wordt verwezen door de URL, dus het inhoudstype is application/json. Als u lokale bestanden wilt analyseren door hun bytestromen op te slaan in de HTTP-aanvragen, moet u de contentType wijzigen in het juiste MIME-type voor uw bestand.

De functie testen vanuit Visual Studio

Nadat u uw project hebt bewerkt, slaat u het op en stelt u het project AnalyzeForm in als het opstartproject in Visual Studio (als dit nog niet is ingesteld). Druk vervolgens op F5 om de functie uit te voeren in uw lokale omgeving. Gebruik een REST-service zoals Postman om de functie aan te roepen.

HTTP-aanvraag

U maakt de volgende aanvraag om de functie aan te roepen.

POST http://localhost:7071/api/analyze-form

Aanvraagbody

Beginnen met de aanvraagbodysjabloon

{
    "values": [
        {
            "recordId": "record1",
            "data": { 
                "formUrl": "<your-form-url>",
                "formSasToken": "<your-sas-token>"
            }
        }
    ]
}

Hier moet u de URL opgeven van een formulier met hetzelfde type als de formulieren waarmee u hebt getraind. Voor testdoeleinden kunt u een van uw trainingsformulieren gebruiken. Als u de cURL-quickstart hebt gevolgd, bevinden uw formulieren zich in een Azure Blob Storage-account. Open Azure Storage Explorer, zoek een formulierbestand, klik er met de rechtermuisknop op en selecteer Shared Access Signature ophalen. Het volgende dialoogvenster bevat een URL en een SAS-token. Voer deze tekenreeksen in de "formUrl" velden en "formSasToken" van de hoofdtekst van de aanvraag in.

Azure Storage Explorer; een PDF-document is geselecteerd

Als u een extern document wilt analyseren dat zich niet in Azure Blob Storage bevindt, plakt u de URL in het "formUrl" veld en laat u het "formSasToken" veld leeg.

Notitie

Wanneer de vaardigheid is geïntegreerd in een vaardighedenset, worden de URL en het token geleverd door Cognitive Search.

Antwoord

Als het goed is, ziet u een antwoord dat lijkt op het volgende voorbeeld:

{
    "values": [
        {
            "recordId": "record1",
            "data": {
                "address": "1111 8th st. Bellevue, WA 99501 ",
                "recipient": "Southridge Video 1060 Main St. Atlanta, GA 65024 "
            },
            "errors": null,
            "warnings": null
        }
    ]
}

De functie publiceren naar Azure

Wanneer u tevreden bent met het gedrag van de functie, kunt u het publiceren.

  1. Klik in de Solution Explorer in Visual Studio met de rechtermuisknop op het project en selecteer Publiceren. Kies Nieuwe>publicatie maken.
  2. Als u Visual Studio nog niet hebt verbonden met uw Azure-account, selecteert u Een account toevoegen....
  3. Volg de aanwijzingen op het scherm. Geef een unieke naam op voor uw app-service, het Azure-abonnement, de resourcegroep, het hostingabonnement en het opslagaccount dat u wilt gebruiken. U kunt een nieuwe resourcegroep, een nieuw hostingabonnement en een nieuw opslagaccount maken als u deze nog niet hebt. Wanneer u klaar bent, selecteert u Maken.
  4. Nadat de implementatie is voltooid, ziet u de SITE-URL. Deze URL is het adres van uw functie-app in Azure. Sla het op een tijdelijke locatie op.
  5. Navigeer in de Azure Portal naar de resourcegroep en zoek naar de AnalyzeForm functie die u hebt gepubliceerd. In de sectie Beheren ziet u Hostsleutels. Kopieer de standaardhostsleutel en sla deze op een tijdelijke locatie op.

Verbinding maken met uw pijplijn

Als u deze vaardigheid wilt gebruiken in een Cognitive Search-pijplijn, moet u een vaardigheidsdefinitie toevoegen aan uw vaardighedenset. Het volgende JSON-blok is een voorbeeld van een vaardigheidsdefinitie (u moet de invoer en uitvoer bijwerken om uw specifieke scenario en vaardighedensetomgeving weer te geven). Vervang door AzureFunctionEndpointUrl uw functie-URL en vervang door AzureFunctionDefaultHostKey uw hostsleutel.

{ 
  "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"
        }
      ]
    }
  ]
}