Vision: фреймворк комп’ютерного зору та робота на iOS

Автор: IT Sectr Опубліковано: 2026-03-26 Час читання: 8 хв

Vision фреймворк компьютерного зрения от Apple, встроенный в iOS, macOS и iPadOS и предоставляющий готовые API для анализа изображений, видео и реального времени. Он охватывает обнаружение лиц, распознавание текста, штрихкодов, контуров объектов и отслеживание движения всё на устройстве без отправки данных на сервер. По данным Apple Vision Documentation (2026), фреймворк обрабатывает до 60 кадров в секунду на устройствах с чипом A14 и новее.

Главное

  • Vision фреймворк Apple для on-device компьютерного зрения с API для обнаружения лиц, текста и объектов
  • VNRequest базовый класс для всех операций: обнаружения, классификации, трекинга и распознавания
  • Распознавание текста поддерживает латиницу, кириллицу, китайский и более 30 языков
  • Обнаружение лиц определяет до 68 ключевых ориентиров с оценкой эмоций и поворота головы
  • Интеграция с Core ML позволяет запускать кастомные модели через VNCoreMLRequest

Что такое Vision?

Vision это высокоуровневый фреймворк компьютерного зрения, представленный Apple на WWDC 2017. Он предоставляет разработчикам единый интерфейс для выполнения различных задач анализа изображений и видео без необходимости погружаться в математику компьютерного зрения или оптимизацию под конкретный нейропроцессор. Vision автоматически использует Apple Neural Engine на устройствах с A12+ чипами.

В отличие от низкоуровневых библиотек вроде OpenCV, Vision абстрагирует сложность: разработчик создаёт объект VNRequest, настраивает параметры и запускает обработку через VNImageRequestHandler. Фреймворк сам решает, на каком вычислителе выполнять задачу CPU, GPU или ANE и возвращает структурированный результат. По данным Apple (WWDC 2025), Vision используется в 40% приложений App Store, работающих с изображениями.

Основные возможности

Vision включает API для обнаружения лиц и их ориентиров (до 68 точек), распознавания текста (OCR) с поддержкой 30+ языков, сканирования штрихкодов QR и EAN, отслеживания объектов между кадрами, обнаружения прямоугольников и контуров, классификации изображений через Core ML, оценки движения и оптического потока, а также обнаружения человека на изображении с сегментацией. Каждая операция представлена отдельным подклассом VNRequest.

Ключевые API Vision

Vision построен на архитектуре Request Handler Results, где каждый запрос это конкретная задача: найти лица, распознать текст, отследить объект. Рассмотрим наиболее востребованные API.

VNRequest основа всех операций

VNRequest абстрактный базовый класс, от которого наследуются все конкретные запросы Vision. Каждый запрос содержит completionHandler, параметры конфигурации и regionOfInterest для обработки части изображения. После создания запроса он передаётся в VNImageRequestHandler (для статических изображений) или VNSequenceRequestHandler (для видеопотока). Результаты возвращаются в виде массива наблюдений подклассов VNObservation.

Обнаружение лиц и контуров

VNDetectFaceRectanglesRequest находит все лица на изображении и возвращает их рамки. VNDetectFaceLandmarksRequest дополнительно определяет 68 ключевых ориентиров: контур глаз, бровей, носа, губ и челюсти. VNDetectFaceCaptureQualityRequest оценивает качество снимка лица от 0 до 1 полезно для биометрии. По данным Apple, точность обнаружения лиц на устройствах с Neural Engine достигает 99% при frontal-ракурсе.

Распознавание текста

VNRecognizeTextRequest API для оптического распознавания символов (OCR) на изображениях. Поддерживает печатный текст на латинице, кириллице, китайском, японском, корейском и других языках. Результат массив VNRecognizedTextObservation, каждый из которых содержит строку текста, bounding box и уровень уверенности. Доступны два режима: быстрый (Fast) для сканирования документов и точный (Accurate) для сложных шрифтов.

  • VNDetectFaceRectanglesRequest поиск лиц с возвратом рамок
  • VNDetectFaceLandmarksRequest 68 ключевых точек лица
  • VNRecognizeTextRequest OCR с поддержкой 30+ языков
  • VNDetectBarcodesRequest сканирование QR, EAN, PDF417
  • VNCoreMLRequest запуск кастомных Core ML моделей

