OCR: выберите лучшую строку на основе последних N результатов (адаптивный фильтр для OCR).

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

Учитывая выходные данные OCR последних N кадров, я хочу решить, что является лучшим результатом (построчно, для простоты).

Например, для N=3 мы могли бы использовать медианную фильтрацию:

ABXD
XBCX
AXCD

Когда есть 2 из 3 одинаковых символов, победит большинство, поэтому результатом будет ABCD. Однако это не так просто с разными размерами строк. Если я ожидаю заданный размер M (при сканировании таблицы цен строки обычно XX.XX), я всегда могу оштрафовать строки больше M.

Если бы мы говорили о числах, довольно хорошо работала бы медианная фильтрация (простое вычитание фона в компьютерном зрении) или какая-нибудь адаптивная фильтрация по методу наименьших квадратов. Также существует проблема похожих символов: l и 1 могут быть очень похожими, в зависимости от шрифта.

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

Кто-нибудь уже обращался с такой проблемой? Есть ли какой-нибудь известный алгоритм для такого рода проблем, который я должен знать?


person jpimentel    schedule 29.03.2012    source источник
comment
Для работы со строками разной длины вы можете попробовать найти самую длинную общую подстроку, например. для blended и blencled LCS равен blen*ed, поэтому соревнование проводится между d и cl. В любом случае интересная проблема, жаль, что у меня нет ничего более конкретного :)   -  person Rafał Dowgird    schedule 29.03.2012
comment
@RafałDowgird Разве LCS не будет blen?   -  person jpimentel    schedule 30.03.2012
comment
Нет, LCS может пропускать индексы (в обеих строках).   -  person Rafał Dowgird    schedule 30.03.2012


Ответы (1)


Эта проблема называется множественным выравниванием последовательностей, и вы можете прочитать о ней здесь

person Jarosław Gomułka    schedule 29.03.2012
comment
Спасибо! Я изучу эту проблему. Я надеюсь, что смогу найти простое решение для небольших размеров строк. - person jpimentel; 30.03.2012