Azure Форма обучения распознаватель не находит данных - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь обучить распознаватель форм с помощью консоли 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))

Ответы [ 6 ]

1 голос
/ 05 февраля 2020

@ Маркус

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

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

и почтальон.

0 голосов
/ 28 января 2020

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

0 голосов
/ 24 января 2020

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

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

0 голосов
/ 23 января 2020

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

0 голосов
/ 23 января 2020

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

0 голосов
/ 22 января 2020

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

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

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

...