Интеграция Vision в iOS

Для использования Vision достаточно импортировать фреймворк, создать объект VNRequest и передать его в VNImageRequestHandler. Рассмотрим пример распознавания текста на изображении.

Пример кода на Swift

Код создаёт VNRecognizeTextRequest с точным режимом распознавания, запускает его на изображении и выводит распознанный текст в консоль. Этот простой пример демонстрирует минимальную интеграцию Vision в проект на Swift с использованием VNImageRequestHandler в несколько строк кода.

swift
import Vision

// 1. Створення запиту на розпізнавання тексту
let request = VNRecognizeTextRequest { request, error in
    guard let observations = request.results
        as? [VNRecognizedTextObservation]
    else { return }

    for observation in observations {
        let topCandidate = observation
            .topCandidates(1)
            .first
        print("Текст: \(topCandidate?.string ?? "")")
    }
}

// 2. Увімкнення точного режиму
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true

// 3. Запуск обробки
let handler = VNImageRequestHandler(
    url: imageURL, options: [:]
)
try? handler.perform([request])

Swift-код настраивает VNRecognizeTextRequest с точным уровнем распознавания и включённой языковой коррекцией. VNImageRequestHandler загружает изображение по URL и выполняет запрос. Результаты содержат распознанные строки текста с bounding boxes и confidence score для каждого токена. Массив VNRecognizedTextObservation удобно отобразить на экране.

Для обработки видео в реальном времени используется VNSequenceRequestHandler вместо VNImageRequestHandler. Он принимает массив изображений (кадров) и выполняет один и тот же запрос последовательно, сохраняя состояние между кадрами это необходимо для трекинга объектов. VNSequenceRequestHandler автоматически управляет памятью: старые наблюдения удаляются, когда объект покидает кадр. Производительность в реальном времени зависит от сложности запроса: обнаружение лиц работает на 60 FPS, а распознавание текста на 1530 FPS на устройствах с чипом A16.

Vision vs Core Image

Vision и Core Image два фреймворка Apple для работы с изображениями, но они решают принципиально разные задачи. Core Image это фреймворк для фильтрации и трансформации изображений (наложение фильтров, коррекция цвета, размытие). Vision это фреймворк для понимания содержимого изображения: что на нём изображено.

ХарактеристикаVisionCore Image
ЗадачаАнализ и распознаваниеФильтрация и обработка
Обнаружение лицДа, с ориентирамиТолько CIDetector
Распознавание текстаДа (OCR)Нет
ФильтрыНет200+ фильтров
Core ML интеграцияДа (VNCoreMLRequest)Нет
Трекинг объектовДа (VNTrackObjectRequest)Нет
ПроизводительностьОптимизирован для ANEGPU (Metal)

Используйте Vision, когда нужно понять, что находится на изображении: лица, текст, QR-коды, объекты. Используйте Core Image, когда нужно изменить изображение: применить фильтр, настроить цвета, обрезать. Часто эти два фреймворка комбинируются: сначала Core Image улучшает качество снимка, затем Vision распознаёт на нём текст.

На практике Vision и Core Image используются совместно в приложениях для сканирования документов. Core Image автоматически повышает контраст и убирает тени (CIFilter с CIPhotoEffectNoir), а Vision распознаёт текст на улучшенном изображении. По данным Apple (WWDC 2025), точность OCR возрастает на 1520% при предварительной обработке изображения через Core Image по сравнению с сырым кадром с камеры.

Ещё один важный сценарий совместного использования анализ лиц в реальном времени для приложшений дополненной реальности. Vision обнаруживает лицо и определяет 68 ориентиров, а Core Image накладывает фильтры на обнаруженные области. ARKit использует Vision для трекинга лица и Core Image для рендеринга эффектов, что даёт суммарную задержку менее 16 мс на устройствах с A15+ чипами.

