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


Пример. Создание пользовательского навыка Распознаватель документов (архив)

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

Предварительные требования

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

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

См. статью Создание ресурса Распознаватель документов.

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

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

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

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

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

Сначала добавьте переменные среды на уровне проекта. В области слева выберите проект 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.js. Этот файл (и переменная, ссылающаяся на него) определяет список ключей, которые необходимо извлечь из документов, и пользовательскую метку для каждого ключа. Например, значение { "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, ваши формы будут находиться в учетной записи Хранилища BLOB-объектов Azure. Откройте Обозреватель службы хранилища Azure, выберите файл документа, щелкните его правой кнопкой мыши и выберите Получить подписанный URL-адрес. В следующем диалоговом окне будет предоставлен URL-адрес и маркер SAS. Введите эти строки в тексте запроса в полях "formUrl" и "formSasToken" соответственно.

Обозреватель службы хранилища Azure; выбран 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"
        }
      ]
    }
  ]
}