Teilen über


Beispiel: Erstellen einer Formularerkennung benutzerdefinierten Qualifikation (archiviert)

Dieses Beispiel ist archiviert und nicht mehr unterstützt. Es wurde erläutert, wie Sie einen Formularerkennung benutzerdefinierten Skill mit C# und Visual Studio erstellen.

Voraussetzungen

  • Visual Studio (beliebige Edition).
  • Mindestens fünf Formulare des gleichen Typs. Sie können die Beispieldaten verwenden, die mit dieser Anleitung bereitgestellt werden.

Erstellen einer Formularerkennungsressource

Weitere Informationen finden Sie unter Erstellen einer Formularerkennung-Ressource.

Trainieren Ihres Modells

Sie müssen ein Formularerkennungsmodell mit Ihren Eingabeformularen trainieren, bevor Sie diesen Skill verwenden können. Verwenden Formularerkennung Modelle erläutert, wie ein Modell trainiert wird. Sie können Beispieldaten verwenden oder eigene Angeben.

Nachdem das Modell trainiert wurde, kopieren Sie seinen ID-Wert an einen sicheren Speicherort.

Einrichten des benutzerdefinierten Skills

In diesem Tutorial wird das Projekt AnalyzeForm im GitHub-Repository Azure Search Power Skills verwendet. Klonen Sie dieses Repository auf Ihrem lokalen Computer, und navigieren Sie zu Vision/AnalyzeForm/ , um auf das Projekt zuzugreifen. Öffnen Sie dann AnalyzeForm.csproj in Visual Studio. Dieses Projekt erstellt eine Azure Functions-Ressource, die die Schnittstelle für benutzerdefinierte Skills erfüllt und für die Azure Cognitive Search-Anreicherung verwendet werden kann. Es nimmt als Eingabe Formulardokumente entgegen und gibt die angegebenen Schlüssel-Wert-Paare (als Text) aus.

Fügen Sie als Erstes Umgebungsvariablen auf Projektebene hinzu. Suchen Sie im linken Bereich das Projekt AnalyzeForm, klicken Sie mit der rechten Maustaste darauf, und wählen Sie Eigenschaften aus. Wählen Sie im Fenster Eigenschaften die Registerkarte Debuggen aus, und suchen Sie dann das Feld Umgebungsvariablen . Wählen Sie Hinzufügen aus, um die folgenden Variablen hinzuzufügen:

  • FORMS_RECOGNIZER_ENDPOINT_URL mit Ihrer Endpunkt-URL als Wert.
  • FORMS_RECOGNIZER_API_KEY mit Ihrem Abonnementschlüssel als Wert.
  • FORMS_RECOGNIZER_MODEL_ID mit der ID des trainierten Modells als Wert.
  • FORMS_RECOGNIZER_RETRY_DELAY mit dem Wert „1000“. Dieser Wert ist die Zeit in Millisekunden, die das Programm vor dem erneuten Übermitteln der Abfrage wartet.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS mit dem Wert „100“. Dieser Wert gibt an, wie oft das Programm den Dienst abfragt, während es versucht, eine erfolgreiche Antwort zu erhalten.

Öffnen Sie als Nächstes AnalyzeForm.cs, und suchen Sie die Variable fieldMappings, die auf die Datei field-mappings.json verweist. Diese Datei (und die darauf verweisende Variable) definiert die Liste der Schlüssel, die Sie aus Ihren Formularen extrahieren möchten, mit einer benutzerdefinierten Bezeichnung für jeden Schlüssel. Der Wert { "Address:", "address" }, { "Invoice For:", "recipient" } bedeutet beispielsweise, dass das Skript nur die Werte für die erkannten Felder Address: und Invoice For: speichert und diese Werte als "address" bzw. "recipient" bezeichnet.

Beachten Sie abschließend die Variable contentType. Dieses Skript führt das angegebene Formularerkennungsmodell für Remotedokumente aus, auf die durch die URL verwiesen wird. Der Inhaltstyp ist somit application/json. Wenn Sie lokale Dateien analysieren möchten, indem Sie ihre Bytestreams in die HTTP-Anforderungen einschließen, müssen Sie den contentType in den entsprechenden MIME-Typ für Ihre Datei ändern.

