Vision фреймворк компьютерного зрения от Apple, встроенный в iOS, macOS и iPadOS и предоставляющий готовые API для анализа изображений, видео и реального времени. Он охватывает обнаружение лиц, распознавание текста, штрихкодов, контуров объектов и отслеживание движения всё на устройстве без отправки данных на сервер. По данным Apple Vision Documentation (2026), фреймворк обрабатывает до 60 кадров в секунду на устройствах с чипом A14 и новее.
Главное
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.
Vision построен на архитектуре Request Handler Results, где каждый запрос это конкретная задача: найти лица, распознать текст, отследить объект. Рассмотрим наиболее востребованные API.
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) для сложных шрифтов.
Для использования Vision достаточно импортировать фреймворк, создать объект VNRequest и передать его в VNImageRequestHandler. Рассмотрим пример распознавания текста на изображении.
Код создаёт VNRecognizeTextRequest с точным режимом распознавания, запускает его на изображении и выводит распознанный текст в консоль. Этот простой пример демонстрирует минимальную интеграцию Vision в проект на Swift с использованием VNImageRequestHandler в несколько строк кода.
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 и Core Image два фреймворка Apple для работы с изображениями, но они решают принципиально разные задачи. Core Image это фреймворк для фильтрации и трансформации изображений (наложение фильтров, коррекция цвета, размытие). Vision это фреймворк для понимания содержимого изображения: что на нём изображено.
| Характеристика | Vision | Core Image |
|---|---|---|
| Задача | Анализ и распознавание | Фильтрация и обработка |
| Обнаружение лиц | Да, с ориентирами | Только CIDetector |
| Распознавание текста | Да (OCR) | Нет |
| Фильтры | Нет | 200+ фильтров |
| Core ML интеграция | Да (VNCoreMLRequest) | Нет |
| Трекинг объектов | Да (VNTrackObjectRequest) | Нет |
| Производительность | Оптимизирован для ANE | GPU (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 применяется в широком спектре iOS-приложений: от сканеров документов до приложений дополненной реальности. Рассмотрим три характерных сценария.
VNDetectDocumentSegmentationRequest (доступен с iOS 17+) автоматически обнаруживает границы документа на изображении, корректирует перспективу и возвращает выпрямленное изображение. В комбинации с VNRecognizeTextRequest получается полноценный OCR-сканер, способный распознавать счета, визитки и страницы книг. По данным Apple, сегментация документа занимает 3080 мс на устройстве с A15 чипом.
VNTrackObjectRequest отслеживает перемещение выбранного объекта между кадрами видеопотока в реальном времени. Разработчик указывает bounding box объекта на первом кадре, и Vision автоматически вычисляет его новое положение на последующих кадрах. Трекинг применяется в приложениях для видеоаналитики, AR-играх и системах наблюдения. Точность трекинга на A16 чипах составляет 95% при скорости движения объекта до 30 пикселей на кадр.
VNDetectRectanglesRequest находит прямоугольные области на изображении: экраны, листы бумаги, вывески, документы. API возвращает координаты углов с поправкой на перспективу. Комбинируя прямоугольники с VNDetectContoursRequest, можно выделить точный контур объекта полезно для приложений дополненной реальности и графических редакторов. VNDetectContoursRequest возвращает массив контрольных точек контура, которые можно преобразовать в UIBezierPath для отрисовки.
Часто задаваемые вопросы
iOS 11+ для базовых API, iOS 13+ для распознавания текста (VNRecognizeTextRequest), iOS 17+ для сегментации документов. Vision также доступен на macOS 10.13+ и iPadOS 13+.
Да, Vision обрабатывает видеопоток через VNSequenceRequestHandler и AVFoundation. Фреймворк поддерживает до 60 FPS на устройствах с A14+ чипами при использовании быстрых запросов.
Vision нативный фреймворк Apple с автоматической оптимизацией под ANE и GPU. OpenCV кроссплатформенная библиотека с более широкими возможностями, но требующая ручной оптимизации и без поддержки Neural Engine.
Через VNCoreMLRequest: создайте модель Core ML, инициализируйте VNCoreMLModel, передайте её в VNCoreMLRequest и запустите через VNImageRequestHandler. Xcode автоматически сгенерирует Swift-класс для модели.
Косвенно VNDetectFaceLandmarksRequest определяет положение ключевых точек лица, а VNDetectFaceExpressionsRequest (iOS 17+) оценивает улыбку и подмигивание через зажатые глаза.
Итоги
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також