Vision: ein Computer-Vision-Framework für iOS

Autor: IT Sectr Veröffentlicht: 2026-07-19 Lesezeit: 9 Min.

Vision ist ein Computer-Vision-Framework von Apple, das erstmals 2017 mit iOS 11 vorgestellt wurde. Vision bietet fertige Algorithmen zur Gesichtserkennung, Texterkennung (OCR), Barcode-Erkennung, Objektverfolgung, Bildklassifizierung und Konturanalyse — alles wird auf dem Gerät mit dem Neural Engine ausgeführt. Laut Apple WWDC 2023 wird Vision in der Standard-Fotos-App zur Gesichtserkennung und in der Kamera-App zur Echtzeit-Texterkennung auf iPhone und iPad eingesetzt.

Wichtige Punkte

  • Vision ist Apples On-Device-Computer-Vision-Framework mit vollständigem Analysezyklus auf dem Gerät.
  • Unterstützt Gesichtserkennung, Texterkennung (OCR), Barcodes, Klassifizierung und Objektverfolgung.
  • Funktioniert über den einheitlichen VNRequest-Mechanismus — Anfragen an ein Bild oder einen Videostream.
  • Integriert sich mit Core ML für benutzerdefinierte Modelle über VNCoreMLRequest.
  • Das Framework ist für Neural Engine auf A12+-Chips für Echtzeitleistung optimiert.

Was ist Vision in iOS?

Vision ist ein hochmodernes Computer-Vision-Framework, das komplexe Machine-Learning-Algorithmen hinter einer einfachen Request-API (VNRequest) verbirgt. Der Entwickler muss keine Convolutional Neural Networks verstehen — einfach den passenden Anfragetyp erstellen, ein Bild übergeben und das Ergebnis erhalten.

Die Architektur von Vision folgt dem Prinzip Request → Handler → Result: VNImageRequestHandler nimmt ein Bild entgegen, führt VNRequest aus und gibt ein Array von VNObservation mit Ergebnissen zurück. Dies ermöglicht die Kombination mehrerer Anfragen an ein einzelnes Bild — zum Beispiel die gleichzeitige Erkennung von Gesichtern und Text in einem Foto.

Vision unterstützt iOS 11+ und macOS 10.13+. Für die Hardwarebeschleunigung über Neural Engine wird ein A12 Bionic-Chip oder neuer benötigt. Auf Geräten mit A17 Pro und der M-Serie verarbeitet Vision bis zu 60 Bilder pro Sekunde für Streaming-Video.

Hauptvorteil von Vision ist die vollständige Privatsphäre: Alle Berechnungen werden auf dem Gerät durchgeführt, Bilder werden nie an einen Server gesendet. Dies ermöglicht den Einsatz des Frameworks in Anwendungen, die mit sensiblen Daten arbeiten, wie medizinischen oder Banken-Apps.

Gesichtserkennung und -identifikation

VNDetectFaceRectanglesRequest ist die grundlegende Vision-Anfrage zur Erkennung von Gesichtern in einem Bild. Sie gibt die Koordinaten der Rechtecke zurück, die jedes Gesicht umschließen, ohne eine bestimmte Person zu identifizieren.

Für eine detailliertere Analyse verwenden Sie VNDetectFaceLandmarksRequest, das die wichtigsten Gesichtspunkte identifiziert: Augen, Augenbrauen, Nase, Mund, Kieferkontur. Diese Daten werden zum Auflegen von Masken, Animieren von Emojis und für Echtzeit-Filter (wie in FaceTime und Snapchat) verwendet.

swift
import Vision
import UIKit

guard let image = UIImage(named: "photo") else { return }
let request = VNDetectFaceRectanglesRequest()
let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])

try handler.perform([request])
for observation in request.results ?? [] {
    let bbox = observation.boundingBox
    print("Face at x=\\(bbox.origin.x), y=\\(bbox.origin.y)")
}

