Vision — πλαίσιο υπολογιστικής όρασης από την Apple, ενσωματωμένο σε iOS, macOS και iPadOS, που παρέχει έτοιμα API για ανάλυση εικόνων, βίντεο και πραγματικού χρόνου. Καλύπτει ανίχνευση προσώπων, αναγνώριση κειμένου, γραμμωτών κωδικών, περιγραμμάτων αντικειμένων και παρακολούθηση κίνησης — όλα στη συσκευή χωρίς αποστολή δεδομένων σε διακομιστή. Σύμφωνα με το Apple Vision Documentation (2026), το πλαίσιο επεξεργάζεται έως 60 καρέ ανά δευτερόλεπτο σε συσκευές με τσιπ A14 και νεότερο.
Κύρια σημεία
Vision — είναι ένα υψηλού επιπέδου πλαίσιο υπολογιστικής όρασης, που παρουσιάστηκε από την Apple στο WWDC 2017. Παρέχει στους προγραμματιστές μια ενοποιημένη διεπαφή για την εκτέλεση διαφόρων εργασιών ανάλυσης εικόνων και βίντεο χωρίς την ανάγκη εμβάθυνσης στα μαθηματικά της υπολογιστικής όρασης ή βελτιστοποίησης για συγκεκριμένο νευροεπεξεργαστή. Το Vision χρησιμοποιεί αυτόματα το Apple Neural Engine σε συσκευές με τσιπ A12+.
Σε αντίθεση με βιβλιοθήκες χαμηλού επιπέδου όπως το OpenCV, το Vision αφαιρεί την πολυπλοκότητα: ο προγραμματιστής δημιουργεί ένα αντικείμενο VNRequest, ρυθμίζει τις παραμέτρους και εκκινεί την επεξεργασία μέσω VNImageRequestHandler. Το πλαίσιο αποφασίζει μόνο του σε ποια μονάδα υπολογισμού θα εκτελέσει την εργασία — CPU, GPU ή ANE — και επιστρέφει ένα δομημένο αποτέλεσμα. Σύμφωνα με την Apple (WWDC 2025), το Vision χρησιμοποιείται στο 40% των εφαρμογών App Store που εργάζονται με εικόνες.
Vision περιλαμβάνει API για ανίχνευση προσώπων και των σημείων αναφοράς τους (έως 68 σημεία), αναγνώριση κειμένου (OCR) με υποστήριξη 30+ γλωσσών, σάρωση γραμμωτών κωδικών QR και EAN, παρακολούθηση αντικειμένων μεταξύ καρέ, ανίχνευση ορθογωνίων και περιγραμμάτων, ταξινόμηση εικόνων μέσω Core ML, αξιολόγηση κίνησης και οπτικής ροής, καθώς και ανίχνευση ατόμου στην εικόνα με τμηματοποίηση. Κάθε λειτουργία αντιπροσωπεύεται από μια ξεχωριστή υποκλάση του VNRequest.
Vision είναι χτισμένο στην αρχιτεκτονική Request → Handler → Results, όπου κάθε αίτημα είναι μια συγκεκριμένη εργασία: βρες πρόσωπα, αναγνώρισε κείμενο, παρακολούθησε αντικείμενο. Ας δούμε τα πιο δημοφιλή API.
VNRequest — μια αφηρημένη βασική κλάση από την οποία κληρονομούν όλα τα συγκεκριμένα αιτήματα Vision. Κάθε αίτημα περιέχει completionHandler, παραμέτρους διαμόρφωσης και regionOfInterest για επεξεργασία μέρους της εικόνας. Μετά τη δημιουργία, το αίτημα μεταβιβάζεται στο VNImageRequestHandler (για στατικές εικόνες) ή στο VNSequenceRequestHandler (για ροή βίντεο). Τα αποτελέσματα επιστρέφονται ως πίνακας παρατηρήσεων — υποκλάσεων του VNObservation.
VNDetectFaceRectanglesRequest βρίσκει όλα τα πρόσωπα στην εικόνα και επιστρέφει τα πλαίσιά τους. VNDetectFaceLandmarksRequest επιπλέον καθορίζει 68 βασικά σημεία αναφοράς: περίγραμμα ματιών, φρυδιών, μύτης, χειλιών και γνάθου. VNDetectFaceCaptureQualityRequest αξιολογεί την ποιότητα της φωτογραφίας προσώπου — από 0 έως 1 — χρήσιμο για βιομετρικά στοιχεία. Σύμφωνα με την Apple, η ακρίβεια ανίχνευσης προσώπου σε συσκευές με Neural Engine φτάνει το 99% σε μετωπική γωνία.
VNRecognizeTextRequest — API για οπτική αναγνώριση χαρακτήρων (OCR) σε εικόνες. Υποστηρίζει εκτυπωμένο κείμενο σε Λατινικά, Κυριλλικά, Κινεζικά, Ιαπωνικά, Κορεατικά και άλλες γλώσσες. Αποτέλεσμα — πίνακας VNRecognizedTextObservation, κάθε ένα περιέχει μια συμβολοσειρά κειμένου, bounding box και επίπεδο εμπιστοσύνης. Δύο λειτουργίες είναι διαθέσιμες: γρήγορη (Fast) για σάρωση εγγράφων και ακριβής (Accurate) για σύνθετες γραμματοσειρές.
Για να χρησιμοποιήσετε το Vision, αρκεί να εισαγάγετε το πλαίσιο, να δημιουργήσετε ένα αντικείμενο VNRequest και να το μεταβιβάσετε στο VNImageRequestHandler. Ας δούμε ένα παράδειγμα αναγνώρισης κειμένου σε μια εικόνα.
Ο κώδικας δημιουργεί ένα VNRecognizeTextRequest με ακριβή λειτουργία αναγνώρισης, το εκτελεί στην εικόνα και εμφανίζει το αναγνωρισμένο κείμενο στην κονσόλα. Αυτό το απλό παράδειγμα δείχνει την ελάχιστη ενσωμάτωση του Vision σε ένα έργο Swift χρησιμοποιώντας VNImageRequestHandler σε λίγες γραμμές κώδικα.
import Vision
// 1. Δημιουργία αιτήματος αναγνώρισης κειμένου
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("Κείμενο: \(topCandidate?.string ?? "")")
}
}
// 2. Ενεργοποίηση ακριβούς λειτουργίας
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. Εκκίνηση επεξεργασίας
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
Ο κώδικας Swift ρυθμίζει το VNRecognizeTextRequest με ακριβές επίπεδο αναγνώρισης και ενεργοποιημένη γλωσσική διόρθωση. Το VNImageRequestHandler φορτώνει την εικόνα από URL και εκτελεί το αίτημα. Τα αποτελέσματα περιέχουν αναγνωρισμένες συμβολοσειρές κειμένου με bounding boxes και επίπεδο εμπιστοσύνης για κάθε token. Ο πίνακας VNRecognizedTextObservation μπορεί να εμφανιστεί εύκολα στην οθόνη.
Για επεξεργασία βίντεο σε πραγματικό χρόνο, χρησιμοποιείται το VNSequenceRequestHandler αντί του VNImageRequestHandler. Δέχεται έναν πίνακα εικόνων (καρέ) και εκτελεί το ίδιο αίτημα διαδοχικά, διατηρώντας την κατάσταση μεταξύ των καρέ — αυτό είναι απαραίτητο για την παρακολούθηση αντικειμένων. Το VNSequenceRequestHandler διαχειρίζεται αυτόματα τη μνήμη: οι παλιές παρατηρήσεις διαγράφονται όταν το αντικείμενο εγκαταλείπει το καρέ. Η απόδοση σε πραγματικό χρόνο εξαρτάται από την πολυπλοκότητα του αιτήματος: η ανίχνευση προσώπων λειτουργεί στα 60 FPS, ενώ η αναγνώριση κειμένου στα 15–30 FPS σε συσκευές με τσιπ A16.
Vision και Core Image — δύο πλαίσια της Apple για εργασία με εικόνες, αλλά επιλύουν θεμελιωδώς διαφορετικές εργασίες. Το Core Image είναι ένα πλαίσιο για φιλτράρισμα και μετασχηματισμό εικόνων (εφαρμογή φίλτρων, διόρθωση χρώματος, θόλωση). Το Vision είναι ένα πλαίσιο για κατανόηση του περιεχομένου της εικόνας: τι απεικονίζεται σε αυτήν.
| Χαρακτηριστικό | Vision | Core Image |
|---|---|---|
| Εργασία | Ανάλυση και αναγνώριση | Φιλτράρισμα και επεξεργασία |
| Ανίχνευση προσώπου | Ναι, με σημεία αναφοράς | Μόνο CIDetector |
| Αναγνώριση κειμένου | Ναι (OCR) | Όχι |
| Φίλτρα | Όχι | 200+ φίλτρα |
| Ενσωμάτωση Core ML | Ναι (VNCoreMLRequest) | Όχι |
| Παρακολούθηση αντικειμένων | Ναι (VNTrackObjectRequest) | Όχι |
| Απόδοση | Βελτιστοποιημένο για ANE | GPU (Metal) |
Χρησιμοποιήστε το Vision όταν θέλετε να καταλάβετε τι υπάρχει στην εικόνα: πρόσωπα, κείμενο, κωδικοί QR, αντικείμενα. Χρησιμοποιήστε το Core Image όταν θέλετε να τροποποιήσετε την εικόνα: εφαρμογή φίλτρου, ρύθμιση χρωμάτων, περικοπή. Συχνά αυτά τα δύο πλαίσια συνδυάζονται: πρώτα το Core Image βελτιώνει την ποιότητα της εικόνας, στη συνέχεια το Vision αναγνωρίζει το κείμενο σε αυτήν.
Στην πράξη, το Vision και το Core Image χρησιμοποιούνται μαζί σε εφαρμογές σάρωσης εγγράφων. Το Core Image αυξάνει αυτόματα την αντίθεση και αφαιρεί τις σκιές (CIFilter με CIPhotoEffectNoir), και το Vision αναγνωρίζει το κείμενο στη βελτιωμένη εικόνα. Σύμφωνα με την Apple (WWDC 2025), η ακρίβεια OCR αυξάνεται κατά 15–20% μετά από προεπεξεργασία της εικόνας μέσω Core Image σε σύγκριση με το ακατέργαστο καρέ από την κάμερα.
Ένα άλλο σημαντικό σενάριο συνδυασμένης χρήσης — ανάλυση προσώπου σε πραγματικό χρόνο για εφαρμογές επαυξημένης πραγματικότητας. Το Vision ανιχνεύει το πρόσωπο και καθορίζει 68 σημεία αναφοράς, και το Core Image εφαρμόζει φίλτρα στις ανιχνευμένες περιοχές. Το ARKit χρησιμοποιεί το Vision για παρακολούθηση προσώπου και το Core Image για απόδοση εφέ, δίνοντας συνολική καθυστέρηση μικρότερη από 16 ms σε συσκευές με τσιπ A15+.
Κατά την ανάπτυξη σε SwiftUI για ενσωμάτωση Vision, χρησιμοποιείται το πρωτόκολλο Representable, που τυλίγει το AVCaptureSession και το VNImageRequestHandler σε UIViewRepresentable. Η κάμερα εμφανίζεται μέσω PreviewView, κάθε καρέ μεταβιβάζεται στο VisionRequestHandler μέσω AVCaptureVideoDataOutputSampleBufferDelegate. Αυτή η αρχιτεκτονική προσέγγιση διατηρεί την αντιδραστικότητα του SwiftUI και λαμβάνει τα αποτελέσματα ανάλυσης Vision ως @Published ιδιότητες για άμεση ενημέρωση της διεπαφής.
Vision χρησιμοποιείται σε ένα ευρύ φάσμα εφαρμογών iOS: από σαρωτές εγγράφων έως εφαρμογές επαυξημένης πραγματικότητας. Ας δούμε τρία χαρακτηριστικά σενάρια.
VNDetectDocumentSegmentationRequest (διαθέσιμο από iOS 17+) ανιχνεύει αυτόματα τα όρια του εγγράφου στην εικόνα, διορθώνει την προοπτική και επιστρέφει μια ισιωμένη εικόνα. Σε συνδυασμό με VNRecognizeTextRequest προκύπτει ένας πλήρης σαρωτής OCR, ικανός να αναγνωρίζει αποδείξεις, επαγγελματικές κάρτες και σελίδες βιβλίων. Σύμφωνα με την Apple, η τμηματοποίηση εγγράφου διαρκεί 30–80 ms σε συσκευή με τσιπ A15.
VNTrackObjectRequest παρακολουθεί την κίνηση του επιλεγμένου αντικειμένου μεταξύ των καρέ της ροής βίντεο σε πραγματικό χρόνο. Ο προγραμματιστής καθορίζει το bounding box του αντικειμένου στο πρώτο καρέ, και το Vision υπολογίζει αυτόματα τη νέα του θέση στα επόμενα καρέ. Παρακολούθηση εφαρμόζεται σε εφαρμογές ανάλυσης βίντεο, παιχνίδια AR και συστήματα επιτήρησης. Η ακρίβεια παρακολούθησης σε τσιπ A16 είναι 95% σε ταχύτητα κίνησης αντικειμένου έως 30 pixel ανά καρέ.
VNDetectRectanglesRequest βρίσκει ορθογώνιες περιοχές στην εικόνα: οθόνες, φύλλα χαρτιού, πινακίδες, έγγραφα. Το API επιστρέφει συντεταγμένες γωνιών με διόρθωση προοπτικής. Συνδυάζοντας ορθογώνια με VNDetectContoursRequest, μπορεί να εξαχθεί το ακριβές περίγραμμα του αντικειμένου — χρήσιμο για εφαρμογές επαυξημένης πραγματικότητας και επεξεργαστές γραφικών. Το VNDetectContoursRequest επιστρέφει έναν πίνακα σημείων ελέγχου του περιγράμματος που μπορούν να μετατραπούν σε UIBezierPath για σχεδίαση.
Συχνές ερωτήσεις
iOS 11+ για βασικά API, iOS 13+ για αναγνώριση κειμένου (VNRecognizeTextRequest), iOS 17+ για τμηματοποίηση εγγράφων. Το Vision είναι επίσης διαθέσιμο σε macOS 10.13+ και iPadOS 13+.
Ναι, το Vision επεξεργάζεται ροή βίντεο μέσω VNSequenceRequestHandler και AVFoundation. Το πλαίσιο υποστηρίζει έως 60 FPS σε συσκευές με τσιπ A14+ χρησιμοποιώντας γρήγορα αιτήματα.
Vision — εγγενές πλαίσιο της Apple με αυτόματη βελτιστοποίηση για ANE και GPU. OpenCV — βιβλιοθήκη跨πλατφορμική με ευρύτερες δυνατότητες, αλλά απαιτεί χειροκίνητη βελτιστοποίηση και χωρίς υποστήριξη Neural Engine.
Μέσω VNCoreMLRequest: δημιουργήστε ένα μοντέλο Core ML, αρχικοποιήστε το VNCoreMLModel, μεταβιβάστε το στο VNCoreMLRequest και εκτελέστε το μέσω VNImageRequestHandler. Το Xcode θα δημιουργήσει αυτόματα μια κλάση Swift για το μοντέλο.
Έμμεσα — το VNDetectFaceLandmarksRequest καθορίζει τη θέση των βασικών σημείων του προσώπου, και το VNDetectFaceExpressionsRequest (iOS 17+) αξιολογεί το χαμόγελο και το κλείσιμο του ματιού μέσω κλειστών ματιών.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης