OCR: Как повысить точность - существующие библиотеки для удаления нетекстовой «мебели», фигур и т. Д., Чтобы избежать путаницы в OCR? - PullRequest
3 голосов
/ 15 марта 2010

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

Справочная информация:

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

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

У меня уже был некоторый успех в автоматизации пользовательского интерфейса, и я смог использовать tesseract для получения простого текста ascii из растрового изображения.

Есть несколько статей на форуме AutoItScripr, обсуждающих его использование с tesseract / OCR, но не специально для моего вопроса. http://www.autoitscript.com/forum/index.php?s=6c32c3ece12756e635a619cdf175eff9&showforum=2

Что мне нужно сделать

Существуют тонкие прямоугольники шириной в 1 пиксель, которые плотно прилегают к некоторому тексту, при подаче в тессеракт он видит их как I, например, для линии вертикали прямоугольника.

Есть мысли о том, как убрать прямоугольники или лучшие практики?

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

Подробная информация об используемой мной версии / настройке tesseract:

иди сюда: http://code.google.com/p/tesseract-ocr/downloads/list - Для базового набора общих английских символов для запуска и запуска Tesseract и распознавания растрового текста в тексте ascii используйте tesseract-2.00.eng.tar.gz (текущая версия на момент написания: «Данные английского языка для Tesseract (2.00 и выше) июль 2007 г. 989 КБ 84845 ")

Смежные вопросы, которые я уже рассматривал в Переполнении стека

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

1 Ответ

1 голос
/ 27 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...