VNFaceObservation enthält nicht nur boundingBox, sondern auch confidence (Vertrauen von 0 bis 1) und landmarks — ein Array von Gesichtspunkten, wenn die Anfrage VNDetectFaceLandmarksRequest war. Ein Confidence-Wert unter 0,5 deutet in der Regel auf einen False Positive hin — solche Ergebnisse sollten verworfen werden.

Vision unterstützt auch VNDetectFaceCaptureQualityRequest, das die Qualität des Gesichtsbildes bewertet: Beleuchtung, Schärfe, Drehwinkel. Dies ist nützlich für die Auswahl des besten Bildes bei der Benutzerregistrierung oder zum Erstellen eines Avatars.

Texterkennung (OCR) mit Vision

VNRecognizeTextRequest ist Apples integrierte OCR-Engine, die mit iOS 13 eingeführt wurde. Sie erkennt gedruckten Text in Bildern mit Unterstützung für 13 Sprachen: Englisch, Russisch, Chinesisch, Japanisch, Koreanisch, Italienisch, Deutsch, Spanisch, Portugiesisch, Französisch, Arabisch, Vietnamesisch und Thai.

VNRecognizeTextRequest unterstützt zwei Genauigkeitsstufen: .fast (schnell, für einfachen Text auf kontrastreichem Hintergrund) und .accurate (präzise, für komplexe Szenen mit verschiedenen Schriftarten und Winkeln). .fast ist 3–5 Mal schneller, verarbeitet handschriftlichen Text und nicht standardmäßige Schriftarten jedoch weniger effektiv.

swift
import Vision

let textRequest = VNRecognizeTextRequest { request, _ in
    guard let observations = request.results as? [VNRecognizedTextObservation]
    else { return }
    for observation in observations {
        let topCandidate = observation.topCandidates(1).first
        print(topCandidate?.string ?? "")
    }
}
textRequest.recognitionLevel = .accurate
textRequest.usesLanguageCorrection = true

Die Eigenschaft usesLanguageCorrection aktiviert die Korrektur des erkannten Textes mithilfe eines Sprachmodells. Dies verbessert die englische Genauigkeit um 10–15%, erhöht jedoch die Verarbeitungszeit. Die russische Sprachkorrektur ist ebenfalls verfügbar, wenn die entsprechende Erkennung angegeben wird.

Laut Apple ML Research 2022 erreicht VNRecognizeTextRequest auf .accurate-Niveau eine Genauigkeit von 96% für klare Dokumentenfotos auf Englisch und etwa 88% für Russisch. Bei Text auf Verpackungen, Schildern und Bildschirmen sinkt die Genauigkeit auf 75–85%.

ErkennungsstufeGeschwindigkeitGenauigkeit (Englisch)Russisch-Unterstützung
.fast0,1–0,3 s~85%Ja
.accurate0,3–1,0 s~96%Ja

Barcode- und QR-Code-Erkennung

VNDetectBarcodesRequest — eine Vision-Anfrage zum Erkennen und Dekodieren von Barcodes und QR-Codes in Bildern. Alle wichtigen Formate werden unterstützt: EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, PDF417, Aztec und QR.

Im Gegensatz zu AVFoundation (AVCaptureMetadataOutput) arbeitet Vision nicht nur mit Videostreams, sondern auch mit Standbildern — dies ermöglicht das Scannen von Codes aus vorhandenen Fotos oder Screenshots. Vision bestimmt auch den boundingBox des Codes mit Pixelgenauigkeit, was sich zum Animieren eines Rahmens um den erkannten Code eignet.

swift
import Vision

