Как передать загруженный файл JPEG в функцию в Django - PullRequest
3 голосов
/ 06 апреля 2019

Я пытаюсь загрузить jpeg в django, а затем передать jpeg в функцию, которая будет читать, отправлять запрос на публикацию в OCR API. Кажется, я не могу передать сам файл jpeg и не могу понять, как просто передать байты в функцию.

views- попытка вызова функции read_menu в функции upload_file.

def ocr_space_file(filename, overlay=False, api_key='helloworld', language='eng'):
    payload = {'isOverlayRequired': overlay,
               'apikey': api_key,
               'language': language,
               }
    with open(filename, 'rb') as f:
        r = requests.post('https://api.ocr.space/parse/image',
                          files={filename: f},
                          data=payload,
                          )
    return r.content.decode()

def read_menu(image, api_key):
    output = ocr_space_file(image, overlay=False, api_key=api_key, language='eng')
    output = output.split('\\n')
    words = [i.replace('\\r',"") for i in output]
    return words

def upload_file(request):
    if request.method == 'POST':
        uploaded_menu = request.FILES['menu_image'].file.read()
        with open(uploaded_menu, 'rb') as f:
            words = read_menu(f, api_key)
            #print(type(f))
        print(words)

    return render(request, 'main/home.html')

Это обеспечивает "ValueError at встроенный нулевой байт "

Кроме того, read_menu ("menu_image.jpeg") работает локально, если это дает какую-либо информацию.

Ценю любую помощь или руководство! Спасибо!

1 Ответ

0 голосов
/ 06 апреля 2019

В вашем коде вы не вызываете функцию read_menu.Все зависит от функции upload_file, чем то, что она вызовет функцию read_menu, которая комментируется.Пожалуйста, раскомментируйте его и попробуйте снова.

...