Compartilhar via


Exemplo: criar um Reconhecimento de Formulários habilidade personalizada (arquivado)

Este exemplo é arquivado e sem suporte. Ele explicou como criar um Reconhecimento de Formulários habilidade personalizada usando C# e Visual Studio.

Pré-requisitos

  • Visual Studio (qualquer edição).
  • Um conjunto com pelo menos cinco formulários do mesmo tipo. Você pode usar dados de exemplo fornecidos com este guia.

Criar um recurso do Reconhecimento de Formulários

Consulte Criar um recurso de Reconhecimento de Formulários

Treinar seu modelo

Você precisará treinar um modelo de reconhecimento de formulários com seus formulários de entrada antes de usar essa habilidade. Usar modelos Reconhecimento de Formulários explica como treinar um modelo. Você pode usar dados de exemplo ou fornecer seus próprios.

Depois que o modelo for treinado, copie seu valor de ID para um local seguro.

Configure a habilidade personalizada

Este tutorial usa o projeto AnalyzeForm no repositório GitHub do Azure Search Power Skills. Clone esse repositório em seu computador local e navegue até Vision/AnalyzeForm/ para acessar o projeto. Em seguida, abra AnalyzeForm.csproj no Visual Studio. Este projeto cria um recurso de função do Azure que atende à interface de habilidade personalizada e pode ser usado para o enriquecimento de pesquisa cognitiva do Azure. Ele usa documentos de formulário como entradas e gera (como texto) os pares de chave/valor que você especificar.

Primeiro, adicione as variáveis de ambiente no nível de projeto. Localize o projeto AnalyzeForm no painel esquerdo, clique nele com o botão direito do mouse e selecione Propriedades. Na janela Propriedades , selecione a guia Depurar e localize o campo Variáveis de ambiente . Selecione Adicionar para adicionar as seguintes variáveis:

  • FORMS_RECOGNIZER_ENDPOINT_URL com o valor definido para a URL do ponto de extremidade.
  • FORMS_RECOGNIZER_API_KEY com o valor definido para sua chave de assinatura.
  • FORMS_RECOGNIZER_MODEL_ID com o valor definido como a ID do modelo que você treinou.
  • FORMS_RECOGNIZER_RETRY_DELAY com o valor definido como 1000. Esse valor é o tempo em milissegundos que o programa aguardará antes de repetir a consulta.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS com o valor definido como 100. Esse valor é o número de vezes que o programa consultará o serviço na tentativa de obter uma resposta bem-sucedida.

Em seguida, abra AnalyzeForm.cs e localize a fieldMappings variável, que faz referência à field-mappings.jsno arquivo. Esse arquivo (e a variável que faz referência a ele) define a lista de chaves que você deseja extrair de seus formulários e um rótulo personalizado para cada chave. Por exemplo, um valor de { "Address:", "address" }, { "Invoice For:", "recipient" } significa que o script só salvará os valores para os Address: campos detectados e Invoice For: que rotularão esses valores com "address" e "recipient", respectivamente.

Por fim, observe a variável contentType. Esse script executa o modelo de reconhecimento de formulários fornecido em documentos remotos que são referenciados pela URL, portanto, o tipo de conteúdo é application/json. Se desejar analisar arquivos locais incluindo seus fluxos de bytes nas solicitações HTTP, você precisará alterar o contentType para o tipo MIME apropriado para o arquivo.

Testar a função do Visual Studio

Depois de editar o projeto, salve-o e configure o projeto AnalyzeForm como o projeto de inicialização no Visual Studio (se ele ainda não estiver configurado). Em seguida, pressione F5 para executar a função em seu ambiente local. Use um serviço REST como o postmaster para chamar a função.

Solicitação HTTP

Você fará a solicitação a seguir para chamar a função.

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

Corpo da solicitação

Começar com o modelo do corpo da solicitação

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

Aqui, você precisará fornecer a URL de um formulário que tenha o mesmo tipo que os formulários com os quais você treinou. Para fins de teste, você pode usar um dos seus formulários de treinamento. Se você seguiu o guia de início rápido cURL, seus formulários estarão localizados em uma conta de Armazenamento de Blobs do Azure. Abra Gerenciador de Armazenamento do Azure, localize um arquivo de formulário, clique nele com o botão direito do mouse e selecione obter assinatura de acesso compartilhado. A próxima janela de diálogo fornecerá uma URL e um token SAS. Insira essas cadeias de caracteres nos campos "formUrl" e "formSasToken" do corpo da solicitação, respectivamente.

Gerenciador de Armazenamento do Azure; um documento PDF está selecionado

Se você quiser analisar um documento remoto que não esteja no Armazenamento de Blobs do Azure, cole sua URL no "formUrl"campo e deixe"formSasToken" o campo vazio.

Observação

Quando a habilidade for integrada em um conjunto de habilidades, a URL e o token serão fornecidos por Pesquisa Cognitiva.

Resposta

Você deverá ver uma resposta semelhante ao exemplo a seguir:

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

Publicar a função no Azure

Quando estiver satisfeito com o comportamento da função, você poderá publicá-la.

  1. No Gerenciador de soluções no Visual Studio, clique com o botão direito no projeto e selecione Publicar. Escolha Criar Novo>Publicar.
  2. Se você ainda não conectou o Visual Studio à sua conta do Azure, selecione Adicionar uma conta...
  3. Siga os prompts na tela. Será solicitada a especificação de um nome exclusivo para o serviço de aplicativo, a assinatura do Azure, o grupo de recursos, o plano de hospedagem e a conta de armazenamento que deseja usar. Você pode criar um novo grupo de recursos, um novo plano de hospedagem e uma conta de armazenamento se ainda não tiver nenhuma dessas opções. Ao terminar, selecione Criar.
  4. Depois que a implantação for concluída, anote a URL do Site. Ela é o endereço do seu aplicativo de funções no Azure. Salve-a em uma localização temporária.
  5. No portal do Azure, navegue até o Grupo de Recursos e procure a função AnalyzeForm que foi publicada. Na seção Gerenciar, você deverá ver as chaves do host. Copie a chave de host padrão e salve-a em um local temporário.

Conectar-se ao seu pipeline

Para usar essa habilidade em um pipeline Pesquisa Cognitiva, você precisará adicionar uma definição de habilidade ao seu Skill. O bloco JSON a seguir é uma definição de habilidade de exemplo (você deve atualizar as entradas e saídas para refletir seu cenário específico e o ambiente do conjunto de habilidades). Substitua AzureFunctionEndpointUrl pela URL da função e substitua AzureFunctionDefaultHostKey pela sua chave de 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"
        }
      ]
    }
  ]
}