let barcodeRequest = VNDetectBarcodesRequest { request, _ in
    guard let observations = request.results as? [VNBarcodeObservation]
    else { return }
    for observation in observations {
        let payload = observation.payloadStringValue ?? ""
        print("Barcode: \\(payload), Symbology: \\(observation.symbology.rawValue)"
    }
}

VNBarcodeObservation enthält payloadStringValue (dekodierter Inhalt), symbology (Code-Typ) und confidence. Bei QR-Codes kann der Inhalt eine URL, Text oder JSON sein. Bei EAN/UPC wird ein numerischer Produktcode zurückgegeben, der zum Nachschlagen des Artikels in einer Datenbank verwendet werden kann.

Vision kann mehrere Barcodes in einem einzigen Bild verarbeiten — das observations-Array enthält ein Objekt für jeden erkannten Code. Dies ist nützlich zum Scannen von Produktchargen oder Dokumenten mit mehreren Barcodes.

Objektverfolgung im Videostream

VNDetectObjectAtPointRequest und VNSequenceRequestHandler — Vision-Werkzeuge zur Verfolgung von Objekten in einem Videostream. Ersteres identifiziert ein Objekt anhand des Berührungspunkts des Benutzers, Letzteres verfolgt ein Objekt zwischen Videoframes.

VNSequenceRequestHandler nimmt eine Bildsequenz (Videoframes) entgegen und gibt die aktualisierte Position des verfolgten Objekts für jeden Frame zurück. Dies wird in Augmented-Reality-Apps, Videobearbeitungsprogrammen und Überwachungssystemen verwendet.

swift
import Vision

let trackingRequest = VNTrackObjectRequest(detectedObjectObservation: initialObservation)
let sequenceHandler = VNSequenceRequestHandler()

for frame in videoFrames {
    try sequenceHandler.perform([trackingRequest],
        on: frame.cgImage!)
    let newBBox = trackingRequest.results?.first?.boundingBox
    // Objektposition auf dem Bildschirm aktualisieren
}

VNTrackObjectRequest verwendet einen auf optischem Fluss basierenden Tracking-Algorithmus — er trainiert den Detektor nicht bei jedem Frame neu, sondern berechnet die Verschiebung des Objekts relativ zu seiner vorherigen Position. Dies ermöglicht Echtzeitleistung auch auf Geräten ohne Neural Engine.

Einschränkung: Das Tracking kann das Objekt bei schnellen Bewegungen, Verdeckungen oder plötzlichen Lichtwechseln verlieren. Apple empfiehlt, die Erkennung (VNDetectObjectAtPointRequest) alle 10–15 Frames zur Tracking-Korrektur neu zu starten.

Bildklassifizierung und Konturanalyse

VNClassifyImageRequest ist das integrierte Vision-Modell zur Bildklassifizierung in 1.000 Kategorien (ResNet-50-Modell, trainiert auf ImageNet). Die Anfrage gibt ein Array von VNClassificationObservation mit dem Kategorienamen und der Konfidenz zurück.

VNDetectContoursRequest führt eine Bildkonturanalyse durch — extrahiert Objektgrenzen, nützlich für Segmentierung, Konturierung und Vorverarbeitung vor der Erkennung. Die Anfrage gibt ein Array von Punkten zurück, die jede Kontur im Bild beschreiben.

swift
import Vision

// Bildklassifizierung
let classificationRequest = VNClassifyImageRequest { request, _ in
    guard let results = request.results as? [VNClassificationObservation]
    else { return }
    let topMatch = results.prefix(3).filter { $0.confidence > 0.3 }
    for match in topMatch {
        print("\\(match.identifier): \\(match.confidence)"
    }
}

VNClassifyImageRequest funktioniert gut für allgemeine Kategorien (Katze, Hund, Auto, Essen), ist aber nicht für spezifische Objekte geeignet — dafür müssen Sie ein benutzerdefiniertes Core ML-Modell trainieren und VNCoreMLRequest verwenden. Apples Modell ist für mobile Geräte optimiert und benötigt nur 5 MB.

VNDetectContoursRequest gibt Konturen als Array von Punkten mit dem Konturtyp (außen, innen, Loch) zurück. Diese Anfrage wird zur Bildvorverarbeitung vor OCR (Verbesserung des Textkontrasts), zum Zeichnen von Effekten (Objektkonturierung) und zur Formanalyse verwendet.

Vision-AnfrageZweckiOS-Version
VNDetectFaceRectanglesRequestGesichtserkennung in BilderniOS 11
VNRecognizeTextRequestTexterkennung (OCR)iOS 13
VNDetectBarcodesRequestBarcode- und QR-ErkennungiOS 11
VNClassifyImageRequestBildklassifizierungiOS 13
VNDetectContoursRequestKonturanalyseiOS 14
VNTrackObjectRequestObjektverfolgungiOS 11

Häufig gestellte Fragen

Was ist der Unterschied zwischen Vision und Core ML für Computer Vision?

Vision bietet fertige Algorithmen (Gesichtserkennung, OCR, Barcodes) ohne Modelltraining. Core ML ist die Engine zur Ausführung benutzerdefinierter Modelle. Vision + VNCoreMLRequest ermöglichen die Ausführung von Core ML-Modellen in der Vision-Pipeline und bieten das Beste aus beiden Welten: fertige Vision-Detektoren + benutzerdefinierte Core ML-Klassifizierung.

Arbeitet Vision in Echtzeit auf Video?

Ja, Vision unterstützt die Echtzeit-Videostream-Verarbeitung über VNSequenceRequestHandler zum Tracking und über AVCaptureVideoDataOutput zur frame-weisen Verarbeitung. Auf Geräten mit A12+ und Neural Engine verarbeitet Vision bis zu 60 fps für die Gesichtserkennung. Für aufwändige Aufgaben (OCR, Klassifizierung) wird empfohlen, jeden 5–10. Frame zu verarbeiten.

Welche Sprachen unterstützt VNRecognizeTextRequest?

VNRecognizeTextRequest unterstützt 13 Sprachen: Englisch, Russisch, Chinesisch (vereinfacht und traditionell), Japanisch, Koreanisch, Italienisch, Deutsch, Spanisch, Portugiesisch, Französisch, Arabisch, Vietnamesisch und Thai. Zur Erkennung mehrerer Sprachen in einem einzelnen Bild geben Sie ein Array in der Eigenschaft recognitionLanguages an.

Kann Vision mit einem Core ML-Modell verwendet werden?

Ja, über VNCoreMLRequest. Sie erstellen ein Core ML-Modell, das in VNCoreMLModel eingewickelt ist, und übergeben es an VNCoreMLRequest. Vision übernimmt automatisch die Bildvorverarbeitung (Skalierung, Zuschneiden) und speist sie in das Core ML-Modell ein. Das Ergebnis wird als VNCoreMLFeatureValueObservation mit den Ausgabedaten des Modells zurückgegeben.

Sendet Vision Bilder an Apples Server?

Nein, Vision führt alle Analysen vollständig auf dem Gerät durch. Bilder verlassen niemals das Gerät des Benutzers. Dies ist Apples grundlegende Architektur: Alle ML-Frameworks (Vision, NaturalLanguage, Core ML, Speech) arbeiten auf dem Gerät, um die Privatsphäre zu gewährleisten. Es werden keine Daten an Apples Server gesendet.

Zusammenfassung

  • Vision — Apples On-Device-Computer-Vision-Framework mit VNRequest-basierter API, verfügbar seit iOS 11 auf allen Apple-Geräten.
  • VNDetectFaceRectanglesRequest und VNDetectFaceLandmarksRequest erkennen Gesichter und Schlüsselpunkte für Filter, Masken und Animationen.
  • VNRecognizeTextRequest — integrierte OCR für 13 Sprachen mit .fast- und .accurate-Stufen, bis zu 96% Genauigkeit bei Dokumenten.
  • VNDetectBarcodesRequest dekodiert alle gängigen Barcode- und QR-Code-Formate sowohl in Fotos als auch in Videostreams.
  • VNTrackObjectRequest verfolgt Objekte zwischen Videoframes über optischen Fluss, ohne den Detektor neu zu trainieren.
  • Core ML-Integration über VNCoreMLRequest ermöglicht die Ausführung benutzerdefinierter Klassifizierungs- und Erkennungsmodelle innerhalb der Vision-Pipeline.
  • Alle Berechnungen werden auf dem Gerät mit Neural Engine durchgeführt — keine Bildübertragung an Server und vollständiger Datenschutz.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch