Vision — framework počítačového vidění od Apple, zabudovaný do iOS, macOS a iPadOS, poskytující hotová API pro analýzu obrázků, videa a reálného času. Zahrnuje detekci obličejů, rozpoznávání textu, čárových kódů, obrysů objektů a sledování pohybu — vše na zařízení bez odesílání dat na server. Podle Apple Vision Documentation (2026) framework zpracovává až 60 snímků za sekundu na zařízeních s čipem A14 a novějším.
Hlavní body
Vision — je framework počítačového vidění na vysoké úrovni, představený Apple na WWDC 2017. Poskytuje vývojářům jednotné rozhraní pro provádění různých úloh analýzy obrázků a videa bez nutnosti ponořit se do matematiky počítačového vidění nebo optimalizace pro konkrétní neuroprocesor. Vision automaticky využívá Apple Neural Engine na zařízeních s čipy A12+.
Na rozdíl od nízkoúrovňových knihoven jako OpenCV, Vision abstrahuje složitost: vývojář vytvoří objekt VNRequest, nakonfiguruje parametry a spustí zpracování přes VNImageRequestHandler. Framework sám rozhodne, na které výpočetní jednotce úlohu provede — CPU, GPU nebo ANE — a vrátí strukturovaný výsledek. Podle Apple (WWDC 2025) se Vision používá ve 40% aplikací App Store pracujících s obrázky.
Vision zahrnuje API pro detekci obličejů a jejich orientačních bodů (až 68 bodů), rozpoznávání textu (OCR) s podporou 30+ jazyků, skenování QR a EAN čárových kódů, sledování objektů mezi snímky, detekci obdélníků a obrysů, klasifikaci obrázků přes Core ML, hodnocení pohybu a optického toku, a detekci osoby v obraze se segmentací. Každá operace je reprezentována samostatnou podtřídou VNRequest.
Vision je postaven na architektuře Request → Handler → Results, kde každý požadavek je konkrétní úkol: najdi obličeje, rozpoznej text, sleduj objekt. Podívejme se na nejžádanější API.
VNRequest — abstraktní základní třída, od které dědí všechny konkrétní požadavky Vision. Každý požadavek obsahuje completionHandler, konfigurační parametry a regionOfInterest pro zpracování části obrázku. Po vytvoření je požadavek předán VNImageRequestHandler (pro statické obrázky) nebo VNSequenceRequestHandler (pro video stream). Výsledky jsou vráceny jako pole pozorování — podtříd VNObservation.
VNDetectFaceRectanglesRequest najde všechny obličeje v obrázku a vrátí jejich rámečky. VNDetectFaceLandmarksRequest navíc určuje 68 klíčových orientačních bodů: obrys očí, obočí, nosu, rtů a čelisti. VNDetectFaceCaptureQualityRequest hodnotí kvalitu snímku obličeje — od 0 do 1 — užitečné pro biometrii. Podle Apple dosahuje přesnost detekce obličejů na zařízeních s Neural Engine 99% při frontálním úhlu.
VNRecognizeTextRequest — API pro optické rozpoznávání znaků (OCR) na obrázcích. Podporuje tištěný text v latině, cyrilici, čínštině, japonštině, korejštině a dalších jazycích. Výsledek — pole VNRecognizedTextObservation, každé obsahuje textový řetězec, bounding box a úroveň spolehlivosti. K dispozici jsou dva režimy: rychlý (Fast) pro skenování dokumentů a přesný (Accurate) pro složitá písma.
Pro použití Vision stačí importovat framework, vytvořit objekt VNRequest a předat ho VNImageRequestHandler. Podívejme se na příklad rozpoznávání textu na obrázku.
Kód vytvoří VNRecognizeTextRequest s přesným režimem rozpoznávání, spustí ho na obrázku a zobrazí rozpoznaný text v konzoli. Tento jednoduchý příklad demonstruje minimální integraci Vision do projektu Swift pomocí VNImageRequestHandler v několika řádcích kódu.
import Vision
// 1. Vytvoření požadavku na rozpoznávání textu
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. Zapnutí přesného režimu
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. Spuštění zpracování
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
Swift kód konfiguruje VNRecognizeTextRequest s přesnou úrovní rozpoznávání a zapnutou jazykovou korekcí. VNImageRequestHandler načte obrázek z URL a provede požadavek. Výsledky obsahují rozpoznané textové řetězce s bounding boxy a úrovní spolehlivosti pro každý token. Pole VNRecognizedTextObservation lze pohodlně zobrazit na obrazovce.
Pro zpracování videa v reálném čase se používá VNSequenceRequestHandler místo VNImageRequestHandler. Přijímá pole obrázků (snímků) a provádí stejný požadavek sekvenčně, přičemž uchovává stav mezi snímky — to je nezbytné pro sledování objektů. VNSequenceRequestHandler automaticky spravuje paměť: stará pozorování jsou odstraněna, když objekt opustí snímek. Výkon v reálném čase závisí na složitosti požadavku: detekce obličejů pracuje na 60 FPS, rozpoznávání textu na 15–30 FPS na zařízeních s čipem A16.
Vision a Core Image — dva frameworky Apple pro práci s obrázky, ale řeší zásadně odlišné úkoly. Core Image je framework pro filtrování a transformaci obrázků (aplikace filtrů, korekce barev, rozostření). Vision je framework pro porozumění obsahu obrázku: co je na něm zobrazeno.
| Vlastnost | Vision | Core Image |
|---|---|---|
| Úkol | Analýza a rozpoznávání | Filtrování a zpracování |
| Detekce obličejů | Ano, s orientačními body | Pouze CIDetector |
| Rozpoznávání textu | Ano (OCR) | Ne |
| Filtry | Ne | 200+ filtrů |
| Core ML integrace | Ano (VNCoreMLRequest) | Ne |
| Sledování objektů | Ano (VNTrackObjectRequest) | Ne |
| Výkon | Optimalizován pro ANE | GPU (Metal) |
Používejte Vision, když chcete porozumět tomu, co je na obrázku: obličeje, text, QR kódy, objekty. Používejte Core Image, když chcete obrázek změnit: aplikovat filtr, upravit barvy, oříznout. Často se tyto dva frameworky kombinují: nejprve Core Image zlepší kvalitu snímku, poté Vision rozpozná text na něm.
V praxi se Vision a Core Image používají společně v aplikacích pro skenování dokumentů. Core Image automaticky zvyšuje kontrast a odstraňuje stíny (CIFilter s CIPhotoEffectNoir) a Vision rozpoznává text na vylepšeném obrázku. Podle Apple (WWDC 2025) se přesnost OCR zvyšuje o 15–20% po předzpracování obrázku přes Core Image ve srovnání se surovým snímkem z kamery.
Další důležitý scénář společného použití — analýza obličeje v reálném čase pro aplikace rozšířené reality. Vision detekuje obličej a určuje 68 orientačních bodů a Core Image aplikuje filtry na detekované oblasti. ARKit používá Vision pro sledování obličeje a Core Image pro vykreslování efektů, což dává celkové zpoždění méně než 16 ms na zařízeních s čipy A15+.
Při vývoji ve SwiftUI pro integraci Vision se používá protokol Representable, který obaluje AVCaptureSession a VNImageRequestHandler do UIViewRepresentable. Kamera se zobrazuje přes PreviewView, každý snímek je předán VisionRequestHandler přes AVCaptureVideoDataOutputSampleBufferDelegate. Tento architektonický přístup zachovává reaktivitu SwiftUI a získává výsledky analýzy Vision jako @Published vlastnosti pro okamžitou aktualizaci rozhraní.
Vision se používá v širokém spektru iOS aplikací: od skenerů dokumentů po aplikace rozšířené reality. Podívejme se na tři charakteristické scénáře.
VNDetectDocumentSegmentationRequest (dostupný od iOS 17+) automaticky detekuje hranice dokumentu v obrázku, koriguje perspektivu a vrací narovnaný obrázek. V kombinaci s VNRecognizeTextRequest vzniká plnohodnotný OCR skener schopný rozpoznávat účtenky, vizitky a stránky knih. Podle Apple trvá segmentace dokumentu 30–80 ms na zařízení s čipem A15.
VNTrackObjectRequest sleduje pohyb vybraného objektu mezi snímky video streamu v reálném čase. Vývojář určí bounding box objektu na prvním snímku a Vision automaticky vypočítá jeho novou polohu na následujících snímcích. Sledování se používá v aplikacích pro videoanalytiku, AR hrách a sledovacích systémech. Přesnost sledování na čipech A16 je 95% při rychlosti pohybu objektu do 30 pixelů na snímek.
VNDetectRectanglesRequest najde obdélníkové oblasti v obrázku: obrazovky, listy papíru, cedule, dokumenty. API vrací souřadnice rohů s korekcí perspektivy. Kombinací obdélníků s VNDetectContoursRequest lze extrahovat přesný obrys objektu — užitečné pro aplikace rozšířené reality a grafické editory. VNDetectContoursRequest vrací pole řídicích bodů obrysu, které lze převést na UIBezierPath pro kreslení.
Často kladené otázky
iOS 11+ pro základní API, iOS 13+ pro rozpoznávání textu (VNRecognizeTextRequest), iOS 17+ pro segmentaci dokumentů. Vision je také dostupný na macOS 10.13+ a iPadOS 13+.
Ano, Vision zpracovává video stream přes VNSequenceRequestHandler a AVFoundation. Framework podporuje až 60 FPS na zařízeních s čipy A14+ při použití rychlých požadavků.
Vision — nativní framework Apple s automatickou optimalizací pro ANE a GPU. OpenCV — multiplatformní knihovna s širšími možnostmi, ale vyžadující ruční optimalizaci a bez podpory Neural Engine.
Přes VNCoreMLRequest: vytvořte model Core ML, inicializujte VNCoreMLModel, předejte ho VNCoreMLRequest a spusťte přes VNImageRequestHandler. Xcode automaticky vygeneruje Swift třídu pro model.
Nepřímo — VNDetectFaceLandmarksRequest určuje polohu klíčových bodů obličeje a VNDetectFaceExpressionsRequest (iOS 17+) hodnotí úsměv a mrkání přes zavřené oči.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také