2012-04-16 3 views
2

Tesseract OCR engine иногда выводит текст, который не имеет смысла, я хочу разработать алгоритм, который пренебрегает любым текстом или словом, не имеющим смысла, ниже - это какой-то выходной текст, который я хочу игнорировать, мое простое решение - подсчитать слова в распознанном тексте, разделенные символом «», и текст, в котором слишком много слов, будет мусором (подсказка: я сканирую изображения, которые в большинстве случаев содержат 40 слов) любая идея будет полезна, спасибо.Как игнорировать вывод OCR Engine, который не имеет значения?

wo:>"|axnoA1wvw\ 
ldflfig 
°J!9O‘ !P99W M9N 6 13!-|15!Cl ‘I-/Vl 
978 89l9 Z0 3+ 3 'l9.l. 
97 999 VLL lLOZ+ 3 9l!q°lN 
wo0'|axno/(@|au1e>1e: new; 
1=96r2a1ey\1 1uauud0|e/\e(] 
|8UJB){ p8UJL|\7' 
+0

Очень широкий вопрос. Во-первых, откуда вы знаете, не имеет ли смысл текст или слово? (т. е. у вас есть идеальный словарь?). Как вы объясняете местные ошибки? Например. Если «ДВИГАТЕЛЬ» читается как «ENGTINE», вы полностью отбрасываете его? Я могу продолжать и продолжать. – ElKamina

+0

Я обновил свой вопрос – chostDevil

+0

Вы можете искать слишком много последовательных символов или комбинаций букв подряд, которые не встречаются на языке текста, вместо того, чтобы смотреть на длину слова. 1-3 буквенных слова вряд ли будут написаны с ошибками или с другого языка, поэтому словарь может помочь им. – Benjamin

ответ

3

Разделите выходной текст на слова. Разделите слова на тройки. Считайте тройные частоты и сравните с тройными частотами из текста хорошо известного текстового корпуса (EG все статьи из какого-то списка рассылки обсуждают то, что вы намерены использовать OCR, минус строки заголовка).

Когда я говорю "троек", я имею в виду:

Whe, курица, я, скажем, три, рип, IPL, образца, лес, я, MEA, Ean

... так " i "имеет частоту 2 в этом коротком примере, а остальные - все частоты 1.

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

Предоставлено, это эвристическое.

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

+2

Эти «тройки» называются триграммами. – maniek

1

Проверьте слова со словарем?

Конечно, это будет иметь ложные срабатывания для таких вещей, как иностранные фразы или код. Проблема в целом неразрешима (например, this код или тарабарщина? :)). Единственным (почти) идеальным методом было бы использовать это как эвристику для обозначения определенных разделов для обзора человека.

Смежные вопросы