OCR: выберите лучшую строку на основе последних N результатов (адаптивный фильтр для OCR) - PullRequest
3 голосов
/ 29 марта 2012

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

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

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

ABXD
XBCX
AXCD

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

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

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

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

1 Ответ

3 голосов
/ 29 марта 2012

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

...