Vision в iOS 11 має все, що потрібно для створення програми, яка може розпізнавати текстові символи, а впровадження відбувається одночасно. Вам не потрібні знання технічного кодування – навігація по цій функції досить проста. Більше того, реалізація є безпроблемною.
Структура бачення
Структура бачення дозволяє легко реалізувати будь-яке завдання, яке включає деталі комп’ютера. Структура виконує виявлення обличчя та орієнтирів обличчя, розпізнавання штрих-коду, реєстрацію зображень, загальне відстеження ознак і визначення тексту. Vision також дозволяє використовувати власні моделі Core ML для таких завдань, як класифікація або виявлення об’єктів.
VN DetectTextRectanglesRequest
В.Н. DetectTextRectanglesRequest є запитом аналізу зображень , який знаходить області видимого тексту в зображенні; функція повертає текстові символи у вигляді прямокутної рамки з походженням і розміром.
Якщо ви звикли використовувати swift і деякий час програмували, то вам, напевно, цікаво, яка користь від Vision, коли є інші функції, такі як зображення та AVFoundation. Ну, Vision більш точний і простий. Функція також доступна на різних платформах. Однак використання Vision може вимагати більшої потужності обробки та часу обробки.
Щоб використовувати Vision для виявлення тексту, вам знадобиться Xcode 9 і пристрій під керуванням iOS 11.
Створення камери за допомогою Avcapture
По-перше, вам потрібно створити камеру з AVCapture ; це відбувається шляхом ініціалізації одного об’єкта AVcapturesession для виконання захоплення в режимі реального часу або офлайн. Після цього зробіть сеанс до підключення пристрою.
Щоб заощадити ваш час на створення інтерфейсу вашої програми, подумайте про створення початкового проекту, для початку це дасть вам час зосередитися на вивченні фреймворку Vision.
Відкрийте свій стартовий проект. Перегляди в розкадровці мають бути готові та налаштовані для вас.
На ViewController.swift знайдіть розділ коду з функціями та розетками.
Під outlet- ImageView оголосіть сеанс для AVcapturesession – це використовується, коли ви хочете, щоб дії виконувались на основі прямої трансляції.
Встановіть AVcapturesession і AVmediatype на відео, оскільки ви будете виконувати зйомку камерою, щоб забезпечити її безперервну роботу
Визначте пристрій виведення та введення
Вхід – це те, що побачить камера, а вихідний – відео у встановленому форматі типу KCVPixelFormatType_32GRA.
Нарешті, додайте до imageView підрівень, який містить відео, і розпочніть сеанс. Функція відома як inViewdidload. Також потрібно встановити рамку шару.
Викликати функцію в методі viewWillAppear .
Оскільки межі ще не завершені, перевизначте метод viewDidLayoutSubviews ( ), щоб оновити зв’язані шари.
Після виходу iOS 10 потрібен додатковий запис у Info.plist, це є підставою для використання камери. Вам також слід встановити опис використання конфіденційної камери.
Виявлення тексту; Як працює Vision Framework
Існує три кроки для впровадження Vision у програмі.
Обробники – це коли ви хочете, щоб фреймворк щось зробив після виклику запиту.
Спостереження – це те, що ви хочете зробити з наданими вами даними, починаючи з одного запиту
Запити – це коли ви запитуєте фреймворк Detect
В ідеалі ви створюєте один текстовий запит як VNdetecttextrectanglesrequest . Це свого роду VN-запит, який обрамляє текст. Після того, як фреймворк завершить роботу з програмою, ви перейдете до виклику функції Dettexthandler . Ви також захочете дізнатися точний фрейм, який був розпізнаний, установіть для нього значення Reportcharacterboxes =True.
Після цього визначте спостереження, які містять усі результати VNdetecttextrectanglesrequest , не забудьте додати Vision до вихідної камери. Оскільки Vision відкриває API високого рівня, робота з ним безпечна.
Функція перевіряє , є чи Cmsamplebuffer існує і PutOut Avcaptureoutput . Потім слід перейти до створення однієї змінної Requeststoptions як 1 Тип словника VNimageoption . Параметр VNmage — це тип структури, що містить властивості та дані з камери. Потім слід створити обробник VNimagerequesthandler і виконати текстовий запит.
Нанесення меж навколо виявленого тексту
Ви можете почати з того, що маєте структуру, щоб намалювати дві коробки, одну для кожної букви, яку вона виявляє, а іншу — для кожного слова. Таблиці – це комбінація всіх символів, які знайдете у вашому запиті.
- Визначте точки на своєму виді, щоб допомогти вам розташувати квадрати.
- Після цього створіть CALaye r; використовуйте VNrectangleobservation, щоб визначити свої обмеження, спрощуючи процес окреслення рамки.
Тепер усі ваші функції викладені.
Щоб з’єднати свої точки, почніть з асинхронного виконання коду. Потім ви повинні перевірити, чи існує регіон у ваших результатах з вашого VNTextObservation .
Тепер ви можете викликати свою функцію, яка намалюватиме квадрат у межах області. Перевірте, чи є в регіоні поля для символів, а потім зателефонуйте в службу, яка створює поле навколо кожної літери.
Після цього створіть змінну RequestOptions. Тепер ви можете створити об’єкт VNImageRequestHandler і виконати створений текстовий запит.
Нарешті, останній крок – запуск коду вашого бачення в прямому ефірі. Вам потрібно буде взяти відеовихід і конвертувати його в Cmsamplebuffer.
Додаткові поради
Завжди намагайтеся обрізати зображення та обробляти лише той розділ, який вам потрібен. Це зменшить час обробки та обсяг пам’яті
Увімкніть корекцію мови під час роботи з нечисловими символами, а потім вимкніть її під час роботи з числовими символами
Включіть перевірку розпізнаних рядків чисел, щоб підтвердити точність і виключити показ помилкового значення для користувача.
Контролер документ-камери є найкращим компаньйоном для розпізнавання тексту, оскільки якість зображення відіграє важливу роль у розпізнаванні тексту.
Подумайте про встановлення мінімальної висоти тексту, щоб підвищити продуктивність.
З Vision у вас є все необхідне для розпізнавання тексту. Оскільки Vision простий у використанні та займає короткий час для впровадження, його використання майже еквівалентне грі з Legos. Спробуйте протестувати свою програму на різних об’єктах, шрифтах, освітленні та розмірах. Ви також можете вразити себе, поєднавши Vision з Core ML.