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("Text: \(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, а распознавание текста — на 15–30 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 возрастает на 15–20% при предварительной обработке изображения через 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, сегментация документа занимает 30–80 мс на устройстве с 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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