Ответ 1
Я работаю над проектом, который делает что-то похожее на Apple App Store с помощью камеры, как вы упомянули.
Отличное место для обработки видео в реальном времени - проект, который я нашел на GitHub. Это использует структуру AVFoundation, и вы реализуете методы AVCaptureVideoDataOutputSampleBufferDelegate.
Как только у вас есть поток изображений (видео), вы можете использовать OpenCV для обработки видео. Вам необходимо определить область на изображении, которое вы хотите использовать OCR, прежде чем запускать его через Tesseract. Вы должны играть с фильтрацией, но широкие шаги, которые вы выполняете с OpenCV:
- Преобразование изображений в B & W с использованием cv:: cvtColor (inputMat, outputMat, CV_RGBA2GRAY);
- Порог изображений для устранения ненужных элементов. Вы указываете пороговое значение для устранения, а затем установите все остальное на черный (или белый).
- Определите линии, которые образуют границу поля (или независимо от того, что вы обрабатываете). Вы можете создать "ограничительную рамку", если вы устранили все, кроме нужной области, или используйте алгоритм HoughLines (или вероятностную версию HoughLinesP). Используя это, вы можете определить пересечение линии, чтобы найти углы, и использовать углы для деформации нужной области, чтобы выровнять ее в правильный прямоугольник (если этот шаг необходим в вашем приложении) до OCR.
- Обработать часть изображения с помощью библиотеки OCR Tesseract, чтобы получить полученный текст. В OpenCV можно создавать учебные файлы для букв, чтобы вы могли читать текст без Tesseract. Это может быть быстрее, но также может быть намного больше. В приложении App Store они делают что-то похожее, чтобы отобразить текст, который был прочитан поверх верхнего изображения. Это добавляет прохладный фактор, поэтому он просто зависит от того, что вам нужно.
Некоторые другие подсказки:
- Я использовал книгу "Instant OpenCV", чтобы быстро начать с этого. Это было очень полезно.
- Загрузите OpenCV для iOS из OpenCV.org/downloads.html
- Я нашел адаптивное пороговое значение очень полезным, вы можете прочитать все об этом, выполнив поиск "OpenCV adaptiveThreshold". Кроме того, если у вас есть изображение с очень маленьким промежутком между светлыми и темными элементами, вы можете использовать Binarization Otsu. Это автоматически определяет пороговые значения на основе гистограммы изображения в градациях серого.