Коррекция ошибок распознавания: как объединить три ошибочных результата, чтобы уменьшить количество ошибок - PullRequest
6 голосов
/ 10 сентября 2010

Проблема

Я пытаюсь улучшить результат процесса распознавания текста, комбинируя выходные данные трех разных систем распознавания текста (tesseract, cuneinform, ocrad).Я уже делаю предварительную обработку изображений (вычистка, удаление пятен, сгибание и некоторые другие).Я не думаю, что эта часть может быть улучшена намного больше.Обычно текст для распознавания имеет длину от одного до 6 слов.Язык текста неизвестен, и довольно часто они содержат фантазийные слова.Я на Linux.Предпочтительным языком будет Python.

То, что у меня есть до сих пор

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

Пример может выглядеть следующим образом:

Xorem_ipsum
lorXYm_ipsum
lorem_ipuX

AX - это неправильно распознанный символ, а Y - это символ, которого нет втекст.Пробелы заменяются на «_» для лучшей читаемости.

В подобных случаях я пытаюсь объединить разные результаты.Используя неоднократно алгоритм «самая длинная общая подстрока» между тремя парами, я могу получить следующую структуру для данного примера

or m_ipsum
lor m_ip u
orem_ip u

Но здесь я застрял сейчас.Я не могу объединить эти кусочки в результат.

Вопросы

У вас есть

  • идея, как объединить различные общие самые длинные подстроки?
  • Или у вас есть идея, как решить эту проблему?

Ответы [ 4 ]

2 голосов
/ 10 сентября 2010

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

Использование Linux ограничит возможные механизмы распознавания, доступные вам. Лично я бы оценил Tesseract как 6,5 / 10 по сравнению с коммерческими механизмами OCR, доступными под Windows.

http://www.abbyy.com/ocr_sdk_linux/overview/ - Хотя SDK может быть не дешевым.

http://irislinktest.iriscorporate.com/c2-1637-189/iDRS-14-------Recognition--Image-preprocessing--Document-formatting-and-more.aspx - Доступно для Linux

http://www.rerecognition.com/ - Доступен в версии для Linux. Этот двигатель используется многими другими компаниями.

Все вышеперечисленные двигатели должны дать вам уровни доверия, ограничительные рамки и лучшие результаты, чем Tesseract OCR.

https://launchpad.net/cuneiform-linux - Cuneiform, теперь с открытым исходным кодом и работает под Linux. Вероятно, это один из ваших трех двигателей, которые вы используете. Если нет, то, вероятно, стоит взглянуть на его добавление.

Также вы можете посмотреть на http://tev.fbk.eu/OCR/Products.html для получения дополнительных опций.

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

1 голос
/ 10 сентября 2010

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

or m_ip u
or m_ip u
or m_ip u

ИЛИ выполните алгоритм "самая длинная общая подстрока" с первой и второй строкой и затем снова результат с третьей строкой. Таким образом, вы получите тот же результат or m_ip u проще.

Таким образом, вы можете предположить, что буквы должны быть правильными. Теперь посмотрим на пространства. До or есть два раза l и один раз X, поэтому выберите l. Между or и m_ip есть два раза e и один раз XY, поэтому выберите e. И так далее.

0 голосов
/ 12 мая 2013

Я допустил очень похожую проблему. Я надеюсь, что это может помочь: http://dl.tufts.edu/catalog/tufts:PB.001.011.00001

См. Также программное обеспечение, разработанное Брюсом Робертсоном: https://github.com/brobertson/rigaudon

0 голосов
/ 15 сентября 2010

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

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