Telegram bot отправляющий текст с картинки обратно пользователю
При использовании фото с компьютера , ошибок нету , при попытке использования фото отправленного в телеграмме , выводит исключение указанное ниже.Вот полный код бота , у меня есть подозрения , что всё из-за неправильного указания переменной image = message.photo[0].file_id , но в интернете не нашёл точного пути , по которому можно обращаться к отправленному фото.
Я новичок в телеграм-ботах , поэтому попрошу от вас конкретики и наиболее простого , по-возможности , объяснения. Буду рад любой критике
bot = telebot.TeleBot(config.token)
@bot.message_handler(content_types= ["photo"])
def answer_to_photo(message):
image = message.photo[0].file_id
pytesseract.pytesseract.tesseract_cmd = r'C:\Tesseract-
OCR\tesseract.exe'
preprocess = "thresh"
image = cv2.imread(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
if preprocess == "tresh":
gray = cv2.threshold(gray, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
elif preprocess == "blur":
gray = cv2.median.Blur(gray, 3)
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)
text = pytesseract.image_to_string(Image.open(filename))
os.remove(filename)
bot.send_message(message.chat.id, text)
Генерируемое исключение(вставлю полный его текст по принципу "мало ли"):
Traceback (most recent call last):
File "shablon.py", line 58, in <module>
bot.polling(none_stop=True)
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 427, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 451, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 111, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\six.py", line 703, in reraise
raise value
File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "shablon.py", line 25, in answer_to_photo
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'