Пример: Создание пользовательского умения распознавателя форм (архивировано)
Этот пример архивируется и не поддерживается. В нем описано, как создать настраиваемый навык распознавателя документов с помощью 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"
текста запроса соответственно.
Если вы хотите проанализировать удаленный документ, который не используется в хранилище 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
Если вы удовлетворены поведением функции, его можно опубликовать.
- В обозревателе решений в Visual Studio щелкните правой кнопкой мыши на проект и выберите Опубликовать. Выберите Создать>Опубликовать.
- Если вы еще не подключили Visual Studio к учетной записи Azure, выберите Добавить учетную запись....
- Следуйте инструкциям на экране. Укажите уникальное имя службы приложений, подписку Azure, группу ресурсов, план размещения и учетную запись хранения, которую вы хотите использовать. Вы можете создать новую группу ресурсов, новый план размещения и новую учетную запись хранения, если у вас еще нет этих ресурсов. По завершении выберите Создать.
- После завершения развертывания обратите внимание на URL-адрес сайта. Этот URL-адрес - адрес вашего приложения-функции в Azure. Сохраните его во временное место.
- На портале 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"
}
]
}
]
}