ОРС:Как повысить точность — существующие библиотеки для удаления нетекстовой «мебели», фигур и т. д., чтобы избежать путаницы в распознавании текста?

StackOverflow https://stackoverflow.com/questions/2448106

Вопрос

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

Фон:

Я делаю это, чтобы извлечь данные из устаревшего приложения для использования с другими приложениями.Это единственный способ получить эти данные, поскольку связанные файлы имеют закрытый, собственный двоичный формат.

Я буду использовать 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

В них на мой вопрос не полностью дан ответ или продается коммерческое решение.На данном этапе я не хочу рассматривать коммерческое решение.

Это было полезно?

Решение

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

Итак, найдите непрерывную горизонтальную линию, которая соединена с другой параллельной линией той же длины ровно двумя вертикальными линиями.Повторяйте поиск, пока не найдете все прямоугольники на изображении, а затем сделайте их прозрачными с помощью Графика.DrawRectangle и Ручки.Прозрачные.Не делайте прямоугольник прозрачным, пока не закончите поиск, иначе вы рискуете стереть части перекрывающихся прямоугольников до того, как найдете их.Это всего лишь начальное предложение, я не реализовал и не отладил этот алгоритм.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top