Vision — ett datorseenderamverk från Apple, inbyggt i iOS, macOS och iPadOS som tillhandahåller färdiga API:er för analys av bilder, video och realtid. Det täcker ansiktsdetektering, textigenkänning, streckkoder, objektkonturer och rörelsespårning — allt på enheten utan att skicka data till en server. Enligt Apple Vision Documentation (2026) bearbetar ramverket upp till 60 bildrutor per sekund på enheter med A14-chip och nyare.
Huvudpunkter
Vision — är ett högnivåramverk för datorseende, introducerat av Apple på WWDC 2017. Det ger utvecklare ett enhetligt gränssnitt för att utföra olika bild- och videoanalysuppgifter utan att behöva dyka ner i matematiken bakom datorseende eller optimering för en specifik neuroprocessor. Vision använder automatiskt Apple Neural Engine på enheter med A12+ chips.
Till skillnad från lågnivåbibliotek som OpenCV, Vision abstraherar komplexiteten: utvecklaren skapar ett VNRequest-objekt, konfigurerar parametrar och startar bearbetning via VNImageRequestHandler. Ramverket bestämmer själv på vilken beräkningsenhet uppgiften ska utföras — CPU, GPU eller ANE — och returnerar ett strukturerat resultat. Enligt Apple (WWDC 2025) används Vision i 40% av App Store-applikationer som arbetar med bilder.
Vision innehåller API:er för detektering av ansikten och deras referenspunkter (upp till 68 punkter), textigenkänning (OCR) med stöd för 30+ språk, skanning av QR- och EAN-streckkoder, spårning av objekt mellan bildrutor, detektering av rektanglar och konturer, bildklassificering via Core ML, rörelse- och optisk flödesuppskattning, samt detektering av personer i bild med segmentering. Varje operation representeras av en separat underklass av VNRequest.
Vision är byggt på arkitekturen Request → Handler → Results, där varje begäran är en specifik uppgift: hitta ansikten, känna igen text, spåra objekt. Låt oss titta på de mest efterfrågade API:erna.
VNRequest — en abstrakt basklass som alla specifika Vision-begäranden ärver från. Varje begäran innehåller completionHandler, konfigurationsparametrar och regionOfInterest för bearbetning av en del av bilden. Efter skapandet skickas begäran till VNImageRequestHandler (för statiska bilder) eller VNSequenceRequestHandler (för videoström). Resultaten returneras som en array av observationer — underklasser av VNObservation.
VNDetectFaceRectanglesRequest hittar alla ansikten i en bild och returnerar deras ramar. VNDetectFaceLandmarksRequest bestämmer ytterligare 68 viktiga referenspunkter: konturerna av ögon, ögonbryn, näsa, läppar och käke. VNDetectFaceCaptureQualityRequest utvärderar kvaliteten på en ansiktsbild — från 0 till 1 — användbart för biometri. Enligt Apple når ansiktsdetekteringsnoggrannheten på enheter med Neural Engine 99% vid frontal vinkel.
VNRecognizeTextRequest — API för optisk teckenigenkänning (OCR) på bilder. Stöder tryckt text på latin, kyrilliska, kinesiska, japanska, koreanska och andra språk. Resultat — en array av VNRecognizedTextObservation, var och en innehåller en textsträng, bounding box och förtroendenivå. Två lägen finns tillgängliga: snabb (Fast) för dokumentskanning och noggrann (Accurate) för komplexa typsnitt.
För att använda Vision räcker det att importera ramverket, skapa ett VNRequest-objekt och skicka det till VNImageRequestHandler. Låt oss titta på ett exempel på textigenkänning på en bild.
Koden skapar en VNRecognizeTextRequest med noggrant igenkänningsläge, kör den på bilden och visar den igenkända texten i konsolen. Detta enkla exempel demonstrerar minimal integrering av Vision i ett Swift-projekt med VNImageRequestHandler i några rader kod.
import Vision
// 1. Skapa begäran om textigenkänning
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. Aktivera noggrant läge
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. Starta bearbetning
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
Swift-koden konfigurerar VNRecognizeTextRequest med noggrann igenkänningsnivå och aktiverad språkkorrigering. VNImageRequestHandler laddar bilden från URL och utför begäran. Resultaten innehåller igenkända textsträngar med bounding boxes och förtroendenivå för varje token. Arrayen VNRecognizedTextObservation kan enkelt visas på skärmen.
För realtidsvideobearbetning används VNSequenceRequestHandler istället för VNImageRequestHandler. Den tar emot en array av bilder (bildrutor) och utför samma begäran sekventiellt, med bibehållen status mellan bildrutor — detta är nödvändigt för objekts spårning. VNSequenceRequestHandler hanterar automatiskt minnet: gamla observationer tas bort när objektet lämnar bildrutan. Realtidsprestanda beror på begärans komplexitet: ansiktsdetektering fungerar på 60 FPS, medan textigenkänning fungerar på 15–30 FPS på enheter med A16-chip.
Vision och Core Image — två Apple-ramverk för att arbeta med bilder, men de löser fundamentalt olika uppgifter. Core Image är ett ramverk för filtrering och transformering av bilder (applicering av filter, färgkorrigering, oskärpa). Vision är ett ramverk för att förstå innehållet i en bild: vad som visas på den.
| Egenskap | Vision | Core Image |
|---|---|---|
| Uppgift | Analys och igenkänning | Filtrering och bearbetning |
| Ansiktsdetektering | Ja, med referenspunkter | Endast CIDetector |
| Textigenkänning | Ja (OCR) | Nej |
| Filter | Nej | 200+ filter |
| Core ML-integrering | Ja (VNCoreMLRequest) | Nej |
| Objekts spårning | Ja (VNTrackObjectRequest) | Nej |
| Prestanda | Optimerad för ANE | GPU (Metal) |
Använd Vision när du vill förstå vad som finns i bilden: ansikten, text, QR-koder, objekt. Använd Core Image när du vill ändra bilden: applicera ett filter, justera färger, beskära. Ofta kombineras dessa två ramverk: först förbättrar Core Image bildkvaliteten, sedan känner Vision igen texten på den.
I praktiken används Vision och Core Image tillsammans i dokumentskanningsapplikationer. Core Image ökar automatiskt kontrasten och tar bort skuggor (CIFilter med CIPhotoEffectNoir), och Vision känner igen text på den förbättrade bilden. Enligt Apple (WWDC 2025) ökar OCR-noggrannheten med 15–20% efter förbearbetning av bilden genom Core Image jämfört med en rå bildruta från kameran.
Ett annat viktigt scenario för gemensam användning — realtidsansiktsanalys för förstärkt verklighet-applikationer. Vision detekterar ansiktet och bestämmer 68 referenspunkter, och Core Image applicerar filter på de detekterade områdena. ARKit använder Vision för ansiktsspårning och Core Image för rendering av effekter, vilket ger en total fördröjning på mindre än 16 ms på enheter med A15+ chips.
Vid utveckling i SwiftUI för Vision-integrering används Representable-protokollet, som omsluter AVCaptureSession och VNImageRequestHandler i UIViewRepresentable. Kameran visas via PreviewView, varje bildruta skickas till VisionRequestHandler via AVCaptureVideoDataOutputSampleBufferDelegate. Detta arkitektoniska tillvägagångssätt bevarar SwiftUI:s reaktivitet och erhåller Vision-analysresultat som @Published-egenskaper för omedelbar uppdatering av gränssnittet.
Vision används i ett brett spektrum av iOS-applikationer: från dokumentskannrar till förstärkt verklighet-applikationer. Låt oss titta på tre karakteristiska scenarier.
VNDetectDocumentSegmentationRequest (tillgänglig från iOS 17+) detekterar automatiskt dokumentets gränser i bilden, korrigerar perspektiv och returnerar en rätad bild. I kombination med VNRecognizeTextRequest får du en fullfjädrad OCR-skanner som kan känna igen kvitton, visitkort och boksidor. Enligt Apple tar dokumentsegmentering 30–80 ms på en enhet med A15-chip.
VNTrackObjectRequest spårar förflyttningen av ett valt objekt mellan bildrutor i en videoström i realtid. Utvecklaren anger objektets bounding box på den första bildrutan, och Vision beräknar automatiskt dess nya position på efterföljande bildrutor. Spårning används i videoanalytikapplikationer, AR-spel och övervakningssystem. Spårningsnoggrannheten på A16-chips är 95% vid objektets rörelsehastighet upp till 30 pixlar per bildruta.
VNDetectRectanglesRequest hittar rektangulära områden i bilden: skärmar, pappersark, skyltar, dokument. API:et returnerar hörnkoordinater med perspektivkorrigering. Genom att kombinera rektanglar med VNDetectContoursRequest kan den exakta konturen av ett objekt extraheras — användbart för förstärkt verklighet-applikationer och grafiska redigerare. VNDetectContoursRequest returnerar en array av kontrollpunkter för konturen som kan omvandlas till UIBezierPath för ritning.
Vanliga frågor
iOS 11+ för grundläggande API:er, iOS 13+ för textigenkänning (VNRecognizeTextRequest), iOS 17+ för dokumentsegmentering. Vision finns även på macOS 10.13+ och iPadOS 13+.
Ja, Vision bearbetar videoström via VNSequenceRequestHandler och AVFoundation. Ramverket stöder upp till 60 FPS på enheter med A14+ chips vid användning av snabba begäranden.
Vision — native Apple-ramverk med automatisk optimering för ANE och GPU. OpenCV — ett plattformsoberoende bibliotek med bredare möjligheter, men kräver manuell optimering och har inget stöd för Neural Engine.
Via VNCoreMLRequest: skapa en Core ML-modell, initiera VNCoreMLModel, skicka den till VNCoreMLRequest och kör via VNImageRequestHandler. Xcode genererar automatiskt en Swift-klass för modellen.
Indirekt — VNDetectFaceLandmarksRequest bestämmer positionen för ansiktets nyckelpunkter, och VNDetectFaceExpressionsRequest (iOS 17+) utvärderar leende och blinkning genom slutna ögon.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också