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

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

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

Автор:

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

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

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

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

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

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

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

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

Обзор и применение библиотеки оптического распознавания символов Tesseract

В статье приводится обзор и пример использования библиотеки оптического распознавания символов Tesseract.

Разработка программного модуля защиты информации методом стеганографии

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

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Об устройстве сервера печати CUPS

В статье рассматривается устройство сервера печати CUPS, а также исследуется возможность применения CUPS API для вывода фракталов на печать.

Проектирование активных фильтров с использованием FilterLab 2.0

Данная статья призвана познакомить читателя с программой FilterLab (FL), которая позволяет пользователю работать с активными фильтрами на новом уровне. FL крайне дружелюбен и удобен для проектирования активных фильтров.

Абстрактные и динамически сгенерированные контроллеры в ASP.NET

В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.

Сравнительный анализ библиотек языка PHP для формирования документов веб- сервисами

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

Применение библиотеки AForge.NET и ее расширения Accord.NET Framework при распознавании лиц в режиме реального времени

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов. Представлены способы использования данных компонент для решения задачи распознавания лиц в режиме реального времени.

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

В данной статье рассмотрены методы и алгоритмы функционирования систем клиент-серверной архитектуры для передачи данных с помощью технологий программных инструментов: HTML, CSS, Javascript.

Многопоточность в языке Swift

В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.

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

Обзор и применение библиотеки оптического распознавания символов Tesseract

В статье приводится обзор и пример использования библиотеки оптического распознавания символов Tesseract.

Разработка программного модуля защиты информации методом стеганографии

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

Работа с элементами GUI на примере приложения с использованием кроссплатформенного фреймворка Qt

В статье подробно разобран код приложения, написанного с использованием кроссплатформенного фреймворка Qt основанного на языке C++. Приложение Dynamic Layouts является одним из примеров, входящих в пакет Qt Creator. На примере данного приложения расс...

Об устройстве сервера печати CUPS

В статье рассматривается устройство сервера печати CUPS, а также исследуется возможность применения CUPS API для вывода фракталов на печать.

Проектирование активных фильтров с использованием FilterLab 2.0

Данная статья призвана познакомить читателя с программой FilterLab (FL), которая позволяет пользователю работать с активными фильтрами на новом уровне. FL крайне дружелюбен и удобен для проектирования активных фильтров.

Абстрактные и динамически сгенерированные контроллеры в ASP.NET

В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.

Сравнительный анализ библиотек языка PHP для формирования документов веб- сервисами

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

Применение библиотеки AForge.NET и ее расширения Accord.NET Framework при распознавании лиц в режиме реального времени

В статье приводится описание библиотек Accord.NET Framework, AForge.NET, а также показаны возможности их компонентов. Представлены способы использования данных компонент для решения задачи распознавания лиц в режиме реального времени.

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

В данной статье рассмотрены методы и алгоритмы функционирования систем клиент-серверной архитектуры для передачи данных с помощью технологий программных инструментов: HTML, CSS, Javascript.

Многопоточность в языке Swift

В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.

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