Отправьте статью сегодня! Журнал выйдет 12 июля, печатный экземпляр отправим 16 июля
Опубликовать статью

Молодой учёный

Разработка программы для оптического распознавания символов с помощью Tesseract

Научный руководитель
Информационные технологии
30.07.2021
575
Поделиться
Библиографическое описание
Ефремов, В. М. Разработка программы для оптического распознавания символов с помощью Tesseract / В. М. Ефремов. — Текст : непосредственный // Молодой ученый. — 2021. — № 31 (373). — С. 13-15. — URL: https://moluch.ru/archive/373/83422/.


В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.

Ключевые слова: tesseract, OCR, OpenCV, оптическое распознавание, python.

OCR — оптическое распознавание символов. Другими словами, системы оптического распознавания символов преобразуют двумерное изображение текста, которое может содержать машинно-напечатанный или рукописный текст, из его графического представления в машиночитаемый текст.

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

В этой статье будет объяснена технология, лежащая в основе наиболее часто используемого Tesseract Engine, который был обновлен с учетом последних исследований в области оптического распознавания символов. Эта статья также будет служить руководством по реализации OCR в Python с использованием движка Tesseract. Tesseract — это бесплатное программное обеспечение оптического распознавания символов с открытым исходным кодом и большой базой языковых и символьных моделей. Данная библиотека использует нейронные сети для поиска и распознавания текста на изображениях. Программа ищет шаблоны в пикселях, буквах, словах и предложениях.

Python-tesseract — это «движок» оптического распознавания символов (OCR) для Python.

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

Первое, что необходимо сделать, то это выполнить установку Tesseract ORC. Установка Tesseract удобна на Маке и Линукс. Если вы на Windows, то придется выполнить на одно движение больше.

С самой программой никак не придется взаимодействовать, а лишь скопировать её расположение.

С самого начала написания кода следует подключить предустановленные библиотеки.

#Import pytesseract || #import Cv2

Далее необходимо указать программе на месторасположение файла

img = cv2.imread('C:\\Users\\Vlad\\Downloads\\123.png')

По умолчанию OpenCV хранит изображения в формате BGR, а поскольку pytesseract принимает формат RGB,

Нам нужно преобразовать из BGR в формат режим RGB:

# Img_rgb = cv2.cvtColor (img_cv, cv2.COLOR_BGR2RGB)

Для возможности распознавания различных языков (по умолчанию — английский), следует изменить функцию lang, принадлежащию классу image_to_string

#pytesseract.image_to_string(img, config=config, lang='rus+eng')

Так же можно выбрать в каком формате нам выдаст распознанный текст.

# Получить PDF-файл с возможностью поиска

pdf = pytesseract.image_to_pdf_or_hocr ('test.png', extension = 'pdf')

с open ('test.pdf', 'w + b') как f:

f.write (pdf) # тип pdf по умолчанию — байты

# Получить вывод HOCR

hocr = pytesseract.image_to_pdf_or_hocr ('test.png', extension = 'hocr')

# Получить вывод ALTO XML

xml = pytesseract.image_to_alto_xml ('test.png')

Поддержка изображений OpenCV / объектов массива NumPy.

Если же хотим на самой картинки выделять слова и формировать надпись, то надо бует дописать следующие функции:

Для начала нужно будет применить метод «image_to_date» — он возвращает найденные слова и их координаты.

Далее следует создать цикл для перебора списка и выводить по одному элементу: for i, el in enumerate(data.splitlines()):

Поскольку первый элемент — это лишь названия полей, его можно отсечь: if i == 0 || continue

Каждый элемент будем разбивать по пробелу, для разбивки строки используем метод split: el = el.split()

Теперь создаем переменные для хранения координат слова, его ширины и высоты.

x, y, w, h = list(map(lambda x: int(x), el [6:10]))

Для рисования на картинки используем библиотеку OpenCV и метод rectangle, в него указываем само фото, координаты, где мы будем рисовать, ширину и высоту и добавляем координаты, чтобы получился прямоугольник, а также указываем цвет обводки и толщину.

cv2.rectangle(img, (x, y), (w + x, h + y), (255, 0, 0), 1)

Чтобы около каждой обводки была выведена надпись, которую мы получили с помощью нашей программы, используем метод «putText» он принимает параметры: фото, текст, координаты, формат шрифта, его размер, цвет и жирность.

cv2.putText(img, el [11], (x+x, y-20), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 1)

Итоговый код программы и результат ее работы представлены на рисунках 1–3.

Итоговый код программы

Рис. 1. Итоговый код программы

Изображение, которое было загружено в программу

Рис. 2. Изображение, которое было загружено в программу

Графическое отображение текста на изображение

Рис. 3. Графическое отображение текста на изображение

Консольное отображение выполнения программы

Рис. 4. Консольное отображение выполнения программы

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

Литература:

  1. Документация “Tesseract” // [Электронный ресурс]. Точный адрес: https://en.wikipedia.org/wiki/Tesseract
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
tesseract
OCR
OpenCV
оптическое распознавание
python
Молодой учёный №31 (373) июль 2021 г.
Скачать часть журнала с этой статьей(стр. 13-15):
Часть 1 (стр. 1-81)
Расположение в файле:
стр. 1стр. 13-15стр. 81

Молодой учёный