В разработке небольшая программа на VC++, распознающая фрагмент текста экрана и подающая сигнал, если он совпадает с контрольным значением.
Работа программы выглядит следующим образом.
- Снятие скриншота по таймеру (уже сделано).
- Для контроля сохранение скриншота в папку на диске (уже сделано).
- Распознавание фрагмента текста с помощью библиотеки Tesseract (здесь возникла ошибка).
- Распознанный текст или сообщение об ошибке сохраняется в файл (сделано).
- Воспроизведение сигнала (будет сделано).
Библиотека Tesseract успешно работала, однако после некоторых правок работать перестала. К сожалению, откатить изменения уже нет возможности.
Пометил в коде место, где имеет место проблема.
Возможно, конвертация из HBitmap (где содержится скриншот) в Bitmap (формат, необходимый для Tesseract) работает некорректно.
Насколько я вижу, в bmBits почему-то записывается 0.
Хотя, повторюсь, скриншот из HBitmap сохраняется корректно, т.е. данные картинки там есть.
Видимо, здесь какая-то очевидная неточность, но уже давно не программировал на VC++ и не могу её найти.
Но, думаю, для опытного профессионала решение данного вопроса будет достаточно простым.
Таким образом, задача сделать так, чтобы снова заработала библиотека Tesseract и сохранила в файл какое-либо тестовое распознавание любой области экрана.
Помимо этого ничего делать не нужно.
Файлы проекта выложены на Яндекс.Диск, ссылку могу выслать по запросу.
Опубликован 08.09.2023 в 09:01 Последнее изменение: 08.09.2023 в 14:36