В данной статье мы рассмотрим как с помощью Python распознать текст с картинки.Распознавать и обрабатывать текст с изображения сегодня важная, востребованная и распространенная задача. Распознавание текста с картинки применяться для оцифровки книг, считывание данных с бланков и анкет, извлечение информации из визитных карточек в список контактов, распознавание паспортных данных, автоматическое распознавание номерного знака, технологии для помощи слепым и слабовидящим и др.
Все эти задачи решаются с помощью моделей компьютерного зрения и машинного обучения на языке программирования Python. Для решения этих задач в Python используются следующие библиотеки компьютерного зрения: OpenCV, pytesseract.
Python-tesseract инструмент оптического распознавания символов для Python. Модуль распознает текст, встроенный в изображения.
Устанавливаем необходимые библиотеки через командную строку:
pip install pytesseract
pip install opencv-python
Для работы с pytesseract на Windows необходимо установить конфигурационный файл tesseract. Скачайте вышеуказанный файл в соответствии с конфигурацией системы, затем установите его, выберите необходимые языки для работы.
Пример входного изображения, из которого нужно извлечь текст:
Будем использовать библиотеку OpenCV для открытия, чтения и преобразования изображения. Метод imread() используется для чтения изображения, cvtColor() преобразует изображение в нужный формат, метод image_to_string() объекта pytesseract извлекает из изображения текст, в качестве параметров метод принимает изображение и настройки конфигураций. Документация опции конфигурации доступна по ссылке.
Результат выполнения скрипта:
При разработке вы можете, выводить результат в файл, сохранять в базу данных, осуществлять предварительную обработку текста искать ошибки или ключевые слова, выделять текст на изображении.
Выделим текст на изображении, как на рисунке ниже.
Метод image_to_data() возвращает найденные слова и их координаты. Метод splitlines() разделяет текст на строки, split() разделяет строку по пробельному символу. В переменные x, y, w, h записываем координаты, ширину и высоту. Методом rectangle() рисуем прямоугольник на исходном изображении. Методом imshow() показываем исходное изображение.
Мы научились извлекать текст из изображения. Однако, в представленном примере, мы распознавали текст с черно белой картинки. При попытке извлечь текст с цветной картинки, качество распознания текста может пострадать. Прежде чем извлекать текст с цветного изображения, картинку необходимо преобразовать в черно-белое.
Пример входного изображения:
Методом cvtColor() преобразуем изображение в оттенки серого, используя метод threshold() осуществим дальнейшее преобразование в черно-белое изображение.
В приведенных примерах, мы извлекаем текст на английском языке. При попытке извлечь текст на другом языке, мы получим ошибочно распознанный текст. Для работы с другими языками необходимо при установке конфигурационного файла tesseract загрузить необходимые языковые модули.
Для распознания русского языка в метод image_to_string() объекта pytesseract передадим параметр lang="rus".
Итоговый продукт осуществляет преобразование картинки и извлекает текст из изображения, распознает и обводит границы текста на изображении.
С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am