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

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

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

Научный руководитель
Информационные технологии
Препринт статьи
01.08.2025
3
Поделиться
Библиографическое описание
Сенкевич, А. Б. Рассмотрение различных способов распознавания текста на базе фреймворка Qt / А. Б. Сенкевич. — Текст : непосредственный // Молодой ученый. — 2025. — № 31 (582). — URL: https://moluch.ru/archive/582/127847/.


В статье автор рассматривает различные способы передачи и распознавания текстовых данных при помощи фреймворка Qt на базе языка С++.

Ключевые слова: Qt, распознавание текста, QFile.

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

На сегодняшний день многие разработчики продолжают использовать программные пакеты на основе языка С++, лидирующее место среди которых занимает Qt Creator, позволяющий работать как с обширным встроенным инструментарием, так и со сторонними библиотеками, разработанными как для конкретного фреймворка, так и для базового языка C++. Для наибольшей прозрачности в рамках данной статьи будут использоваться основные методы из базового инструментария Qt.

При открытии файлов с исходными данными в большинстве случаев разработчики используют встроенный в Qt модуль QFile. Данный модуль представляет собой мощную надстройку над стандартными библиотеками C++, такими как iostream.h, ifstream.h и ofstream.h. Он обеспечивает удобный и высокоуровневый интерфейс для работы с файловой системой, что значительно упрощает разработку и снижает вероятность ошибок. Основные особенности QFile:

— универсальность заключается в том, что инструмент может работать с различными типами данных: текстами, двоичными файлами, изображениями и другими распространенными форматами;

— интеграция с другими частями. Qt имеет удобный механизм реализации для разработчика: например, для передачи структурированных данных можно использовать QDataStream, а для доступа к байтовым данным — QIODevice, подходящий инструмент определяется задачами;

— благодаря инструменту интеграции можно объединять действия разных модулей в одну цепочку и выполнять сложные операции без необходимости писать дополнительную логику;

— высокая скорость работы сохраняется даже при больших объемах информации, что важно в ситуациях, когда система обрабатывает множество данных одновременно [1, с. 148].

Таким образом полученный механизм отображен ниже:

file.open(QIODevice::ReadOnly);

source = file.readAll();

В ходе проверки такого способа на предмет отказоустойчивости была выявлена критическая проблема, связанная с использованием метода QFile::readAll() для обработки данных. Данный подход не способен возвращать корректный результат при работе с файлами, имеющими нестандартные или редко используемые кодировки. В результате, вместо ожидаемого содержимого файла, система выводила одно число — 0 или 2, в зависимости от типа кодировки. Это происходило из-за того, что модуль QFile интерпретировал данные как байтовый массив, не учитывая особенности текстовых кодировок, что приводило к некорректной обработке информации. В поисках возможных решений этой проблемы было принято решение переработать систему и внедрить модуль QTextStream, который является частью библиотеки Qt и унаследован от аналогичных текстовых потоков в стандартной библиотеке C++. В отличие от QFile, который работает с данными на уровне байтов, QTextStream интерпретирует файлы как текстовые данные, что позволяет ему автоматически обрабатывать различные кодировки. Это достигается за счет внутренних механизмов преобразования, которые анализируют структуру файла и корректно декодируют его содержимое [2, с. 43]. После дополнительных испытаний были получены три варианта программы и результаты на основе 10 файлов с разными размерами и кодировкой (таблица 1).

Таблица 1

Результаты испытаний различных подходов к обработке файлов

Тип обработки

Время обработки

Число корректно обработанных файлов

QFile

3 сек

3/10

QTextStream

24 сек

10/10

QFile + QTextStream

11 сек

10/10

Исходя из полученных результатов можно сделать очевидный вывод о предпочтительном способе обработки: гибрид модулей QFile и QTextStream. В таком случае система чтение материалов из файла будет выглядеть следующим образом:

file.open(QIODevice::ReadOnly);

source = file.readAll();

if (source.length() < 100) // подразумевается что исходный документ имеет длину более 100 символов, требует настройки в зависимости от конкретных данных

{

file.close(); //сброс текстового курсора

file.open(QIODevice::ReadOnly);

QTextStream ts(&file);

ts.setCodec(«UTF-16"); //стандартный кодек для QPlainTextEdit — инструмента для открытия текстовых данных

source = ""; //”обнуление” строки

while (!ts.atEnd())

{

source.append((ts.readLine() + "\n»));

}

}

file.close();

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

Блок-схема полученного алгоритма чтения файлов

Рис. 1. Блок-схема полученного алгоритма чтения файлов

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

Литература:

  1. Городничев, М. Г. Разработка кроссплатформенного программного обеспечения: Учебное пособие по направлениям подготовки бакалавров 09.03.01 Информатика и вычислительная техника, 02.03.02 Фундаментальная информатика и информационные технологии / М. Г. Городничев, Т. Д. Фатхулин, Х. А. Джабраилов. — Текст: непосредственный // Наукоемкие технологии. — 2023. — №. — С. 148.
  2. Мерзлякова, Е. Ю. Разработка прикладных программ в Qt Creator на С++: учебно-методическое пособие / Е. Ю. Мерзлякова. — Текст: непосредственный // Сибирский государственный университет телекоммуникаций и информатики. — 2023. — №. — С. 43.
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
Qt
распознавание текста
QFile
Молодой учёный №31 (582) август 2025 г.
📄 Препринт
Файл будет доступен после публикации номера

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