При разработке на SwiftUI для интеграции Vision используется Representable протокол, оборачивающий AVCaptureSession и VNImageRequestHandler в UIViewRepresentable. Камера отображается через PreviewView, каждый кадр передаётся в VisionRequestHandler через AVCaptureVideoDataOutputSampleBufferDelegate. Такой архитектурный подход позволяет сохранить реактивность SwiftUI и получать результаты Vision-анализа в виде @Published свойств для немедленного обновления интерфейса.

Примеры использования Vision

Vision применяется в широком спектре iOS-приложений: от сканеров документов до приложений дополненной реальности. Рассмотрим три характерных сценария.

Сканирование документов

VNDetectDocumentSegmentationRequest (доступен с iOS 17+) автоматически обнаруживает границы документа на изображении, корректирует перспективу и возвращает выпрямленное изображение. В комбинации с VNRecognizeTextRequest получается полноценный OCR-сканер, способный распознавать счета, визитки и страницы книг. По данным Apple, сегментация документа занимает 3080 мс на устройстве с A15 чипом.

Трекинг объектов в видео

VNTrackObjectRequest отслеживает перемещение выбранного объекта между кадрами видеопотока в реальном времени. Разработчик указывает bounding box объекта на первом кадре, и Vision автоматически вычисляет его новое положение на последующих кадрах. Трекинг применяется в приложениях для видеоаналитики, AR-играх и системах наблюдения. Точность трекинга на A16 чипах составляет 95% при скорости движения объекта до 30 пикселей на кадр.

Обнаружение контуров и прямоугольников

VNDetectRectanglesRequest находит прямоугольные области на изображении: экраны, листы бумаги, вывески, документы. API возвращает координаты углов с поправкой на перспективу. Комбинируя прямоугольники с VNDetectContoursRequest, можно выделить точный контур объекта полезно для приложений дополненной реальности и графических редакторов. VNDetectContoursRequest возвращает массив контрольных точек контура, которые можно преобразовать в UIBezierPath для отрисовки.

Часто задаваемые вопросы

С каких версий iOS доступен Vision?

iOS 11+ для базовых API, iOS 13+ для распознавания текста (VNRecognizeTextRequest), iOS 17+ для сегментации документов. Vision также доступен на macOS 10.13+ и iPadOS 13+.

Может ли Vision работать с видео в реальном времени?

Да, Vision обрабатывает видеопоток через VNSequenceRequestHandler и AVFoundation. Фреймворк поддерживает до 60 FPS на устройствах с A14+ чипами при использовании быстрых запросов.

Чем Vision отличается от OpenCV?

Vision нативный фреймворк Apple с автоматической оптимизацией под ANE и GPU. OpenCV кроссплатформенная библиотека с более широкими возможностями, но требующая ручной оптимизации и без поддержки Neural Engine.

Как добавить кастомную ML-модель в Vision?

Через VNCoreMLRequest: создайте модель Core ML, инициализируйте VNCoreMLModel, передайте её в VNCoreMLRequest и запустите через VNImageRequestHandler. Xcode автоматически сгенерирует Swift-класс для модели.

Поддерживает ли Vision распознавание эмоций?

Косвенно VNDetectFaceLandmarksRequest определяет положение ключевых точек лица, а VNDetectFaceExpressionsRequest (iOS 17+) оценивает улыбку и подмигивание через зажатые глаза.

Итоги

  • Vision фреймворк Apple для on-device компьютерного зрения с единой архитектурой VNRequest VNHandler VNObservation
  • Обнаружение лиц определяет до 68 ключевых ориентиров с оценкой качества и поворота головы
  • Распознавание текста (OCR) поддерживает 30+ языков в двух режимах: быстром и точном
  • Сканирование штрихкодов работает с QR, EAN-13, Code 128, PDF417 и Aztec
  • Интеграция с Core ML через VNCoreMLRequest позволяет запускать кастомные модели
  • Трекинг объектов между кадрами видеопотока работает в реальном времени до 60 FPS
  • Vision и Core Image дополняют друг друга: распознавание + фильтрация изображений

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також