Я видел несколько вопросов о выборе наилучшего результата распознавания с учетом результатов, полученных на разных движках, и ответ, как правило, «выбрать лучший движок».
Однако я хочу сделать несколько кадров текстовых изображений с возможными временными окклюзиями или временными сбоями.
Я использую tesseract-ocr с python-tesseract.
Учитывая выходные данные OCR последних N кадров, я хочу решить, какой из них является наилучшим (построчно, для простоты).
Например, для N = 3 мы могли бы использовать медианную фильтрацию:
ABXD
XBCX
AXCD
Когда есть 2 из 3 одинаковых персонажей, большинство победит, поэтому результатом будет ABCD.
Однако это не так просто с разными размерами струн. Если я ожидаю заданный размер M (если при сканировании таблицы цен строки обычно имеют размер XX.XX), я всегда могу оштрафовать на строки больше M.
Если бы мы говорили числами, медианная фильтрация работала бы достаточно хорошо (простое вычитание фона в компьютерном зрении) или адаптивная фильтрация по методу наименьших квадратов.
Также существует проблема схожих символов: l
и 1
могут быть очень похожими, в зависимости от шрифта.
Я также думал об использовании расстояний между каждой строкой. Например, выберите строку с наименьшей суммой расстояний с остальными.
Кто-нибудь раньше решал подобные проблемы? Есть какой-нибудь известный алгоритм для такого рода проблемы, который я должен знать?