Могу ли я заставить команду pytesseract правильно работать в pycharm, который выдает ошибки - PullRequest
0 голосов
/ 12 декабря 2018

Я определяю функцию, которая преобразует изображение в оттенки серого (черно-белый), после чего я передаю его:

text = pytesseract.image_to_string(Image.open(gray_scale_image))

, а затем я печатаю текст, который я получаю, новыдает ошибки:

Traceback (most recent call last):
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\PIL\Image.py", line 2613, in open
fp.seek(0)
AttributeError: 'numpy.ndarray' object has no attribute 'seek'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/HP/PycharmProjects/nayaproject/new.py", line 17, in <module>
text = pytesseract.image_to_string(Image.open(g))
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\PIL\Image.py", line 2615, in open
fp = io.BytesIO(fp.read())
AttributeError: 'numpy.ndarray' object has no attribute 'read'

И вместо Image.open (оттенки серого), когда я использую Image.fromarray (оттенки серого), я получаю следующие ошибки:

Traceback (most recent call last):
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 170, in run_tesseract
proc = subprocess.Popen(cmd_args, **subprocess_args())
  File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 997, in _execute_child
startupinfo)

FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/HP/PycharmProjects/nayaproject/new.py", line 17, in <module>
text = pytesseract.image_to_string(Image.fromarray(g))
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 294, in image_to_string
return run_and_get_output(*args)
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 202, in run_and_get_output
run_tesseract(**kwargs)
  File "C:\Users\HP\PycharmProjects\nayaproject\venv\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract
raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

Я работаю надPyCharm, и я уже установил Pillow, numpy, opencv-python, pip и pytesseract для этого проекта.

1 Ответ

0 голосов
/ 12 декабря 2018

Поскольку я предполагаю, что gray_scale_image выводится из OpenCV и, следовательно, является пустым массивом, как показывает ошибка

AttributeError: 'numpy.ndarray' object has no attribute 'read'

, вам необходимо преобразовать массив в объект PIL.Исходя из моего собственного опыта, я предлагаю вам автоматически преобразовать массив numpy в np.uint8, потому что PIL работает с 8-битными, и у вас обычно нет обзора того, что получается из алгоритмов OpenCV.

text = pytesseract.image_to_string(Image.fromarray(gray_scale_image.astype(np.uint8)))

Если вышеупомянутоене работает, вы определенно не передаете массив изображений любой формы.Попробуйте ввести их, чтобы найти символ аргумента:

print(type(gray_scale_image))
print(gray_scale_image.shape)

После того, как это решит вашу первую проблему, возникнет новая, о которой вы еще не знаете.Вам нужно добавить путь к вашему pytesseract

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

Решение состоит в том, чтобы добавить ваш путь в начале

pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
TESSDATA_PREFIX = 'C:/Program Files (x86)/Tesseract-OCR'
...