Condividi tramite


Esempio: Creare una competenza personalizzata Riconoscimento modulo (archiviata)

Questo esempio viene archiviato e non supportato. Ha spiegato come creare una competenza personalizzata Riconoscimento modulo usando C# e Visual Studio.

Prerequisiti

  • Visual Studio (qualsiasi edizione).
  • Almeno cinque forme dello stesso tipo. È possibile usare i dati di esempio forniti con questa guida.

Creare una risorsa di riconoscimento modulo

Vedere Creare una risorsa Riconoscimento modulo

Eseguire training del modello

È necessario eseguire il training di un modello di Riconoscimento modulo con i moduli di input prima di usare questa competenza. Usare modelli Riconoscimento modulo spiega come eseguire il training di un modello. È possibile usare dati di esempio o fornire dati personalizzati.

Dopo aver eseguito il training del modello, copiare il valore ID in una posizione sicura.

Configurare la competenza personalizzata

Questa esercitazione usa il progetto AnalyzeForm nel repository GitHub di Azure Search Power Skills . Clonare questo repository nel computer locale e passare a Vision/AnalyzeForm/ per accedere al progetto. Aprire quindi AnalyzeForm.csproj in Visual Studio. Questo progetto crea una risorsa funzione di Azure che soddisfa l'interfaccia di competenza personalizzata e può essere usata per Ricerca cognitiva di Azure arricchimento. Accetta documenti di modulo come input e restituisce (come testo) le coppie chiave/valore specificate.

Aggiungere innanzitutto variabili di ambiente a livello di progetto. Individuare il progetto AnalyzeForm nel riquadro sinistro, fare clic con il pulsante destro del mouse su di esso e selezionare Proprietà. Nella finestra Proprietà selezionare la scheda Debug e quindi trovare il campo Variabili di ambiente . Selezionare Aggiungi per aggiungere le variabili seguenti:

  • FORMS_RECOGNIZER_ENDPOINT_URL con il valore impostato sull'URL dell'endpoint.
  • FORMS_RECOGNIZER_API_KEY con il valore impostato sulla chiave di sottoscrizione.
  • FORMS_RECOGNIZER_MODEL_ID con il valore impostato sull'ID del modello sottoposto a training.
  • FORMS_RECOGNIZER_RETRY_DELAY con il valore impostato su 1000. Questo valore è il tempo in millisecondi che il programma attenderà prima di ripetere la query.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS con il valore impostato su 100. Questo valore è il numero di volte in cui il programma eseguirà una query sul servizio durante il tentativo di ottenere una risposta riuscita.

Aprire quindi AnalyzeForm.cs e trovare la variabile, che fa riferimento al fieldMappings file field-mappings.json . Questo file (e la variabile a cui fa riferimento) definisce l'elenco di chiavi che si desidera estrarre dai moduli e un'etichetta personalizzata per ogni chiave. Ad esempio, un valore di { "Address:", "address" }, { "Invoice For:", "recipient" } significa che lo script salva solo i valori per i campi e Invoice For: rilevati Address: e e etichetta questi valori con "address" e "recipient", rispettivamente.

Infine, prendere nota della contentType variabile. Questo script esegue il modello Riconoscimento modulo specificato nei documenti remoti a cui fa riferimento l'URL, quindi il tipo di contenuto è application/json. Se si desidera analizzare i file locali includendo i flussi di byte nelle richieste HTTP, è necessario modificare il contentTypetipo MIME appropriato per il file.

Testare la funzione da Visual Studio

Dopo aver modificato il progetto, salvarlo e impostare il progetto AnalyzeForm come progetto di avvio in Visual Studio (se non è già impostato). Premere F5 per eseguire la funzione nell'ambiente locale. Usare un servizio REST come Postman per chiamare la funzione.

Richiesta HTTP

Si farà la richiesta seguente per chiamare la funzione.

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

Testo della richiesta

Iniziare con il modello del corpo della richiesta

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

Qui è necessario specificare l'URL di un modulo con lo stesso tipo dei moduli con cui è stato eseguito il training. A scopo di test, è possibile usare uno dei moduli di training. Se è stata seguita la guida introduttiva cURL, i moduli si trovano in un account Archiviazione BLOB di Azure. Aprire Azure Storage Explorer, individuare un file di modulo, fare clic con il pulsante destro del mouse e selezionare Recupera firma di accesso condiviso. La finestra di dialogo successiva fornirà un URL e un token di firma di accesso condiviso. Immettere queste stringhe rispettivamente nei "formUrl" campi e "formSasToken" del corpo della richiesta.

Esplora risorse di archiviazione di Azure; è selezionato un documento pdf

Se si vuole analizzare un documento remoto che non è in Archiviazione BLOB di Azure, incollare l'URL nel "formUrl" campo e lasciare vuoto il "formSasToken" campo.

Nota

Quando la competenza è integrata in un set di competenze, l'URL e il token verranno forniti da Ricerca cognitiva.

Risposta

La risposta dovrebbe essere simile all'esempio seguente:

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

Pubblicare la funzione in Azure

Quando si è soddisfatti del comportamento della funzione, è possibile pubblicarlo.

  1. Nel Esplora soluzioni in Visual Studio fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica. Scegliere Crea nuova>pubblicazione.
  2. Se Visual Studio non è già stato connesso all'account Azure, selezionare Aggiungi un account.
  3. Seguire le istruzioni visualizzate sullo schermo. Specificare un nome univoco per il servizio app, la sottoscrizione di Azure, il gruppo di risorse, il piano di hosting e l'account di archiviazione da usare. È possibile creare un nuovo gruppo di risorse, un nuovo piano di hosting e un nuovo account di archiviazione se non sono già disponibili. Al termine, selezionare Crea.
  4. Al termine della distribuzione, notare l'URL del sito. Questo URL è l'indirizzo dell'app per le funzioni in Azure. Salvarlo in una posizione temporanea.
  5. Nella portale di Azure passare al gruppo di risorse e cercare la AnalyzeForm funzione pubblicata. Nella sezione Gestisci dovrebbe essere presente un elenco Chiavi host. Copiare la chiave host predefinita e salvarla in una posizione temporanea.

Connettersi alla pipeline

Per usare questa competenza in una pipeline di Ricerca cognitiva, è necessario aggiungere una definizione di competenza al set di competenze. Il blocco JSON seguente è una definizione di competenza di esempio (è necessario aggiornare gli input e gli output per riflettere lo scenario e l'ambiente del set di competenze specifici). Sostituire AzureFunctionEndpointUrl con l'URL della funzione e sostituire AzureFunctionDefaultHostKey con la chiave host.

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