Ручной ввод номера карты — частая причина ошибок и отказов от оплаты. Сканирование через камеру сокращает время ввода до 1–2 секунд и снижает процент брошенных корзин на 15–20%. Мы в своей практике используем проверенные решения: Stripe CardScan (Bouncer) или нативные OCR-фреймворки. Расскажем, какой вариант подойдёт под ваши задачи и как избежать типичных проблем. Внедрение такого функционала окупается за счёт повышения конверсии — экономия может достигать десятков процентов выручки.
Как выбрать инструмент для сканирования?
| Библиотека | Поддержка | Точность | Сложность | Цена |
|---|---|---|---|---|
| Card.io (PayPal) | Не обновляется с 2018 | Средняя | Низкая | Бесплатно |
| Stripe CardScan / Bouncer | Активная, Apache 2.0 | >95% | Средняя | Бесплатно |
| Vision (iOS) + ML Kit (Android) | Apple/Google | ~90% (требует фильтрации) | Высокая | Бесплатно |
Card.io исторически популярен, но давно не обновляется — на современных версиях iOS наблюдаются сбои AVCaptureSession. Не рекомендуем для новых проектов. Stripe CardScan (бывший Bouncer) — нейросетевое решение на TFLite/CoreML, работает офлайн. На iOS подключается через SPM: https://github.com/stripe/stripe-ios, на Android — через Gradle: com.stripe:stripecardscan. Его код открыт, что позволяет адаптировать под специфические требования. Нативные OCR-фреймворки (VNRecognizeTextRequest, ML Kit Text Recognition v2) не требуют сторонних зависимостей, но нужно самостоятельно реализовать детекцию зоны карты и стабилизацию результата (подтверждение через 3–5 последовательных одинаковых результатов).
Как обеспечить точность распознавания?
Точность распознавания зависит от условий съёмки. При хорошем освещении Stripe CardScan даёт 97% правильных номеров. В условиях слабого освещения или бликов точность падает до 85–90%. Мы рекомендуем реализовать проверку по алгоритму Луна и подсветку кадра при недостатке света. Для стабилизации результата используйте подтверждение через 3 последовательных совпадения.
| Условие | Stripe CardScan | Vision/ML Kit |
|---|---|---|
| Хорошее освещение | 97% | 92% |
| Слабый свет | 85% | 78% |
| Блики | 80% | 72% |
Почему стоит использовать нативные фреймворки, а не готовый SDK?
Готовый SDK (Stripe CardScan) даёт высокую точность из коробки и сокращает время разработки. Но если вам нужна полная кастомизация интерфейса или работа в специфических условиях (нестандартные карты, плохое освещение) — нативные Vision/ML Kit предоставляют полный контроль. Мы комбинируем подходы: для MVP используем Stripe CardScan, для production с уникальными требованиями пишем свой модуль на нативных API.
Какие данные можно и нельзя распознавать?
Номер карты — основная цель, точность >95%. Срок действия (MM/YY) распознаётся уверенно. Имя держателя — OCR справляется хуже из-за вариативности шрифтов и тиснения. Рекомендуем: номер + срок сканируем автоматически, имя — заполнять вручную как необязательное поле. Никогда не распознаём и не сохраняем CVV/CVC — он на обороте, и его хранение нарушает требования PCI DSS. Это не просто правило, а обязательное условие для прохождения аудита безопасности.
Реализация на Flutter
Пакет card_scanner на pub.dev работает через Platform Channels к нативным SDK. Альтернатива — google_mlkit_text_recognition с собственным парсером. Для production-приложения предпочтительнее Stripe CardScan через FFI: точнее и надёжнее в нестандартных условиях (плохое освещение, нестандартный дизайн карт). Flutter-разработчикам следует учитывать, что некоторые методы стабилизации требуют нативного кода — мы помогаем с обвязкой.
Разрешения и приватность: что важно для App Store?
iOS: NSCameraUsageDescription в Info.plist с формулировкой «для сканирования карты при оплате». Android: uses-permission android:name="android.permission.CAMERA" + runtime request через ActivityResultContracts.RequestPermission. Кадры с камеры обрабатываются только в памяти — не сохраняются на диск, не отправляются на сервер. Это критично для прохождения ревью App Store и Play Market. Подробнее о требованиях можно почитать в документации Stripe CardScan.
Что входит в работу?
- Анализ требований и выбор оптимального стека (Bouncer, Vision/ML Kit, Flutter-пакет).
- Интеграция SDK с кастомным UI (превью камеры, рамка карты, анимация).
- Реализация логики стабилизации и фильтрации ложных срабатываний.
- Тестирование на разных устройствах и в условиях слабого освещения.
- Документация по интеграции и поддержка при публикации в сторы.
Ориентировочные сроки и как мы работаем
Интеграция Stripe CardScan с базовым UI: 1–2 дня. Кастомный UI + нативный Vision/ML Kit с собственной логикой стабилизации: 2–3 дня. Полный цикл — от аналитики до деплоя — занимает от 3 до 5 дней в зависимости от сложности. Стоимость рассчитывается индивидуально.
Хотите ускорить приём платежей и снизить процент отказов? Получите консультацию по вашему проекту — проанализируем требования и предложим оптимальное решение. Наш опыт: 5+ лет в мобильной разработке, 30+ успешных проектов с интеграцией платежей. Гарантируем качество и соответствие гайдлайнам сторов. Свяжитесь с нами, чтобы обсудить детали.







