Ошибка Tesserocr UnicodeDecodeError:

#python-3.x #python-tesseract

Вопрос:

Так что я застрял с этой ошибкой: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

Вот код. Я знаю, что это небрежно, но я просто пытаюсь понять, как решить проблему.

 def unzip(resp: ClientResponse):
    """Reading and unpacking archive in memory"""
    img_buff = BytesIO()   #creating in-memory buffer
    with ZipFile(BytesIO(await resp.content.read())) as unziped_pages:  #unzipping the archive in memory
        for page in unziped_pages.namelist():
            with Image.open(BytesIO(unziped_pages.read(page))) as im:  # type: Image.Image   #creating from bytes and extracting pictures one by one
                im.save(img_buff, format='JPEG', quality=100) # saving pictures as bytes to in-memory buffer
                result = img_buff.getvalue() # getting the bytes for each picture
                with PyTessBaseAPI() as api:    # < ---- this is where error starts
                    api.SetImageFile(result)
                    print(api.GetUTF8Text())
                    print(api.AllWordConfidences())
 

Итак, вот что происходит в этой функции:

  1. Я получаю ответ с файлом .zip
  2. Поскольку я ничего не сохраняю на диске , я сохраняю все в памяти с помощью BytesIO (честно говоря, я не совсем понимаю, почему я должен использовать BytesIO, потому resp.content.read() что это тоже тип bytes .)
  3. Я снова создаю объекты подушек, используя BytesIO их .
  4. Я сохраняю изображения в буфер, чтобы использовать их позже
  5. Объявив result = img_buff.getvalue() , что я преобразую объект pillow obj в байты.

И тогда я получаю эту ошибку.

Может быть, это потому, что текст на изображениях написан на русском языке? Что мне тогда делать?

Заранее благодарю вас!!

Комментарии:

1. Вы уверены, что необработанные байты потребляются PyTessBaseAPI.SetImageFile ? Из сообщения об ошибке я бы предположил, что ввод (!), т. Е. «изображение», Не может быть правильно расшифрован. Вы пробовали передать PIL.Image объект или, может быть, путь к файлу?