Чеки с выцветшей краской, мятые накладные, рукописные заметки — стандартные OCR-библиотеки часто ошибаются на таких документах. Мы решаем эту проблему с помощью кастомного preprocessing и постобработки: подбираем стек (Vision, ML Kit или Tesseract) под конкретную задачу, а не используем универсальное решение. Оценим ваш проект бесплатно — свяжитесь с нами.
Как выбрать инструмент для OCR?
Выбор между Vision, ML Kit и Tesseract зависит от задачи и требований к скорости и точности. iOS Vision framework — VNRecognizeTextRequest — работает on-device, поддерживает 18+ языков, включая кириллицу. Уровень .accurate даёт 180–350 ms на обработку фото A4 на iPhone 12. ML Kit Text Recognition v2 — кроссплатформенный, on-device, поддерживает кириллицу и CJK. На Android используется через TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS). Tesseract через SwiftyTesseract / tess-two — для кастомных шрифтов, но в 3–5 раз медленнее. Например, ML Kit на Android в 1,5 раза быстрее Tesseract на том же устройстве при распознавании печатного текста. Мы помогаем выбрать оптимальный инструмент под вашу задачу — от простого сканирования до распознавания таблиц и бланков.
Почему preprocessing критически важен?
40% успеха OCR — качество входного изображения. Типовой пайплайн:
- Grayscale — удаление цветового шума
- Коррекция контраста через
CIColorControls(iOS) илиColorMatrix(Android) - Binarization (Otsu threshold) — при неравномерном освещении
- Deskew — коррекция перспективы и наклона
Из нашей практики: для приложения сканирования накладных preprocessing повысил точность с 78% до 94% в условиях склада. Особенно помогла коррекция перспективы через VNDetectRectanglesRequest и CIPerspectiveCorrection. Практические результаты:
| Условие | Без preprocessing | С preprocessing |
|---|---|---|
| Яркий свет | 70% | 92% |
| Наклон документа | 65% | 89% |
| Мятый лист | 55% | 84% |
Как мы реализуем OCR: реальный кейс
Разрабатывали OCR для клиента — логистической компании: необходимо распознавать номера накладных с матричным шрифтом на мятых коробках. Выбрали ML Kit с кастомным preprocessing. Pipeline: grayscale → Otsu binarization → deskew → ML Kit. Постобработка: извлечение номера накладной через regex с контрольной суммой. Точность на тестовой выборке — 96%. Срок — 5 рабочих дней.
func preprocessImage(_ image: UIImage) -> UIImage { guard let ciImage = CIImage(image: image) else { return image } let gray = ciImage.applyingFilter("CIPhotoEffectMono") let contrast = gray.applyingFilter("CIColorControls", parameters: [kCIInputContrastKey: 1.1]) // Otsu binarization not built-in, use custom kernel return UIImage(ciImage: contrast) } Такой pipeline мы используем в каждом проекте. Гарантируем результат.
Что даёт постобработка?
Распознанный текст — не всегда готовые данные. Для извлечения номеров телефонов, email, дат используем NSDataDetector (iOS) или Patterns (Android). Для структурированных полей (ИНН, СНИЛС) — regex с проверкой контрольных цифр. Важно: ML Kit возвращает TextBlock → TextLine → TextElement с координатами. Мы группируем строки по Y, чтобы восстановить структуру таблицы. Благодаря этому экономия на ручном вводе достигает 30–50%.
Сравнение инструментов
| Параметр | Vision (iOS) | ML Kit (Android) | Tesseract |
|---|---|---|---|
| Скорость | 150–350 ms | 200–400 ms | 600–1000 ms |
| Языки | 18+, кириллица | латиница, кириллица, CJK | любой с обучением |
| On-device | да | да | да |
| Кастомная модель | нет | нет | да |
| Сложность интеграции | средняя | низкая | высокая |
Как распознать текст в реальном времени?
Для real-time OCR используем уменьшение разрешения до 720p и запускаем распознавание каждые 3-5 кадров с буферизацией результатов. На Android ML Kit в STREAM_MODE управляет частотой автоматически. На iOS — AVCaptureVideoDataOutput с VNRecognizeTextRequest. Это даёт стабильные 15-20 fps без перегрева устройства. Закажите разработку такого модуля — получите консультацию по интеграции.
Процесс работы над OCR-модулем
- Анализ: изучаем типы документов, условия съёмки, шрифты.
- Выбор инструмента и подготовка preprocessing pipeline.
- Реализация распознавания и постобработки.
- Интеграция в приложение (синхронно или real-time).
- Тестирование на наборе реальных данных (минимум 100 образцов).
- Деплой и поддержка.
Что входит в разработку OCR-модуля
- Анализ требований и выбор стека
- Разработка preprocessing pipeline под ваши условия
- Реализация распознавания (фото или real-time)
- Постобработка данных (извлечение полей, валидация)
- Интеграция в приложение (iOS/Android)
- Тестирование и доработка по результатам
- Документация и код-ревью
- Опыт нашей команды — более 5 лет в mobile, 30+ проектов с OCR
Сроки и стоимость
Сроки: от 3 рабочих дней (OCR для фото с preprocessing) до 2 недель (real-time документ-сканер с коррекцией). Внедрение OCR снижает затраты на ручной ввод на 30–50%. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки. Мы гарантируем качество: на выходе вы получаете готовый модуль с точностью не ниже 95% (на оговорённых типах документов). Закажите разработку или получите консультацию.







