Найти в Дзене
SoftSAR

Распознавание текста с картинки с помощью Python

В данной статье мы рассмотрим как с помощью Python распознать текст с картинки.Распознавать и обрабатывать текст с изображения сегодня важная, востребованная и распространенная задача. Распознавание текста с картинки применяться для оцифровки книг, считывание данных с бланков и анкет, извлечение информации из визитных карточек в список контактов, распознавание паспортных данных, автоматическое распознавание номерного знака, технологии для помощи слепым и слабовидящим и др.

Все эти задачи решаются с помощью моделей компьютерного зрения и машинного обучения на языке программирования Python. Для решения этих задач в Python используются следующие библиотеки компьютерного зрения: OpenCV, pytesseract.

Python-tesseract инструмент оптического распознавания символов для Python. Модуль распознает текст, встроенный в изображения.

Устанавливаем необходимые библиотеки через командную строку:

pip install pytesseract
pip install opencv-python

Для работы с pytesseract на Windows необходимо установить конфигурационный файл tesseract. Скачайте вышеуказанный файл в соответствии с конфигурацией системы, затем установите его, выберите необходимые языки для работы.

Пример входного изображения, из которого нужно извлечь текст:

-2

Будем использовать библиотеку OpenCV для открытия, чтения и преобразования изображения. Метод imread() используется для чтения изображения, cvtColor() преобразует изображение в нужный формат, метод image_to_string() объекта pytesseract извлекает из изображения текст, в качестве параметров метод принимает изображение и настройки конфигураций. Документация опции конфигурации доступна по ссылке.

Результат выполнения скрипта:

-3

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

Выделим текст на изображении, как на рисунке ниже.

-4

Метод image_to_data() возвращает найденные слова и их координаты. Метод splitlines() разделяет текст на строки, split() разделяет строку по пробельному символу. В переменные x, y, w, h записываем координаты, ширину и высоту. Методом rectangle() рисуем прямоугольник на исходном изображении. Методом imshow() показываем исходное изображение.

Мы научились извлекать текст из изображения. Однако, в представленном примере, мы распознавали текст с черно белой картинки. При попытке извлечь текст с цветной картинки, качество распознания текста может пострадать. Прежде чем извлекать текст с цветного изображения, картинку необходимо преобразовать в черно-белое.

Пример входного изображения:

-5

Методом cvtColor() преобразуем изображение в оттенки серого, используя метод threshold() осуществим дальнейшее преобразование в черно-белое изображение.

В приведенных примерах, мы извлекаем текст на английском языке. При попытке извлечь текст на другом языке, мы получим ошибочно распознанный текст. Для работы с другими языками необходимо при установке конфигурационного файла tesseract загрузить необходимые языковые модули.

Для распознания русского языка в метод image_to_string() объекта pytesseract передадим параметр lang="rus".

Итоговый продукт осуществляет преобразование картинки и извлекает текст из изображения, распознает и обводит границы текста на изображении.

С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am

Наука
7 млн интересуются