Распознавание текста на изображении
Возможности компьютеров растут с каждым днём. И давайте рассмотрим как на Python "прочитать" текст с картинки. Сразу хочу отметить, картинка должна быть высокого качества.
Для начала ставим tesseract
.
tesseract - это OCR движок.
OCR - оптическое распознавание текста
sudo apt-get install tesseract-ocr
далее ставим через pip3
sudo pip3 install pytesseract
sudo pip3 install tesseract
sudo pip3 install tesseract-ocr
Если не работает pip3 - выполните команду sudo apt install python3-pip
Далее качаете отсюда "модуль" русского языка для tesseract.
Кладём его в папку /usr/share/tesseract-ocr/tessdata
Сделать это можно командой:
sudo cp rus.traineddata /usr/share/tesseract-ocr/tessdata/rus.traineddata
Вызывать её нужно находясь в папке со скаченным файлом rus.traineddata
Если у Вас нет PIL, то ставим и его.
PIL - Python Image Library.
pip3 install pillow
#импортируем нужные библиотеки
from PIL import Image
import pytesseract
#проверяем запущен ли скрипт из консоли
if __name__ == '__main__':
#открываем или создаём файл для записи
#флаг 'w' - говорит, что файл открывается для записи а если не его нет, то создаётся
f= open('text_photo.txt','w')
#получаем текст из фото
text = pytesseract.image_to_string(Image.open('/home/zheev/projects/text/1675157.jpg'), lang='rus')
#записываем его
f.write(text)
Примеры, картинка и результат
Всё ломается: чувства. пюди.
угюг. Особенно утюг меня
расстроил. Вот уж от него ‚
не ожидапі ‘
‚Аштюсот &
Хрен, положенный
на мнение
окружающих,
обеспечивает
спокойную и
счастливую жизнь.
— Фаина Раневская
Замечапи, что люди курят кальян
В ресторанах С таким видом,
будто ТОЛЬКО что завоевали
Константинополь?
1 КОРЗИНА
«Барселона»
«Челси»
«Бавария»
«Ювентус»
«Бенфика»
«ПСЖ»
«Зенит»
ПСВ
ЕШЧП 5Р0ПТ
2 КОРЗИНА
«Реал»
«Атлетико»
«Порту»
«Арсенал»
«МЮ»
«Валенсия»
«Байер»
«Сити»
3 КОРЗИНА
«Шахтер»
«Севилья»
«ЛИОН»
«динамо»
«Олимпиакос»
ЦСКА
«Галатасарай»
«Рома»
4 КОРЗИНА
БАТЭ
«Боруссия» М
«Вольфсбург»
«динамо» Зг
«Маккаби» Т-А
«Гент»
«Мальмё»
«Астана»
Итог
Как видите - иногда слова парсятся в верхнем регистре, но в целом всё работает корректно и после такого "парсинга" достаточно немного поправить распознанный текст.
Материал подготовлен автором @zheev