Exemplo: Criar um Reconhecedor de Formulários competência personalizada (Arquivado)
Este exemplo é arquivado e não é suportado. Explicou como criar uma Reconhecedor de Formulários competência personalizada com C# e Visual Studio.
Pré-requisitos
- Visual Studio (qualquer edição).
- Pelo menos cinco formas do mesmo tipo. Pode utilizar dados de exemplo fornecidos com este guia.
Criar um recurso Reconhecedor de Formulários
Veja Criar um recurso Reconhecedor de Formulários
Preparar o seu modelo
Terá de preparar um modelo de Reconhecedor de Formulários com os seus formulários de entrada antes de utilizar esta competência. Utilizar modelos Reconhecedor de Formulários explica como preparar um modelo. Pode utilizar dados de exemplo ou fornecer os seus próprios dados.
Assim que o modelo for preparado, copie o respetivo valor de ID para uma localização segura.
Configurar a competência personalizada
Este tutorial utiliza o projeto AnalyzeForm no repositório do GitHub Azure Search Power Skills . Clone este repositório para o seu computador local e navegue para Vision/AnalyzeForm/ para aceder ao projeto. Em seguida, abra AnalyzeForm.csproj no Visual Studio. Este projeto cria um recurso de Função do Azure que cumpre a interface de competências personalizada e pode ser utilizado para Azure Cognitive Search melhoramento. Assume os documentos de formulário como entradas e produz (como texto) os pares chave/valor que especificar.
Primeiro, adicione variáveis de ambiente ao nível do projeto. Localize o projeto AnalyzeForm no painel esquerdo, clique com o botão direito do rato no mesmo e selecione Propriedades. Na janela Propriedades , selecione o separador Depurar e, em seguida, localize o campo Variáveis de ambiente . Selecione Adicionar para adicionar as seguintes variáveis:
-
FORMS_RECOGNIZER_ENDPOINT_URL
com o valor definido para o URL do ponto final. -
FORMS_RECOGNIZER_API_KEY
com o valor definido para a sua chave de subscrição. -
FORMS_RECOGNIZER_MODEL_ID
com o valor definido para o ID do modelo que preparou. -
FORMS_RECOGNIZER_RETRY_DELAY
com o valor definido como 1000. Este valor é o tempo em milissegundos que o programa irá aguardar antes de repetir a consulta. -
FORMS_RECOGNIZER_MAX_ATTEMPTS
com o valor definido como 100. Este valor é o número de vezes que o programa irá consultar o serviço enquanto tenta obter uma resposta com êxito.
Em seguida, abra AnalyzeForm.cs e localize a fieldMappings
variável, que faz referência ao ficheiro field-mappings.json . Este ficheiro (e a variável que o referencia) define a lista de chaves que pretende extrair dos formulários e uma etiqueta personalizada para cada chave. Por exemplo, um valor de { "Address:", "address" }, { "Invoice For:", "recipient" }
significa que o script só guardará os valores dos campos e Invoice For:
detetados Address:
e etiquetará esses valores com "address"
e "recipient"
, respetivamente.
Por fim, tenha em atenção a contentType
variável . Este script executa o modelo de Reconhecedor de Formulários especificado em documentos remotos referenciados pelo URL, pelo que o tipo de conteúdo é application/json
. Se quiser analisar ficheiros locais ao incluir os respetivos fluxos de bytes nos pedidos HTTP, terá de alterar o para o contentType
tipo de MIME adequado para o seu ficheiro.
Testar a função a partir do Visual Studio
Depois de editar o projeto, guarde-o e defina o projeto AnalyzeForm como o projeto de arranque no Visual Studio (se ainda não estiver definido). Em seguida, prima F5 para executar a função no seu ambiente local. Utilize um serviço REST como o Postman para chamar a função.
Pedido HTTP
Fará o seguinte pedido para chamar a função.
POST http://localhost:7071/api/analyze-form
Corpo do pedido
Começar com o modelo do corpo do pedido
{
"values": [
{
"recordId": "record1",
"data": {
"formUrl": "<your-form-url>",
"formSasToken": "<your-sas-token>"
}
}
]
}
Aqui, terá de fornecer o URL de um formulário que tenha o mesmo tipo que os formulários que preparou. Para fins de teste, pode utilizar um dos seus formulários de preparação. Se seguiu o início rápido do cURL, os formulários estarão localizados numa conta Armazenamento de Blobs do Azure. Abra Explorador de Armazenamento do Azure, localize um ficheiro de formulário, clique com o botão direito do rato no mesmo e selecione Obter Assinatura de Acesso Partilhado. A janela de diálogo seguinte irá fornecer um URL e um token de SAS. Introduza estas cadeias nos "formUrl"
campos e "formSasToken"
do corpo do pedido, respetivamente.
Se quiser analisar um documento remoto que não esteja no Armazenamento de Blobs do Azure, cole o "formUrl"
URL no campo e deixe o "formSasToken"
campo em branco.
Nota
Quando a competência é integrada num conjunto de competências, o URL e o token serão fornecidos pelo Cognitive Search.
Resposta
Deverá ver uma resposta semelhante ao seguinte exemplo:
{
"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, pode publicá-lo.
- No Explorador de Soluções no Visual Studio, clique com o botão direito do rato no projeto e selecione Publicar. Selecione Criar Nova>Publicação.
- Se ainda não ligou o Visual Studio à sua conta do Azure, selecione Adicionar uma conta....
- Siga as instruções no ecrã. Especifique um nome exclusivo para o serviço de aplicações, a subscrição do Azure, o grupo de recursos, o plano de alojamento e a conta de armazenamento que pretende utilizar. Pode criar um novo grupo de recursos, um novo plano de alojamento e uma nova conta de armazenamento se ainda não os tiver. Quando tiver terminado, selecione Criar.
- Após a conclusão da implementação, repare no URL do Site. Este URL é o endereço da sua aplicação de funções no Azure. Guarde-o numa localização temporária.
- Na portal do Azure, navegue para o Grupo de Recursos e procure a
AnalyzeForm
Função que publicou. Na secção Gerir , deverá ver Chaves de Anfitrião. Copie a chave de anfitrião predefinida e guarde-a numa localização temporária.
Ligar ao pipeline
Para utilizar esta competência num pipeline do Cognitive Search, terá de adicionar uma definição de competência ao conjunto de competências. O seguinte bloco JSON é uma definição de competência de exemplo (deve atualizar as entradas e saídas para refletir o seu cenário específico e o ambiente do conjunto de competências). Substitua pelo AzureFunctionEndpointUrl
URL da função e substitua pela AzureFunctionDefaultHostKey
chave de anfitrião.
{
"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"
}
]
}
]
}