Поделиться через


Пример: Создание пользовательского умения распознавателя форм (архивировано)

Этот пример архивируется и не поддерживается. В нем описано, как создать настраиваемый навык распознавателя документов с помощью C# и Visual Studio.

Необходимые условия

  • Visual Studio (любой выпуск).
  • По крайней мере пять форм одного типа. В этом руководстве можно использовать примеры данных.

Создание ресурса Распознавателя форм

См. создание ресурса распознавателя форм

Обучение модели

Перед использованием этой функции необходимо обучить модель Form Recognizer с помощью входных форм. использование моделей распознавателя документов объясняет, как обучить модель. Вы можете использовать примеры данных или предоставить собственные.

После обучения модели скопируйте его значение идентификатора в безопасное расположение.

Настройте пользовательский навык

В этом руководстве используется проект AnalyzeForm в репозитории GitHub Azure Search Power Skills. Клонируйте этот репозиторий на локальный компьютер и перейдите к Vision/AnalyzeForm/ для доступа к проекту. Затем откройте AnalyzeForm.csproj в Visual Studio. Этот проект создает ресурс функции Azure, который соответствует интерфейсу пользовательских навыков и может использоваться для обогащения Azure Cognitive Search. Он принимает документы формы в качестве входных данных и выводит (как текст) пары "ключ-значение", которые вы указали.

Сначала добавьте переменные среды уровня проекта. Найдите проект AnalyzeForm на левой панели, щелкните его правой кнопкой мыши и выберите Свойства. В окне свойств выберите вкладку Отладка, а затем найдите поле переменных среды. Выберите Добавить, чтобы добавить следующие переменные:

  • FORMS_RECOGNIZER_ENDPOINT_URL со значением, заданным в URL-адресе конечной точки.
  • FORMS_RECOGNIZER_API_KEY со значением, заданным для ключа подписки.
  • FORMS_RECOGNIZER_MODEL_ID со значением, заданным для идентификатора обученной модели.
  • FORMS_RECOGNIZER_RETRY_DELAY с установленным значением 1000. Это значение — это время в миллисекундах, которое программа будет ожидать, прежде чем повторить запрос.
  • FORMS_RECOGNIZER_MAX_ATTEMPTS со значением, равным 100. Это значение — это количество раз, когда программа запрашивает службу при попытке получить успешный ответ.

Затем откройте AnalyzeForm.cs и найдите переменную fieldMappings, которая ссылается на файл field-mappings.json. Этот файл (и переменная, ссылающаяся на нее) определяет список ключей, которые необходимо извлечь из форм, и настраиваемую метку для каждого ключа. Например, значение { "Address:", "address" }, { "Invoice For:", "recipient" } означает, что скрипт будет сохранять только значения обнаруженных полей Address: и Invoice For:, соответственно обозначая их как "address" и "recipient".

Наконец, обратите внимание на переменную contentType. Этот скрипт запускает данную модель распознавания на удаленных документах, указанных URL-адресом, поэтому тип содержимого - application/json. Если вы хотите проанализировать локальные файлы, включив их потоки байтов в HTTP-запросы, необходимо изменить contentType на соответствующий тип MIME для файла.

Проверка функции из Visual Studio

После изменения проекта сохраните его и задайте проект AnalyzeForm в качестве запускаемого проекта в Visual Studio (если он еще не задан). Затем нажмите F5, чтобы запустить функцию в локальной среде. Используйте службу REST, например Postman для вызова функции.

HTTP-запрос

Чтобы вызвать функцию, выполните следующий запрос.

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

Текст запроса

Начните с шаблона текста запроса

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

Здесь необходимо указать URL-адрес формы того же типа, которую вы использовали для обучения. Для тестирования можно использовать одну из форм обучения. Если вы следовали краткому руководству по cURL, ваши формы будут находиться в учетной записи Azure Blob Storage. Откройте Azure Storage Explorer, найдите файл формы, щелкните его правой кнопкой мыши и выберите Получить токен доступа с разделяемыми правами. В следующем диалоговом окне будет указан URL-адрес и маркер SAS. Введите эти строки в полях "formUrl" и "formSasToken" текста запроса соответственно.

Azure Storage Explorer; выбран документ PDF

Если вы хотите проанализировать удаленный документ, который не используется в хранилище BLOB-объектов Azure, вставьте ЕГО URL-адрес в поле "formUrl" и оставьте поле "formSasToken" пустым.

Заметка

Если навык интегрирован в набор навыков, URL-адрес и маркер будут предоставлены Когнитивным поиском.

Ответ

Вы увидите ответ, аналогичный следующему примеру:

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

Публикация функции в Azure

Если вы удовлетворены поведением функции, его можно опубликовать.

  1. В обозревателе решений в Visual Studio щелкните правой кнопкой мыши на проект и выберите Опубликовать. Выберите Создать>Опубликовать.
  2. Если вы еще не подключили Visual Studio к учетной записи Azure, выберите Добавить учетную запись....
  3. Следуйте инструкциям на экране. Укажите уникальное имя службы приложений, подписку Azure, группу ресурсов, план размещения и учетную запись хранения, которую вы хотите использовать. Вы можете создать новую группу ресурсов, новый план размещения и новую учетную запись хранения, если у вас еще нет этих ресурсов. По завершении выберите Создать.
  4. После завершения развертывания обратите внимание на URL-адрес сайта. Этот URL-адрес - адрес вашего приложения-функции в Azure. Сохраните его во временное место.
  5. На портале Azureперейдите в группу ресурсов и найдите опубликованную функцию AnalyzeForm. В разделе Управление вы увидите ключи хоста. Скопируйте ключ узла по умолчанию и сохраните его во временном расположении.

Подключение к конвейеру

Чтобы использовать этот навык в конвейере Когнитивного поиска, необходимо добавить определение навыка в набор навыков. Следующий блок JSON — это пример определения навыка (необходимо обновить входные и выходные данные, чтобы отразить конкретный сценарий и среду набора навыков). Замените AzureFunctionEndpointUrl на URL-адрес вашей функции, а AzureFunctionDefaultHostKey — на ключ вашего узла.

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