Vision: vad är det, ramverk för datorseende och funktion på iOS

Författare: IT Sectr Publicerad: 2026-03-26 Lästid: 8 min

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 — Apples ramverk för datorseende på enheten med API:er för ansikts-, text- och objektdetektering
  • VNRequest — basklassen för alla operationer: detektering, klassificering, spårning och igenkänning
  • Textigenkänning stöder latin, kyrilliska, kinesiska och över 30 språk
  • Ansiktsdetektering bestämmer upp till 68 viktiga referenspunkter med känslouppskattning och huvudrotation
  • Integrering med Core ML möjliggör körning av anpassade modeller via VNCoreMLRequest

Vad är Vision?

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.

Huvudsakliga funktioner

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.

Viktiga Vision API:er

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 — grunden för alla operationer

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.

Ansikts- och konturdetektering

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.

Textigenkänning

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.

  • VNDetectFaceRectanglesRequest — sökning efter ansikten med retur av ramar
  • VNDetectFaceLandmarksRequest — 68 viktiga ansiktspunkter
  • VNRecognizeTextRequest — OCR med stöd för 30+ språk
  • VNDetectBarcodesRequest — skanning av QR, EAN, PDF417
  • VNCoreMLRequest — körning av anpassade Core ML-modeller

Integrera Vision i iOS

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.

Exempelkod i Swift

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.

swift
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 vs Core Image

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.

EgenskapVisionCore Image
UppgiftAnalys och igenkänningFiltrering och bearbetning
AnsiktsdetekteringJa, med referenspunkterEndast CIDetector
TextigenkänningJa (OCR)Nej
FilterNej200+ filter
Core ML-integreringJa (VNCoreMLRequest)Nej
Objekts spårningJa (VNTrackObjectRequest)Nej
PrestandaOptimerad för ANEGPU (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.

Exempel på Vision-användning

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.

Dokumentskanning

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.

Objekts spårning i video

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.

Kontur- och rektangeldetektering

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

Från vilka iOS-versioner är Vision tillgängligt?

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+.

Kan Vision arbeta med realtidsvideo?

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.

Vad skiljer Vision från OpenCV?

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.

Hur lägger man till en anpassad ML-modell i Vision?

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.

Stöder Vision känsloigenkänning?

Indirekt — VNDetectFaceLandmarksRequest bestämmer positionen för ansiktets nyckelpunkter, och VNDetectFaceExpressionsRequest (iOS 17+) utvärderar leende och blinkning genom slutna ögon.

Sammanfattning

  • Vision — Apples ramverk för datorseende på enheten med enhetlig arkitektur VNRequest → VNHandler → VNObservation
  • Ansiktsdetektering bestämmer upp till 68 viktiga referenspunkter med kvalitetsbedömning och huvudrotation
  • Textigenkänning (OCR) stöder 30+ språk i två lägen: snabb och noggrann
  • Streckkodsskanning fungerar med QR, EAN-13, Code 128, PDF417 och Aztec
  • Core ML-integrering via VNCoreMLRequest möjliggör körning av anpassade modeller
  • Objekts spårning mellan bildrutor i videoström fungerar i realtid upp till 60 FPS
  • Vision och Core Image kompletterar varandra: igenkänning + bildfiltrering

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.

Diskutera projektet

Läs också