Comments 7
К слову в том же репозитории, где лежит сэмпл к статье, есть отдельная ветка с рабочим прототипом распознавания EMV карт с помощью этой библиотеки.
Для такой задачи лучше копать в сторону tensorflow. Можно попробовать https://github.com/DoubangoTelecom/ultimateCreditCard-SDK.
Могу ошибаться, но разве нет уже обученных моделей для on-device части? Судя по всему сильно влияет качество модели, а каждый раз на каждом устройстве заново учить само по себе звучит не очень. Всё таки вектор замены звучит слишком вкусно, а вот исход печальный конечно.
Да, всё верно, для on-device распознавания используются уже обученные модели и в данном случае мы не обучали свои модели, а использовали те, что предоставляет нам ML Kit (и Google и Huawei). Мы специально прописывали в манифесте meta-data tag, чтобы эти модели скачивались при установке приложения (без тэга они бы скачивались при первом использовании ML Kit распознавания).
В моих экспериментах ML Kit очень неплохо распознает цифры, но он чувствителен к фону и возможно к масштабу, и рекомендуют брать картинки в низком разрешении. Простое растягивание картинки по горизонтали процентов на 20 и наложение ч/б фильтра у меня улучшало результат. Ну и еще кадр можно обрезать по размеру строки с цифрами на карте.
Я пробовал менять разрешение фреймов превью, которые с камеры идут, но не помогло. Может быть стоило ещё что-то попробовать(растягивание, наложение ч/б фильтра, как вы предлагаете), но у нас была безотказно работающая альтернатива в виде card.io и мы решили, что дальше тратить время на ML Kit не стоит. Всё таки и у Google и у Huawei это заявлено как TextRecognition и он общего назначения, а здесь задача специфичная и цифры немного странно выглядят и фон почти всегда картинка. Если бы требовалось всё-таки сделать распознавание номера через камеру и уйти от card.io я бы смотрел уже в сторону специфичных моделей именно для распознавания номеров карт, как выше Александр предложил.
CameraX+ML Kit для распознавания номера карты в действии