Comments 8
А почему не подошёл tesseract ?
Tesseract плохо справляется с некачественными изображениями. Глобальная задумка была в том, чтобы сделать инструмент, лишённый этого недостатка. Поэтому к изображениям применяется довольно много аугментаций. В том числе и зашумление.
Tesseract работает просто отвратительно, когда надо распознавать что-то кроме черно-белых документов.
И, когда читаешь лайвхаки от советчиков в статьях и на stackoverflow, просто ловишь фейспалмы, ибо советы все сводятся к тому, что ты сам пороги подбери, в ч/б перекрась, толщины букв преобразуй. Как будто, советчики находятся где-то в году 1997м, и игнорируют весь прогресс этих лет, и считают, что писать костыли, которые, например, будут преобразовать скриншот игры, или фотографию ценника, в что-то, похожее на документ при помощи opencv, с нуля, это норм, и это именно то, чем должен заниматься любой, попробовавший решить задачу реального мира с ocr. Поэтому, лично для меня вообще вопрос "чем не подошёл tesseract", выглядит очень странно.
Но, при этом, тот же easy ocr, к примеру, показал себя весьма неплохо, и почти догнал штатный ocr в айфоне. Как я понимаю, можно ещё заморочиться, и что-то вроде android x86 накатить на сервер, чтобы ml kit андроида заюзать, но тут хз...
Спасибо, отличная статья!
Хотел бы подправить: в блоке про ResNet изображение сети DenseNet
На CNN архитектуре, из 10 млн. весов, 8 млн. приходятся на dense_4. Возможно стоит попробовать убрать пару dense слоёв, и снизить глубину (кол-во нейронов) на всех слоях включая свёрточные. Такая глубина нужна для более сложных данных типа ImageNet, а для распознавания букв упрощённая архитектура может сработать быстрее и не хуже по точности. На других архитектурах тоже ИМХО перебор с количеством и глубиной dense слоёв.
Для интереса можно было бы ещё vMamba использовать, вроде довольно перспективная архитектура
Компьютерное зрение сквозь года