Обучение распознаванию форм Azure не обнаруживает данные

Я пытаюсь обучить распознаватель форм с помощью консоли API браузера (https://eastus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api/operations/TrainCustomModel/console). Я загрузил обучающие изображения в контейнер и создал SAS. Консоль API браузера генерирует следующий HTTP-запрос:

POST https://eastus.api.cognitive.microsoft.com/formrecognizer/v1.0-preview/custom/train?source=https://pythonimages.blob.core.windows.net/?sv=2019-02-02&ss=bfqt&srt=sco&sp=rl&se=2020-01-22T00:23:33Z&st=2020-01-21T16:23:33Z&spr=https&sig=••••••••••••••••••••••••••••••••&prefix=images HTTP/1.1
Host: eastus.api.cognitive.microsoft.com
Content-Type: application/json
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••

{
  "source": "string",
  "sourceFilter": {
    "prefix": "string",
    "includeSubFolders": true
  }
}

Однако я получаю ответ

Transfer-Encoding: chunked
x-envoy-upstream-service-time: 4
apim-request-id: 5ad37aa2-e251-4b61-98ae-023930b47d27
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Tue, 21 Jan 2020 16:25:03 GMT
Content-Type: application/json; charset=utf-8

{
  "error": {
    "code": "1004",
    "message": "Dataset path must be relative to local input mount path '/input' if local data is referenced."
  }
}

Я не понимаю, почему он ищет данные локально. Я экспериментировал с SAS, например включение имени контейнера (изображений) в http-адрес большого двоичного объекта, а не в качестве параметра запроса, но пока безуспешно.

Я также пробовал путь Python / REST (описанный здесь: https://docs.microsoft.com/en-gb/azure/cognitive-services/form-recognizer/quickstarts/python-train-extract-v1), который приводит к другой ошибке:

Response status code: 408
Response body: {'error': {'code': '1011', 'innerError': {'requestId': 'e7f9ef9f-97bc-4b6a-86f3-0b29c9591c87'}, 'message': 'The operation exceeded allowed time limit and was canceled. The common reasons are that the data source is too large or contains unsupported content. Please check that your request conforms to service limits and retry with redacted data source.'}}

Для полноты картины я использую следующий код (ключ / подпись * исключены :)

########### Python Form Recognizer Train #############
from requests import post as http_post

# Endpoint URL
base_url = r"https://markusformsrecognizer.cognitiveservices.azure.com/" + "/formrecognizer/v1.0-preview/custom"
source = r"https://pythonimages.blob.core.windows.net/images?sv=2019-02-02&ss=bfqt&srt=sco&sp=rl&se=2020-01-22T15:37:26Z&st=2020-01-22T07:37:26Z&spr=https&sig=*********************************"
headers = {
    # Request headers
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': '*********************************'
}
url = base_url + "/train" 
body = {"source": source}
try:
    resp = http_post(url = url, json = body, headers = headers)
    print("Response status code: %d" % resp.status_code)
    print("Response body: %s" % resp.json())
except Exception as e:
    print(str(e))

person Markus Svensén    schedule 21.01.2020    source источник
comment
Для ошибки 408, пожалуйста, поделитесь своими учебными документами, чтобы проверить.   -  person Ram-msft    schedule 22.01.2020


Ответы (7)


@Markus

Вы получили на это простой ответ? Мой запрос работает для конечной точки V1, но НЕ V2. Создание SAS URI для «Источника» не работает. Я все время получаю 400 неверный запрос: ошибка 1004. «Параметр« Источник »не является допустимым путем».

К вашему сведению: я тестировал это: https://westus2.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v2-preview/operations/TrainCustomModelAsync/console

и почтальон.

person Brian Southby    schedule 05.02.2020
comment
Брайан, нет, я этого не делал, и как только я заставил V2 работать, я придерживался этого. Немного иронично, что у вас такая же ошибка, но наоборот. - person Markus Svensén; 13.02.2020

Для кода ошибки 1004 Следуйте инструкциям ниже, чтобы получить исходный путь, содержащий учебные документы, и передать его в качестве значения в исходный ключ.

{
  "source": "string",
  "sourceFilter": {
    "prefix": "string",
    "includeSubFolders": true
  }
}

Замените URL-адрес подписи общего доступа (SAS) контейнера хранилища BLOB-объектов Azure. Чтобы получить URL-адрес SAS, откройте обозреватель хранилища Microsoft Azure, щелкните контейнер правой кнопкой мыши и выберите Получить подпись общего доступа. Убедитесь, что установлены разрешения на чтение и список, и нажмите «Создать». Затем скопируйте значение в раздел URL. Он должен иметь вид: https: //.blob.core.windows.net/container name? SAS value.

person Ram-msft    schedule 22.01.2020
comment
Так что я (думаю, что я) сделал именно это. Как я уже писал, я экспериментировал с различными комбинациями параметров источника и префикса, а также с различными, более вручную созданными версиями SAS, основываясь на том, что я узнал о них при быстром просмотре, но пока ничего не помогло. . - person Markus Svensén; 23.01.2020

Пожалуйста, используйте новую версию Form Recognizer v2.0, это асинхронный API, который позволяет обучать большие наборы данных и анализировать большие документы. https://aka.ms/form-recognizer/api, быстрое начало работы - https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/quickstarts/python-train-extract

person Neta    schedule 22.01.2020
comment
Итак, как мне получить доступ к версии 2.0 распознавателя форм? Я просто попытался создать новый распознаватель, на этот раз выделенный для Западной Европы (мой последний был для Востока США), но я снова получил экземпляр v1.0. Спасибо! - person Markus Svensén; 23.01.2020

Чтобы приступить к работе с Form Recognizer, войдите в используя эту ссылку, чтобы создать ресурс Form Recognizer (для версии 2.0 (предварительная версия) используйте регионы West US 2 или West Europe).

person Ram-msft    schedule 23.01.2020

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

{"source": "string", "sourceFilter": {"prefix": "", "includeSubFolders": true}}

person Fremin Abreu    schedule 24.01.2020
comment
Пробовал это в консоли браузера, но это не работает, та же ошибка, что и раньше. :-( - person Markus Svensén; 27.01.2020

Код быстрого запуска Python для версия 2.0 вроде работает, по крайней мере, у меня больше нет ошибок. Сейчас я чувствую себя немного глупо из-за того, что не пробовал это раньше. Консоль API (веб-браузера), ссылка на которую находится на странице быстрого запуска средства распознавания форм, кажется, автоматически предполагает, что я хочу использовать версию 1.0, и нет возможности изменить это (или, возможно, я просто что-то контролировал). Следовательно, я предположил, что мне выделили пробную версию v1.0, и поэтому я использовал ее, когда впервые попробовал Python Quick Start.

person Markus Svensén    schedule 28.01.2020

Вместо использования только SAS URI в «источнике» параметра Request при вызове API POST используйте полную строку контейнера, за которой следует маркер SAS URI.

Например:

https: //.blob.core.windows.net//

person Jagadeesh Manukonda    schedule 20.05.2020