Распознаватель форм V2 / Затраты растут - PullRequest
0 голосов
/ 16 апреля 2020

В ответе ChadZ ответом является метрика c распознавателя форм, о котором я говорю Метрики распознавателя форм . В нашем тесте мы проверяем каталог на наличие файлов и последовательно анализируем их, ожидаем каждого ответа, записываем результаты, получаем следующий файл и так далее. Нет многопоточности.

Посмотрите на самый большой всплеск 14 апреля с 15330 звонками. Если предположить, что каждый вызов 14 апреля занимал 10 секунд (что было бы быстро, обычно это может занимать до минуты), то анализ занимал 153300 секунд, что составляет 2555 минут или 42,58 часа. Даже если анализ займет всего 5 секунд, что будет более 20 часов.

Конечно, я могу ошибаться, но в настоящее время лучшим логическим объяснением будет то, что также запросы на получение отслеживаются и выставляются счета.

Исходное сообщение

Я использую собственную модель с метками (созданную с помощью инструмента маркировки образцов) и получаю результаты с помощью "Python Распознаватель форм Asyn c Analyze" V2 Код SDK снизу этой этой страницы. Хотя asyn c в V2 намного медленнее, чем V1 (который я описал здесь ), он также кажется намного, намного дороже.

Исходный пример кода, чтобы получить результат после вызов post api выглядит следующим образом:

n_tries = 15
n_try = 0
wait_sec = 5
max_wait_sec = 60
while n_try < n_tries:
    try:
        resp = get(url = get_url, headers = {"Ocp-Apim-Subscription-Key": apim_key})
        resp_json = resp.json()
        if resp.status_code != 200:
            print("GET analyze results failed:\n%s" % json.dumps(resp_json))
            quit()
        status = resp_json["status"]
        if status == "succeeded":
            print("Analysis succeeded:\n%s" % json.dumps(resp_json))
            quit()
        if status == "failed":
            print("Analysis failed:\n%s" % json.dumps(resp_json))
            quit()
        # Analysis still running. Wait and retry.
        time.sleep(wait_sec)
        n_try += 1
        wait_sec = min(2*wait_sec, max_wait_sec)     
    except Exception as e:
        msg = "GET analyze results failed:\n%s" % str(e)
        print(msg)
        quit()
print("Analyze operation did not complete within the allocated time.")

Как вы можете видеть в исходном примере кода, он каждые 5 секунд смотрит на результат.

Моя проблема: мне кажется, что оплачивается не только вызов API для анализа документа, но и каждый запрос get для получения результатов.

Наш счет в десять раз больше с помощью V2. В настоящее время мы находимся в стадии тестирования, и мы обычно получаем около 400-500 документов в месяц, которые правильно отслеживались и выставлялись в V1. С V2 и приведенным выше примером кода у нас теперь есть 63690 (!!!!!) вызовов, каждый вызов оплачивается, расходы растут.

Кто-нибудь может подтвердить это поведение?

Лично я ' Я хотел бы вернуть операцию syn c, где ответ на вызов API также содержит результат анализа любого документа.

    try:
        url = base_url + "/models/" + model_id + "/analyze"
        with open(filepath, "rb") as f:
            data_bytes = f.read()
        response = requests.post(url=url, data=data_bytes, headers=headers)
        return response.json()
    except Exception as e:
        print(str(e))
        return None

к сожалению, это больше не работает .....

    try:
        response = requests.post(url=post_url, data=data_bytes, headers=headers)  # , params=params)
        if response.status_code != 202:
            return None
        # Success
        get_url = response.headers["operation-location"]
        return form_recognizerv2_getdata(get_url, subscription_key)
    except Exception as e:
        print("POST analyze failed:\n%s" % str(e))
        return None

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Вызовы GetAnalyzeResults не оплачиваются. Форма Recognizer выставляет счета только за проанализированные страницы, а не по транзакциям и запросам. График «Метрики распознавателя форм» показывает все ваши транзакции и вызовы API, включая GetAnalyzeResults, но вы не выставляете счета за них. Биллинг для V1 и V2 одинаков. Пожалуйста, свяжитесь со службой поддержки, если у вас возникли проблемы с оплатой.

Neta-MSFT

0 голосов
/ 17 апреля 2020

Я могу подтвердить, что в Form Recognizer v2 вызовы GET не оплачиваются. И звонок на поезд тоже бесплатный. Если есть проблема с оплатой, пожалуйста, свяжитесь со службой поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...