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% при фронтален ъгъл.
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 и ниво на увереност за всеки токен. Масивът VNRecognizedTextObservation може удобно да се покаже на екрана.
За обработка на видео в реално време се използва VNSequenceRequestHandler вместо VNImageRequestHandler. Той приема масив от изображения (кадри) и изпълнява същата заявка последователно, запазвайки състоянието между кадрите — това е необходимо за проследяване на обекти. VNSequenceRequestHandler автоматично управлява паметта: старите наблюдения се изтриват, когато обектът напусне кадъра. Производителността в реално време зависи от сложността на заявката: откриването на лица работи на 60 FPS, а разпознаването на текст — на 15–30 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 се увеличава с 15–20% след предварителна обработка на изображението чрез Core Image в сравнение с необработен кадър от камерата.
Друг важен сценарий на съвместно използване — анализ на лице в реално време за приложения с добавена реалност. Vision открива лицето и определя 68 ориентира, а Core Image прилага филтри върху откритите области. ARKit използва Vision за проследяване на лице и Core Image за рендериране на ефекти, което дава общо закъснение под 16 ms на устройства с чипове A15+.
При разработка в SwiftUI за интегриране на Vision се използва протоколът Representable, който обвива AVCaptureSession и VNImageRequestHandler в UIViewRepresentable. Камерата се показва чрез PreviewView, всеки кадър се предава на VisionRequestHandler чрез AVCaptureVideoDataOutputSampleBufferDelegate. Този архитектурен подход запазва реактивността на SwiftUI и получава резултатите от Vision анализа като @Published свойства за незабавно обновяване на интерфейса.
Vision се използва в широк спектър от iOS приложения: от скенери за документи до приложения с добавена реалност. Нека разгледаме три характерни сценария.
VNDetectDocumentSegmentationRequest (достъпен от iOS 17+) автоматично открива границите на документа в изображението, коригира перспективата и връща изправено изображение. В комбинация с VNRecognizeTextRequest се получава пълноценен OCR скенер, способен да разпознава касови бележки, визитки и страници от книги. Според Apple, сегментацията на документ отнема 30–80 ms на устройство с чип 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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също