В Vision в iOS 11 есть все необходимое для создания приложения, которое может распознавать текстовые символы с одновременной реализацией. Вам не нужны технические знания в области программирования - ориентироваться в этой функции довольно просто. Более того, реализация проходит без проблем.
Концепция видения
Платформа Vision позволяет легко реализовать любую задачу, которая связана с компьютерными деталями. Эта структура выполняет обнаружение лиц и ориентиров, распознавание штрих-кодов, регистрацию изображений, отслеживание общих функций и обнаружение текста. Vision также позволяет использовать пользовательские модели Core ML для таких задач, как классификация или обнаружение объектов.
VN DetectTextRectanglesRequest
В VN DetectTextRectanglesRequest запрос анализа изображения, который находит области видимого текста на изображении; функция возвращает текстовые символы в виде прямоугольной ограничительной рамки с указанием источника и размера.
Если вы привыкли использовать swift и какое-то время занимаетесь программированием, то вам, вероятно, интересно, в чем польза Vision, когда есть другие функции, такие как image и AVFoundation. Что ж, Vision точнее и прямолинейнее. Эта функция также доступна на различных платформах. Однако использование Vision может потребовать большей вычислительной мощности и времени обработки.
Чтобы использовать Vision для обнаружения текста, вам потребуется Xcode 9 и устройство под управлением iOS 11.
Создание камеры с помощью Avcapture
Во-первых, вам нужно создать камеру с AVCapture; это путем инициализации одного объекта AVcapturesession для выполнения захвата в реальном времени или в автономном режиме. После этого сделайте сеанс подключения к устройству.
Чтобы сэкономить ваше время на создание пользовательского интерфейса вашего приложения, подумайте о том, чтобы создать стартовый проект, для начала, это даст вам время сосредоточиться на изучении фреймворка Vision.
- Откройте свой стартовый проект. Все виды в раскадровке должны быть готовы и настроены для вас.
- На ViewController.swift, ищите раздел кода с функциями и выходами.
- Под розеткой-ImageView, dобъявить сеанс для AVcapturesession - это используется всякий раз, когда вы хотите, чтобы действия выполнялись на основе прямой трансляции.
- Установить AVcapturesession и AVmediatype на видео, так как вы будете выполнять съемку камеры, чтобы она работала непрерывно
- Определите устройство вывода и ввода
- Вход - это то, что будет видеть камера, а выход - видео с заданным форматом типа KCVPixelFormatType_32GRA.
- Наконец, добавьте подслой который содержит видео на imageView и начать сеанс. Эта функция известна как inViewdidload. Также необходимо установить рамку слоя.
Вызовите функцию в viewWillAppear метод.
Поскольку границы еще не определены, переопределите viewDidLayoutSubviews () метод обновления привязанных слоев.
После выпуска iOS 10 требуется дополнительная запись в Info.plist, которая дает повод для использования камеры. Вы также должны установить Privacy-Camera Usage Description.
Обнаружение текста; Как работает Vision Framework
Чтобы внедрить Vision в приложение, нужно выполнить три шага.
- Обработчики - это когда вы хотите, чтобы фреймворк что-то делал после вызова запроса.
- Наблюдения - это то, что вы хотите сделать с предоставленными вами данными, начиная с одного запроса
- Запросы - это когда вы запрашиваете фреймворк Detect
В идеале вы создаете один текстовый запрос как VNdetecttextrectanglesrequest. Это своего рода VNrequest граничит с текстом. После того, как фреймворк завершит приложение, вы перейдете к вызову Dettexthandler функция. Вы также захотите узнать точный кадр, который был распознан, установите для него значение Reportcharacterboxes= Верно.
После этого определите наблюдения, которые содержат все результаты VNdetecttextrectanglesrequest, не забудьте добавить Vision к выходной камере. Поскольку Vision предоставляет высокоуровневые API, работа с ним безопасна.
Функция проверяет, есть ли Cmsamplebuffer существует и вывезено Avcaptureoutput. Затем вы должны перейти к созданию одной переменной Запросы как 1 тип словаря VNimageoption. В VNmage option - это тип структуры, которая содержит свойства и данные с камеры. Затем вы должны создать Обработчик запросов VNimagerequesthandler и выполните текстовый запрос.
Рисование границ вокруг обнаруженного текста
Вы можете начать с того, что фреймворк будет рисовать два прямоугольника: один для каждой буквы, которую он обнаруживает, а другой - для каждого слова. Таблицы представляют собой комбинацию всех блоков символов, которые вы найдете по вашему запросу.
- Определите точки на вашем обзоре, чтобы помочь вам расположить коробки.
- После этого создайте CALayeр; использовать Наблюдение за прямоугольником чтобы определить ваши ограничения, облегчая процесс обрисовки рамки.
Теперь у вас есть все функции.
Чтобы соединить ваши точки, начните с асинхронного выполнения кода. Затем вы должны проверить, существует ли регион в ваших результатах из вашего VNTextObservation.
Теперь вы можете вызвать свою функцию, которая нарисует рамку внутри области. Проверьте, есть ли в регионе поля с символами, затем позвоните в службу, которая помещает поля вокруг каждой буквы.
После этого создайте переменную RequestOptions. Теперь вы можете создать VNImageRequestHandler объект и выполните созданный вами текстовый запрос.
Наконец, последний шаг - запуск кода вашего видения в прямом эфире. Вам нужно будет взять видеовыход и преобразовать его в Cmsamplebuffer.
Дополнительные советы
- Всегда старайтесь обрезать изображение и обрабатывать только тот участок, который вам нужен. Это сократит время обработки и объем памяти.
- Включите исправление языка при работе с нечисловыми символами, а затем отключите его при работе с числовыми символами
- Включите проверку для распознанных числовых строк, чтобы подтвердить точность и исключить отображение ложных значений для пользователя.
- Контроллер документ-камеры - лучший помощник для распознавания текста, поскольку качество изображения играет важную роль в распознавании текста.
- Рассмотрите возможность установки минимальной высоты текста для повышения производительности.
С Vision у вас есть все необходимое для распознавания текста. Поскольку Vision прост в использовании и требует короткого времени для внедрения, его использование почти эквивалентно игре с Lego. Попробуйте протестировать свое приложение на разных объектах, шрифтах, освещении и размерах. Вы также можете произвести впечатление, объединив Vision с Core ML.