python - распознавание цифр со скриншота
Есть таблица чисел, например такая:
возможно ли при помощи PyTesseract вытащить из нее числа в список, где каждый элемент - строка таблицы, по типу так:
['535 598.25 2 188 783.51', '535 596.67 2 188 787,68'...] и т.д.?
Такие таблицы крайне некорректно распознаются, я полагаю, что из-за наличия границ ячеек таблицы. Основные ошибки при распознавании:
- Распознаются не все цифры (например, из 10 элементов распознается 6);
- Путает цифры 5, 3 и 8;
- Распознает сначала первый столбец, а потом второй.
В коде пробовал игнорировать все символы, кроме цифр, точки и запятой и пробела, помогает не особо.
from PIL import ImageGrab
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' #у меня тессеракт тут лежит
#дальше инструментом "Ножницы" (штатный инструмент Windows) выделяю таблицу и достаю скриншот из буфера обмена
my_image = ImageGrab.grabclipboard()
my_image.save('coordinates.png', 'PNG')
text = pytesseract.image_to_string(image, config='--psm 6 -c tessedit_char_whitelist=0123456789,. ').split('\n')
print(text)
Ответы (1 шт):
Автор решения: Robot
→ Ссылка
from PIL import Image, ImageEnhance
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
image = Image.open('test.png')
#Повышенние резкости изображения:
enhancer1 = ImageEnhance.Sharpness(image)
factor1 = 0.01 #чем меньше, тем больше резкость
im_s_1 = enhancer1.enhance(factor1)
text = pytesseract.image_to_string(im_s_1, config='--psm 6 -c tessedit_char_whitelist=0123456789,. ').split('\n')
print(text)
Перестал путать цифры, но в двух местах пропустить цифру (пометил плюсиком).
