Разработка программы для оптического распознавания символов с помощью Tesseract | Статья в журнале «Молодой ученый»

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

Опубликовать статью в журнале

Автор:

Научный руководитель:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №31 (373) июль 2021 г.

Дата публикации: 30.07.2021

Статья просмотрена: 417 раз

Библиографическое описание:

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



В данной статье наглядно и подробно рассмотрен пример работы с библиотекой 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
Основные термины (генерируются автоматически): OCR, оптическое распознавание символов, BGR, ORC, RGB, ALTO, HOCR, XML, итоговый код программы, распознавание текста.


Ключевые слова

OpenCV, python, OCR, tesseract, оптическое распознавание

Похожие статьи

Алгоритм распознавания текстовой информации на изображении...

OCR — это система оптического распознавания символов. В настоящее время данная система имеет большую популярность, она применяется в большом количестве программ, связанных с распознаванием текста. Алгоритм работы распознания текста всегда строится...

Алгоритмы распознавания символов | Статья в журнале...

Описанию технологии оптического распознавания символов уделяется большое внимание в

Алгоритм в процессе распознавания решает два вопроса: какой метод применяется для подгонки

Алгоритм распознавания текста с использованием нейронной сети заключается в...

Метод распознавания шрифта текста с изображения

Для распознавания шрифта текста используется методы контурного анализа. Контур буквы или цифры с входного изображения

Алгоритм можно поделить на 3 этапа: предобработка изображения, выделение символов текста на изображении и...

Разработка сервиса распознавания брендовых лейблов

Приводится описание процесса разработки сервиса по распознаванию брендовых лейблов для большой базы логотипов

Библиографическое описание: Шайхутдинов, Д. А. Разработка сервиса распознавания брендовых лейблов / Д. А. Шайхутдинов.

Проблема оптического распознавания субтитров...

Проблема распознавания текста на изображении, в английской литературе называемая Optical Character Recognition (OCR) или оптическое распознавание символов, ставится как задача получения текста, присутствующего на изображении.

Методы решения задачи детекции текста на изображениях

В отличие от распознавания текста в документах, которое удовлетворительно решается с помощью современных систем оптического распознавания символов (OCR), локализация и распознавание текста сцены остается открытой проблемой.

Распознавание английского текста сверточной...

Федорова, А. А. Распознавание английского текста сверточной нейронной сетью / А. А. Федорова.

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

Применение нейронных сетей в распознавании рукописного текста

Существуют универсальные программы, решающие при помощи ИНС задачи от распознавания рукописного текста до решения задач прогнозирования.

Существует множество задач распознавания образов для рукописного текста и рисования на планшетах.

Похожие статьи

Алгоритм распознавания текстовой информации на изображении...

OCR — это система оптического распознавания символов. В настоящее время данная система имеет большую популярность, она применяется в большом количестве программ, связанных с распознаванием текста. Алгоритм работы распознания текста всегда строится...

Алгоритмы распознавания символов | Статья в журнале...

Описанию технологии оптического распознавания символов уделяется большое внимание в

Алгоритм в процессе распознавания решает два вопроса: какой метод применяется для подгонки

Алгоритм распознавания текста с использованием нейронной сети заключается в...

Метод распознавания шрифта текста с изображения

Для распознавания шрифта текста используется методы контурного анализа. Контур буквы или цифры с входного изображения

Алгоритм можно поделить на 3 этапа: предобработка изображения, выделение символов текста на изображении и...

Разработка сервиса распознавания брендовых лейблов

Приводится описание процесса разработки сервиса по распознаванию брендовых лейблов для большой базы логотипов

Библиографическое описание: Шайхутдинов, Д. А. Разработка сервиса распознавания брендовых лейблов / Д. А. Шайхутдинов.

Проблема оптического распознавания субтитров...

Проблема распознавания текста на изображении, в английской литературе называемая Optical Character Recognition (OCR) или оптическое распознавание символов, ставится как задача получения текста, присутствующего на изображении.

Методы решения задачи детекции текста на изображениях

В отличие от распознавания текста в документах, которое удовлетворительно решается с помощью современных систем оптического распознавания символов (OCR), локализация и распознавание текста сцены остается открытой проблемой.

Распознавание английского текста сверточной...

Федорова, А. А. Распознавание английского текста сверточной нейронной сетью / А. А. Федорова.

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

Применение нейронных сетей в распознавании рукописного текста

Существуют универсальные программы, решающие при помощи ИНС задачи от распознавания рукописного текста до решения задач прогнозирования.

Существует множество задач распознавания образов для рукописного текста и рисования на планшетах.

Задать вопрос