ОРС:Как повысить точность — существующие библиотеки для удаления нетекстовой «мебели», фигур и т. д., чтобы избежать путаницы в распознавании текста?
-
20-09-2019 - |
Вопрос
Я хочу удалить прямоугольники и т. д., заключающие текст в изображение снимка экрана, чтобы можно было выполнить оптическое распознавание символов и получить точный текст со снимка экрана.
Фон:
Я делаю это, чтобы извлечь данные из устаревшего приложения для использования с другими приложениями.Это единственный способ получить эти данные, поскольку связанные файлы имеют закрытый, собственный двоичный формат.
Я буду использовать AutoItScript, чтобы заставить приложение отображать данные в его пользовательском интерфейсе, затем я сделаю снимок экрана и передам его в tesseract.
у меня уже было некоторый успех в автоматизации пользовательского интерфейса и возможность использовать tesseract для получения простого текста в формате ASCII из растрового изображения.
Есть несколько статей на форуме AutoItScribr, в которых обсуждается его использование с tesseract/OCR, но не конкретно по моему вопросу.http://www.autoitscript.com/forum/index.php?s=6c32c3ece12756e635a619cdf175eff9&showforum=2
Что мне нужно сделать
Существуют тонкие прямоугольники шириной в 1 пиксель, которые плотно окружают некоторый текст, и при подаче в тессеракт он видит их так же, как я, например, как вертикальную линию прямоугольника.
Есть какие-нибудь мысли о том, как удалить прямоугольники или лучшие практики?
Я спрашиваю, существует ли универсальный набор инструментов на основе командной строки для перезаписи прямоугольников, например, в файлах .png.Затем я мог бы передать .png через него, а затем передать его в тессеракт.
Подробности о версии/настройке tesseract, которую я использовал, следующие:
Иди сюда: http://code.google.com/p/tesseract-ocr/downloads/list- Для базового общего набора символов английского языка, позволяющего запустить Tesseract и распознать растровый текст в текст ascii, используйте tesseract-2.00.eng.tar.gz (текущая версия на момент написания:«Данные на английском языке для Tesseract (2.00 и более поздние версии), июль 2007 г., 989 КБ, 84845»)
Связанные вопросы, которые я уже рассматривал в Stack Overflow
Как обеспечить наилучшие шансы на успех программного обеспечения OCR?
Анализ и преобразование изображения на основе этого анализа для улучшения результатов распознавания
В них на мой вопрос не полностью дан ответ или продается коммерческое решение.На данном этапе я не хочу рассматривать коммерческое решение.
Решение
Вероятно, не будет готового бесплатного решения для этой проблемы, но написание собственного кода не должно быть слишком сложным, поскольку, вероятно, можно с уверенностью предположить, что прямоугольник никогда не будет допустимым символом в алфавите вашего шрифта и, следовательно, его можно безопасно удалить. .Также помогает то, что все границы прямоугольников имеют ширину ровно один пиксель.
Итак, найдите непрерывную горизонтальную линию, которая соединена с другой параллельной линией той же длины ровно двумя вертикальными линиями.Повторяйте поиск, пока не найдете все прямоугольники на изображении, а затем сделайте их прозрачными с помощью Графика.DrawRectangle и Ручки.Прозрачные.Не делайте прямоугольник прозрачным, пока не закончите поиск, иначе вы рискуете стереть части перекрывающихся прямоугольников до того, как найдете их.Это всего лишь начальное предложение, я не реализовал и не отладил этот алгоритм.