Вы пытались использовать самый длинный алгоритм общей подпоследовательности? Они обычно видны в инструментах сравнения текста «diff», используемых в приложениях контроля версий и некоторых текстовых редакторах. Алгоритм сравнения помогает идентифицировать измененные и неизмененные символы в двух образцах текста.
http://en.wikipedia.org/wiki/Diff
Несколько лет назад я работал над приложением OCR, похожим на ваше. Вместо того, чтобы применять несколько механизмов распознавания к одному изображению, я использовал один механизм распознавания для анализа нескольких версий одного и того же изображения. Каждое из обработанных изображений было результатом применения различной техники шумоподавления к исходному изображению: одна техника работала лучше для низкого контраста, другая техника работала лучше, когда символы были плохо сформированы. Схема «голосования», в которой сравнивались результаты распознавания текста на каждом изображении, улучшила скорость чтения для произвольных строк текста, таких как «BQCM10032». Другие схемы голосования описаны в научной литературе для OCR.
В некоторых случаях вам может потребоваться подобрать слово, для которого ни одна комбинация результатов распознавания не даст всех букв. Например, средняя буква может отсутствовать, как в «wrd» или «c tch» (вероятно, «word» и «catch»). В этом случае он может помочь получить доступ к вашему словарю с помощью любого из трех ключей: начальных букв, средних букв и конечных букв (или буквенных комбинаций). Каждый ключ связан со списком слов, отсортированных по частоте встречаемости в языке. (Я использовал этот вид многоключевого поиска, чтобы улучшить скорость приложения генерации кроссвордов; вполне возможно, что есть и лучшие методы, но этот легко реализовать.)
Чтобы сэкономить память, вы можете применить многоключевой метод только к первым нескольким тысячам общих слов в языке, а затем использовать только один метод поиска для менее распространенных слов.
Есть несколько онлайн-списков частоты слов.
http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists
Если вы хотите получить фантазию, вы также можете рассчитывать на предыдущую частоту встречаемости в тексте. Например, если «Byrd» появляется несколько раз, то это может быть лучшим выбором, если механизм (ы) OCR сообщает о «птице» или «барде» с низким показателем достоверности. Вы можете загрузить медицинский словарь в память только в том случае, если на той же странице имеется статистически маловероятное появление медицинских терминов - в противном случае пропустите медицинские термины из своего рабочего словаря или, по крайней мере, назначьте им разумную вероятность. «Протезирование» - обычное слово; «простатит» реже.
Если у вас есть опыт работы с методами обработки изображений, такими как шумоподавление и морфологические операции, вы также можете попробовать предварительно обработать изображение перед его передачей в механизм (ы) OCR. Обработка изображений может также применяться для выбора областей после того, как ваше программное обеспечение идентифицирует слова или регионы, в которых механизм распознавания текста работает плохо.
Некоторые замены букв / букв и букв / цифр встречаются часто. Цифру 0 (ноль) можно спутать с буквой O, C для O, 8 для B, E для F, P для R и так далее. Если слово найдено с низкой степенью достоверности или если есть два общих слова, которые могут соответствовать не полностью прочитанному слову, то могут помочь специальные правила соответствия формы. Например, «bcth» может соответствовать либо «both», либо «bath», но для многих шрифтов (и контекстов) «both» является более вероятным совпадением, поскольку «o» больше похож на «c» по форме. В длинной цепочке слов, таких как параграф из романа или статьи в журнале, «ванна» лучше подходит, чем «b8th».
Наконец, вы, вероятно, могли бы написать плагин или скрипт для передачи результатов в механизм проверки орфографии, который проверяет соответствие существительных и других грамматических проверок. Это может поймать несколько дополнительных ошибок. Возможно, вы могли бы попробовать VBA для Word или любую другую комбинацию скриптов / приложений, популярную в наши дни.