Testen der Funktion aus Visual Studio

Nachdem Sie das Projekt bearbeitet haben, speichern Sie es, und legen Sie das Projekt AnalyzeForm als Startprojekt in Visual Studio fest (sofern es nicht bereits festgelegt ist). Drücken Sie dann F5, um die Funktion in Ihrer lokalen Umgebung auszuführen. Verwenden Sie einen REST-Dienst wie Postman, um die Funktion aufzurufen.

HTTP-Anforderung

Sie führen zum Aufrufen der Funktion die folgende Anforderung aus.

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

Anforderungstext

Beginnen Mit der Anforderungstextvorlage

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

Hier müssen Sie die URL eines Formulars angeben, das denselben Typ aufweist wie die Formulare, mit denen Sie trainiert haben. Zu Testzwecken können Sie eines Ihrer Trainingsformulare verwenden. Wenn Sie den cURL-Schnellstart befolgt haben, befinden sich Ihre Formulare in einem Azure Blob Storage-Konto. Öffnen Sie Azure Storage-Explorer, suchen Sie eine Formulardatei, klicken Sie mit der rechten Maustaste darauf, und wählen Sie Shared Access Signature abrufen aus. Im nächsten Dialogfeld werden eine URL und ein SAS-Token bereitgestellt. Geben Sie diese Zeichenfolgen in die Felder "formUrl" und "formSasToken" Ihres Anforderungstexts ein.

Azure Storage-Explorer mit ausgewähltem PDF-Dokument

Wenn Sie ein Remotedokument analysieren möchten, das sich nicht in Azure Blob Storage befindet, fügen Sie dessen URL in das Feld "formUrl" ein, und lassen Sie das Feld "formSasToken" leer.

Hinweis

Wenn der Skill in ein Skillset integriert ist, werden die URL und das Token von Cognitive Search bereitgestellt.

Antwort

Die Antwort sollte in etwa wie hier dargestellt aussehen:

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

Veröffentlichen der Funktion in Azure

Wenn Sie mit dem Funktionsverhalten zufrieden sind, können Sie sie veröffentlichen.

  1. Klicken Sie in Visual Studio im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus. Wählen Sie Neu erstellen>Veröffentlichen.
  2. Wenn Sie Visual Studio noch nicht mit Ihrem Azure-Konto verbunden haben, wählen Sie Konto hinzufügen... aus.
  3. Befolgen Sie die Anweisungen auf dem Bildschirm. Geben Sie einen eindeutigen Namen für Ihren App-Dienst, das Azure-Abonnement, die Ressourcengruppe, den Hostingplan und das gewünschte Speicherkonto an. Sie können eine neue Ressourcengruppe, einen neuen Hostingplan und ein neues Speicherkonto erstellen, wenn Sie noch nicht über diese verfügen. Wählen Sie Erstellen aus, wenn Sie fertig sind.
  4. Beachten Sie die Website-URL nach Abschluss der Bereitstellung. Diese URL ist die Adresse der Funktions-App in Azure. Speichern Sie sie an einem temporären Speicherort.
  5. Navigieren Sie im Azure-Portal zur Ressourcengruppe, und suchen Sie nach der von Ihnen veröffentlichten Funktion AnalyzeForm. Im Abschnitt Verwalten sollten Sie Hostschlüssel angezeigt werden. Kopieren Sie den Standardhostschlüssel, und speichern Sie ihn an einem temporären Speicherort.

Herstellen einer Verbindung mit Ihrer Pipeline

Um diesen Skill in einer Cognitive Search-Pipeline zu nutzen, müssen Sie Ihrem Skillset eine Skilldefinition hinzufügen. Der folgende JSON-Block ist ein Beispiel für eine Skilldefinition. (Sie sollten die Eingaben und Ausgaben entsprechend Ihrem Szenario und Ihrer Skillsetumgebung aktualisieren.) Ersetzen Sie AzureFunctionEndpointUrl durch Ihre Funktions-URL und AzureFunctionDefaultHostKey durch Ihren Hostschlüssel.

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