Проблемы со скоростью распознавания форм - PullRequest
0 голосов
/ 31 марта 2020

Я использую пользовательскую модель с метками (созданную с помощью инструмента маркировки образцов) и получаю результаты с помощью "Python Form Recognizer Asyn c Analyze" V2 SDK Code из нижней части этого 1. стр. В основном это работает, но для получения одностраничного PDF-файла потребовалось более 20 секунд, чтобы получить результаты (используется 6 меток, модель оценки S0). 150 одностраничных pdf файлов заняли более часа. Мы также протестировали предварительную версию V1 SDK (без меток) распознавателя форм, которая была значительно быстрее , чем V2.

Я знаю, что V2 теперь асин c, но есть ли что-нибудь, что можно сделать, чтобы ускорить распознавание формы? Ниже приведен код, который я в основном использую:

########### Python Form Recognizer Async Analyze #############
import json
import time
from requests import get, post

# Endpoint URL
endpoint = r"<endpoint>"
apim_key = "<subsription key>"
model_id = "<model_id>"
post_url = endpoint + "/formrecognizer/v2.0-preview/custom/models/%s/analyze" % model_id
source = r"<file path>"
params = {
    "includeTextDetails": True
}

headers = {
    # Request headers
    'Content-Type': '<file type>',
    'Ocp-Apim-Subscription-Key': apim_key,
}
with open(source, "rb") as f:
    data_bytes = f.read()

try:
    resp = post(url = post_url, data = data_bytes, headers = headers, params = params)
    if resp.status_code != 202:
        print("POST analyze failed:\n%s" % json.dumps(resp.json()))
        quit()
    print("POST analyze succeeded:\n%s" % resp.headers)
    get_url = resp.headers["operation-location"]
except Exception as e:
    print("POST analyze failed:\n%s" % str(e))
    quit() 

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.")

1 Ответ

0 голосов
/ 31 марта 2020

Спасибо за вопрос, мы исследуем эту проблему и вскоре сообщим вам. Для анализа 150 отдельных страниц вы можете отправить все страницы параллельно в Form Recognizer, чтобы сократить время.

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