Алгоритм расстояния до слова для OCR

Я работаю с выводом OCR и ищу в нем специальные слова.

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

Однако я чувствую, что расстояние Левенштейна или расстояние Хэмминга не лучший способ, так как OCR всегда делает одни и те же ошибки: I вместо 1, 0 вместо O, Q вместо O... и эти "классические" ошибки кажутся быть менее важным, чем, например, «A вместо K». В результате эти расстояния не заботятся о количестве различий во внешности персонажей (низкое/высокое).

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


person zenbeni    schedule 31.03.2014    source источник
comment
Если вы когда-нибудь читали исходный код tesseract, вы увидите, что он специально обрабатывает случаи, когда   -  person Lyndon White    schedule 31.03.2014
comment
Вы используете tesseract ocr на 64-битной JVM?   -  person marcAntoine    schedule 31.03.2014
comment
@manu Нет, я использую ABBYY FineReader.   -  person zenbeni    schedule 31.03.2014
comment
то вы работаете с пробной версией   -  person marcAntoine    schedule 31.03.2014
comment
@manu нет, это не суд. Почему спрашиваешь? Есть ли какие-то скрытые вещи в платной версии, которые я должен знать?   -  person zenbeni    schedule 31.03.2014


Ответы (2)


Расстояние Левенштейна позволяет указать разные затраты для каждой пары замен (http://en.wikipedia.org/wiki/Levenshtein_distance#Possible_modifications, пункт пятый). Таким образом, вы можете настроить его в соответствии со своими потребностями, уделяя больше или меньше внимания типичным ошибкам.

person Yves Daoust    schedule 31.03.2014
comment
Я собираюсь попробовать это со стоимостью от 0 до 1 для каждого действия Левенштейна между двумя строками в зависимости от значений char. Это должно дать мне расстояние в два раза. - person zenbeni; 31.03.2014
comment
Вы решили эту проблему? Дай мне знать, что нет. Я работаю в ABBYY и готов вам помочь. - person Vitalik Kudryavtsev; 05.06.2014

Если вам нужна пользовательская функция стоимости для несоответствия букв, вы можете посмотреть алгоритм Нидлмана – Вунша (NW).

person Kunukn    schedule 31.03.2014
comment
Это хорошее чтение. Использование Needleman-Wunsch для поиска таксономических названий при первом проходе с двумя разными выходными данными OCR. Затем, используя эти имена, найти эти трудные слова на втором проходе во всех документах. Это может сработать. - person zenbeni; 31.03.2014