Vision: какво е, рамка за компютърно зрение и работа в iOS

Автор: IT Sectr Публикувано: 2026-03-26 Време за четене: 8 мин

Vision — рамка за компютърно зрение на Apple, вградена в iOS, macOS и iPadOS, предоставяща готови API за анализ на изображения, видео и реално време. Тя обхваща откриване на лица, разпознаване на текст, баркодове, контури на обекти и проследяване на движение — всичко на устройството без изпращане на данни към сървър. Според Apple Vision Documentation (2026), рамката обработва до 60 кадъра в секунда на устройства с чип A14 и по-нови.

Основни точки

  • Vision — рамка на Apple за компютърно зрение на устройството с 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% при фронтален ъгъл.

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

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 и ниво на увереност за всеки токен. Масивът VNRecognizedTextObservation може удобно да се покаже на екрана.

За обработка на видео в реално време се използва VNSequenceRequestHandler вместо VNImageRequestHandler. Той приема масив от изображения (кадри) и изпълнява същата заявка последователно, запазвайки състоянието между кадрите — това е необходимо за проследяване на обекти. VNSequenceRequestHandler автоматично управлява паметта: старите наблюдения се изтриват, когато обектът напусне кадъра. Производителността в реално време зависи от сложността на заявката: откриването на лица работи на 60 FPS, а разпознаването на текст — на 15–30 FPS на устройства с чип A16.

Vision срещу 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 ms на устройства с чипове A15+.

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

Примери за използване на Vision

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 е достъпен 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 за компютърно зрение на устройството с унифицирана архитектура 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също