Библиотеки Qt/C++ и Тesseract OCR в проекте на macOS.
Библиотека Tesseract 4.* OCR
(Optical Character Recognition) на основе нейронной сети
LSTM (Long short-term memory) позволяет распознавать и извлекать текст из графических изображений.
Эта функция может быть полезной в текстовом редакторе.
Статья содержит описание и исходный код многооконного текстового редактора с включенной в него библиотекой Tesseract. Программа выполняет основные операции редактирования, а также распознает и извлекает текст из изображений. Например, можно сделать скриншот фрагмента страницы, открытой в Kindle книги, поместив его в clipboard. Редактор выведет на экран графическое содержимое сlipboard и извлеченный из него текст. Распознанный текст может быть скопирован и помещен в любое другое окно редактора. Какое количество окон может быть открыто в редакторе? Любое разумное. Часть окон можно использовать для набора и редактирования текста, часть для работы с Tesseract. Со скольких языков идет распознавание? В программе реализованы первые 12. Вы можете задействовать все предлагаемые Tesseract - это около 100. В проекте не применяется модель детектора текста типа EAST (Efficient and Accurate Scene Text) позволяющая обнаруживать и извлекать текст из смешанных изображений, например, текст на фотографии витрины магазина. В текстовом редакторе такая возможность требуется редко.
В проекте использованы следующие инструменты:
1. Текстовый редактор.
Редактор создан на основе MDI (Multiple Document Interface) проекта, входящего в состав Qt 5.*.
Однако в MDI проекте слишком мало возможностей.
Поэтому засучим рукава и допишем новые функции:
Рис. 1.
2. Извлечение и отображение текста.
Текст в редакторе может быть извлечен
из графического файла, загруженного в документ с диска или из clipboard.
Рассмотрим оба этих случая.
Чтобы загрузить файл и извелечь из него текст, выберите в меню редактора пункт «Tesseract -> Open image» или нажмите на кнопку на панели инструментов с подсказкой «Open image». Приложение откроет диалог для выбора графического файла. После выбора файла программа создаст новое окно (объест класса Tesseractwindow), разделенное на две части splitter. Левая часть окна будет содержать выбранное графическое изображение, правая - извлеченный из него текст. Это все, никаких дополнительных действий не требуется. Текст может быть скопирован и перенесен в любое окно редактирования. Пример работы программы показан на рисунке 2. Рис. 2.
Примечание.
Один из методов использования Tesseract OCR, примененный в этом проекте, описан в книге «Qt 5 and OpenCV 4 Computer Vision Projects» автора Zhuo Qingliang. Рекомендую эту книгу.
Второй способ извлечения текста подразумевает наличие в Clipboard изображения, содержащего текст.
Запустите любое стороннее приложение, выводящее на эран текст, сделайте скриншот экрана. В macOS для этого следует нажать три клавиши: (Command + Shift + 5). Затем
мышью определите размер прямоугольника, ограничивающего изображение, и нажмите кнопку "Снимок". Изображение будет помещено в буфер обмена.
Чтобы извлечь текст из изображения, выберите в редакторе пункт меню
«Tesseract -> Clipboard image» или нажмите на кнопку на панели инструментов с подсказкой «Clipboard image».
Программа сформирует новое окно, разделенное splitter на две части. В левой половине окна будет находиться изображение из Clipboard, в правой - извлеченный из него текст.
Перед запуском любого из описанных способов извлечения текста следует выбрать язык.
Сделать это можно при помощи СomboBox с меткой «Language» на панели инструментов.
По умолчанию установлен английский язык.
Полное описание программы и методика установки инструментов (Qt, OpenCV, Tesseract OCR, XCode) предоставляются платно
в файлах форматов pdf или odt.
Проект можно загрузить
Евгений Вересов.
20.10.2020 года.
|