#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())
Итак, вот что происходит в этой функции:
- Я получаю ответ с файлом .zip
- Поскольку я ничего не сохраняю на диске , я сохраняю все в памяти с помощью
BytesIO
(честно говоря, я не совсем понимаю, почему я должен использовать BytesIO, потомуresp.content.read()
что это тоже типbytes
.) - Я снова создаю объекты подушек, используя
BytesIO
их . - Я сохраняю изображения в буфер, чтобы использовать их позже
- Объявив
result = img_buff.getvalue()
, что я преобразую объект pillow obj в байты.
И тогда я получаю эту ошибку.
Может быть, это потому, что текст на изображениях написан на русском языке? Что мне тогда делать?
Заранее благодарю вас!!
Комментарии:
1. Вы уверены, что необработанные байты потребляются
PyTessBaseAPI.SetImageFile
? Из сообщения об ошибке я бы предположил, что ввод (!), т. Е. «изображение», Не может быть правильно расшифрован. Вы пробовали передатьPIL.Image
объект или, может быть, путь к файлу?