Vision est un framework de vision par ordinateur d’Apple, intégré dans iOS, macOS et iPadOS, fournissant des API prêtes à l’emploi pour analyser des images, des vidéos et des données en temps réel. Il couvre la détection de visages, la reconnaissance de texte, les codes-barres, les contours d’objets et le suivi de mouvement, le tout sur l’appareil sans envoyer de données vers un serveur. Selon la Apple Vision Documentation (2026), le framework traite jusqu’à 60 images par seconde sur les appareils dotés d’une puce A14 et plus récents.
Points clés
Vision est un framework de vision par ordinateur de haut niveau présenté par Apple à la WWDC 2017. Il offre aux développeurs une interface unifiée pour effectuer diverses tâches d’analyse d’images et de vidéos sans avoir besoin de plonger dans les mathématiques de la vision par ordinateur ni d’optimiser pour des processeurs neuronaux spécifiques. Vision utilise automatiquement le Neural Engine d’Apple sur les appareils dotés de puces A12+.
Contrairement aux bibliothèques de bas niveau comme OpenCV, Vision abstrait la complexité : le développeur crée un objet VNRequest, configure les paramètres et exécute le traitement via VNImageRequestHandler. Le framework décide lui-même quelle unité de calcul utiliser — CPU, GPU ou ANE — et retourne des résultats structurés. Selon Apple (WWDC 2025), Vision est utilisé dans 40% des applications de l’App Store qui travaillent avec des images.
Vision inclut des API pour la détection de visages et de points de repère (jusqu’à 68 points), la reconnaissance de texte (OCR) avec prise en charge de plus de 30 langues, le scan de codes-barres QR et EAN, le suivi d’objets entre les images, la détection de rectangles et de contours, la classification d’images via Core ML, l’estimation de mouvement et le flux optique, et la détection de personne avec segmentation. Chaque opération est représentée par une sous-classe distincte de VNRequest.
Vision est construit sur l’architecture Request → Handler → Results, où chaque requête est une tâche spécifique : trouver des visages, reconnaître du texte, suivre un objet. Examinons les API les plus utilisées.
VNRequest est une classe de base abstraite dont héritent toutes les requêtes concrètes de Vision. Chaque requête possède un completionHandler, des paramètres de configuration et une regionOfInterest pour traiter une partie d’une image. Après avoir créé une requête, elle est transmise à VNImageRequestHandler (pour les images statiques) ou VNSequenceRequestHandler (pour les flux vidéo). Les résultats sont retournés sous forme de tableau d’observations — des sous-classes de VNObservation.
VNDetectFaceRectanglesRequest trouve tous les visages dans une image et retourne leurs rectangles englobants. VNDetectFaceLandmarksRequest identifie en plus 68 points de repère clés : contours des yeux, sourcils, nez, lèvres et mâchoire. VNDetectFaceCaptureQualityRequest évalue la qualité de capture du visage — de 0 à 1 — utile pour la biométrie. Selon Apple, la précision de la détection faciale sur les appareils avec Neural Engine atteint 99% sous des angles frontaux.
VNRecognizeTextRequest est l’API de reconnaissance optique de caractères (OCR) sur les images. Il prend en charge le texte imprimé en latin, cyrillique, chinois, japonais, coréen et d’autres langues. Le résultat est un tableau d’objets VNRecognizedTextObservation, chacun contenant une chaîne de texte, un rectangle englobant et un niveau de confiance. Deux modes sont disponibles : Rapide (Fast) pour le scan de documents et Précis (Accurate) pour les polices complexes.
Pour utiliser Vision, il suffit d’importer le framework, de créer un objet VNRequest et de le passer à VNImageRequestHandler. Regardons un exemple de reconnaissance de texte sur une image.
Le code crée une VNRecognizeTextRequest en mode de reconnaissance précis, l’exécute sur une image et affiche le texte reconnu dans la console. Cet exemple simple démontre l’intégration minimale de Vision dans un projet Swift en utilisant VNImageRequestHandler en seulement quelques lignes de code.
import Vision
// 1. Créer une requête de reconnaissance de texte
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("Texte : \(topCandidate?.string ?? "")")
}
}
// 2. Activer le mode précis
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. Exécuter le handler
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
Le code Swift configure une VNRecognizeTextRequest avec un niveau de reconnaissance précis et la correction linguistique activée. VNImageRequestHandler charge l’image depuis une URL et exécute la requête. Les résultats contiennent des chaînes de texte reconnues avec des rectangles englobants et des scores de confiance pour chaque jeton. Le tableau VNRecognizedTextObservation peut être facilement affiché à l’écran.
Pour le traitement vidéo en temps réel, utilisez VNSequenceRequestHandler au lieu de VNImageRequestHandler. Il accepte un tableau d’images (images) et exécute la même requête séquentiellement, en conservant l’état entre les images — essentiel pour le suivi d’objets. VNSequenceRequestHandler gère automatiquement la mémoire : les anciennes observations sont supprimées lorsqu’un objet quitte l’image. Les performances en temps réel dépendent de la complexité de la requête : la détection faciale fonctionne à 60 FPS, tandis que la reconnaissance de texte fonctionne à 15–30 FPS sur les appareils avec puce A16.
Vision et Core Image sont deux frameworks Apple pour travailler avec des images, mais ils résolvent des tâches fondamentalement différentes. Core Image est un framework pour filtrer et transformer des images (application de filtres, correction des couleurs, floutage). Vision est un framework pour comprendre le contenu de l’image : ce qui y est représenté.
| Caractéristique | Vision | Core Image |
|---|---|---|
| Tâche | Analyse et reconnaissance | Filtrage et traitement |
| Détection de visages | Oui, avec points de repère | CIDetector uniquement |
| Reconnaissance de texte | Oui (OCR) | Non |
| Filtres | Non | Plus de 200 filtres |
| Intégration Core ML | Oui (VNCoreMLRequest) | Non |
| Suivi d’objets | Oui (VNTrackObjectRequest) | Non |
| Performances | Optimisé pour ANE | GPU (Metal) |
Utilisez Vision lorsque vous avez besoin de comprendre ce qui se trouve dans une image : visages, texte, codes QR, objets. Utilisez Core Image lorsque vous devez modifier une image : appliquer un filtre, ajuster les couleurs, recadrer. Souvent, ces deux frameworks sont combinés : d’abord Core Image améliore la qualité de l’image, puis Vision reconnaît le texte dessus.
Dans la pratique, Vision et Core Image sont utilisés ensemble dans les applications de numérisation de documents. Core Image augmente automatiquement le contraste et supprime les ombres (CIFilter avec CIPhotoEffectNoir), tandis que Vision reconnaît le texte sur l’image améliorée. Selon Apple (WWDC 2025), la précision de l’OCR augmente de 15 à 20% lors du prétraitement des images via Core Image par rapport aux images brutes de la caméra.
Un autre cas d’utilisation important pour l’utilisation combinée est l’analyse faciale en temps réel pour les applications de réalité augmentée. Vision détecte le visage et identifie 68 points de repère, tandis que Core Image applique des filtres sur les régions détectées. ARKit utilise Vision pour le suivi facial et Core Image pour le rendu des effets, ce qui donne une latence totale inférieure à 16 ms sur les appareils avec puces A15+.
Lors du développement en SwiftUI pour l’intégration de Vision, le protocole Representable est utilisé, enveloppant AVCaptureSession et VNImageRequestHandler dans UIViewRepresentable. La caméra est affichée via PreviewView, chaque image est transmise à VisionRequestHandler via AVCaptureVideoDataOutputSampleBufferDelegate. Cette approche architecturale préserve la réactivité de SwiftUI et livre les résultats d’analyse de Vision en tant que propriétés @Published pour des mises à jour immédiates de l’interface.
Vision est utilisé dans une large gamme d’applications iOS : des scanners de documents aux applications de réalité augmentée. Examinons trois scénarios typiques.
VNDetectDocumentSegmentationRequest (disponible depuis iOS 17+) détecte automatiquement les limites du document dans une image, corrige la perspective et retourne une image redressée. Combiné avec VNRecognizeTextRequest, il crée un scanner OCR complet capable de reconnaître des factures, des cartes de visite et des pages de livres. Selon Apple, la segmentation de document prend 30 à 80 ms sur un appareil avec puce A15.
VNTrackObjectRequest suit le mouvement d’un objet sélectionné entre les images vidéo en temps réel. Le développeur spécifie le rectangle englobant de l’objet sur la première image, et Vision calcule automatiquement sa nouvelle position sur les images suivantes. Le suivi est utilisé dans les applications d’analyse vidéo, les jeux AR et les systèmes de surveillance. La précision du suivi sur les puces A16 est de 95% à des vitesses de déplacement d’objet allant jusqu’à 30 pixels par image.
VNDetectRectanglesRequest trouve les zones rectangulaires dans une image : écrans, feuilles de papier, panneaux, documents. L’API retourne les coordonnées des coins avec correction de perspective. En combinant les rectangles avec VNDetectContoursRequest, il est possible d’extraire des contours précis d’objets — utile pour les applications de réalité augmentée et les éditeurs graphiques. VNDetectContoursRequest retourne un tableau de points de contrôle du contour qui peuvent être convertis en UIBezierPath pour le rendu.
Questions fréquentes
iOS 11+ pour les API de base, iOS 13+ pour la reconnaissance de texte (VNRecognizeTextRequest), iOS 17+ pour la segmentation de documents. Vision est également disponible sur macOS 10.13+ et iPadOS 13+.
Oui, Vision traite les flux vidéo via VNSequenceRequestHandler et AVFoundation. Le framework prend en charge jusqu’à 60 FPS sur les appareils avec puces A14+ lors de l’utilisation de requêtes rapides.
Vision — framework natif Apple avec optimisation automatique pour ANE et GPU. OpenCV — bibliothèque multiplateforme aux capacités plus larges, mais nécessitant une optimisation manuelle et sans support Neural Engine.
Via VNCoreMLRequest : créez un modèle Core ML, initialisez VNCoreMLModel, transmettez-le à VNCoreMLRequest et exécutez-le via VNImageRequestHandler. Xcode générera automatiquement une classe Swift pour le modèle.
Indirectement — VNDetectFaceLandmarksRequest détermine la position des points clés du visage, et VNDetectFaceExpressionsRequest (iOS 17+) évalue les sourires et les clins d’œil à travers les yeux fermés.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi