Vision — Apple tarafından iOS, macOS ve iPadOS'a entegre edilmiş, görüntü, video ve gerçek zamanlı analiz için hazır API'ler sunan bir bilgisayarlı görü çerçevesidir. Yüz algılama, metin tanıma, barkodlar, nesne konturları ve hareket takibi gibi işlemleri kapsar — tümü cihaz üzerinde, verileri sunucuya göndermeden gerçekleşir. Apple Vision Documentation (2026)'ya göre, çerçeve A14 ve daha yeni çiplere sahip cihazlarda saniyede 60 kareye kadar işleme yapabilir.
Önemli Noktalar
Vision, Apple tarafından WWDC 2017'de tanıtılan üst düzey bir bilgisayarlı görü çerçevesidir. Geliştiricilere, bilgisayarlı görü matematiğine veya belirli bir nöral işlemci için optimizasyona girmeden görüntü ve video analizi görevlerini gerçekleştirmek için birleşik bir arayüz sağlar. Vision, A12+ çipli cihazlarda Apple Neural Engine'i otomatik olarak kullanır.
OpenCV gibi düşük seviyeli kütüphanelerin aksine, Vision karmaşıklığı soyutlar: geliştirici bir VNRequest nesnesi oluşturur, parametreleri yapılandırır ve işlemeyi VNImageRequestHandler aracılığıyla başlatır. Çerçeve, görevi hangi işlemcide (CPU, GPU veya ANE) gerçekleştireceğine kendisi karar verir ve yapılandırılmış bir sonuç döndürür. Apple'a göre (WWDC 2025), Vision, görüntülerle çalışan App Store uygulamalarının %40'ında kullanılmaktadır.
Vision, yüzleri ve işaret noktalarını (68 noktaya kadar) algılama, 30+ dil desteğiyle metin tanıma (OCR), QR ve EAN barkod tarama, nesneleri kareler arasında takip etme, dikdörtgen ve kontur algılama, Core ML aracılığıyla görüntü sınıflandırma, hareket ve optik akış değerlendirmesi ve segmentasyonla görüntüde insan algılama API'lerini içerir. Her işlem, VNRequest'in ayrı bir alt sınıfı ile temsil edilir.
Vision, Request → Handler → Results mimarisi üzerine kurulmuştur; her istek belirli bir görevi temsil eder: yüz bulma, metin tanıma, nesne takibi. En çok kullanılan API'leri inceleyelim.
VNRequest, tüm Vision isteklerinin miras aldığı soyut temel sınıftır. Her istek, completionHandler, yapılandırma parametreleri ve görüntünün bir kısmını işlemek için regionOfInterest içerir. İstek oluşturulduktan sonra VNImageRequestHandler'a (statik görüntüler için) veya VNSequenceRequestHandler'a (video akışı için) iletilir. Sonuçlar, VNObservation alt sınıflarından oluşan bir dizi olarak döndürülür.
VNDetectFaceRectanglesRequest, görüntüdeki tüm yüzleri bulur ve sınırlayıcı kutularını döndürür. VNDetectFaceLandmarksRequest, ek olarak 68 anahtar noktayı belirler: göz, kaş, burun, dudak ve çene konturu. VNDetectFaceCaptureQualityRequest, yüz çekim kalitesini 0 ile 1 arasında değerlendirir — biyometri için kullanışlıdır. Apple'a göre, Neural Engine'li cihazlarda yüz algılama doğruluğu önden bakışta %99'a ulaşır.
VNRecognizeTextRequest, görüntülerde optik karakter tanıma (OCR) için API'dir. Latin, Kiril, Çince, Japonca, Korece ve diğer dillerde basılı metni destekler. Sonuç — her biri metin dizesi, bounding box ve güven seviyesi içeren VNRecognizedTextObservation dizisidir. İki mod mevcuttur: belge tarama için hızlı (Fast) ve karmaşık yazı tipleri için hassas (Accurate).
Vision'ı kullanmak için çerçeveyi içe aktarmak, bir VNRequest nesnesi oluşturmak ve VNImageRequestHandler'a iletmek yeterlidir. Bir görüntüde metin tanıma örneğini inceleyelim.
Kod, hassas tanıma moduyla bir VNRecognizeTextRequest oluşturur, bunu bir görüntüde çalıştırır ve tanınan metni konsola yazdırır. Bu basit örnek, Swift projesinde VNImageRequestHandler kullanarak Vision'un minimum entegrasyonunu birkaç satır kodla gösterir.
import Vision
// 1. Metin tanıma isteği oluşturma
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("Metin: \(topCandidate?.string ?? "")")
}
}
// 2. Hassas modu etkinleştirme
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. İşlemi başlatma
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
Swift kodu, VNRecognizeTextRequest'i hassas tanıma seviyesi ve etkin dil düzeltmesiyle yapılandırır. VNImageRequestHandler, görüntüyü URL'den yükler ve isteği çalıştırır. Sonuçlar, her belirteç için bounding boxes ve güven puanıyla birlikte tanınan metin dizelerini içerir. VNRecognizedTextObservation dizisi ekranda görüntülenmeye uygundur.
Gerçek zamanlı video işleme için VNSequenceRequestHandler kullanılır. Bir dizi görüntüyü (kareleri) alır ve aynı isteği sırayla çalıştırarak kareler arasında durumu korur — bu nesne takibi için gereklidir. VNSequenceRequestHandler belleği otomatik olarak yönetir: nesne kareden çıktığında eski gözlemler silinir. Gerçek zamanlı performans, isteğin karmaşıklığına bağlıdır: yüz algılama 60 FPS'de çalışırken, metin tanıma A16 çipli cihazlarda 15–30 FPS'de çalışır.
Vision ve Core Image, Apple'ın görüntülerle çalışmak için iki çerçevesidir, ancak temelde farklı görevleri çözerler. Core Image, görüntüleri filtreleme ve dönüştürme (filtre uygulama, renk düzeltme, bulanıklaştırma) için bir çerçevedir. Vision, görüntünün içeriğini anlama (görüntüde ne olduğu) için bir çerçevedir.
| Özellik | Vision | Core Image |
|---|---|---|
| Görev | Analiz ve tanıma | Filtreleme ve işleme |
| Yüz algılama | Evet, işaret noktalarıyla | Sadece CIDetector |
| Metin tanıma | Evet (OCR) | Hayır |
| Filtreler | Hayır | 200+ filtre |
| Core ML entegrasyonu | Evet (VNCoreMLRequest) | Hayır |
| Nesne takibi | Evet (VNTrackObjectRequest) | Hayır |
| Performans | ANE için optimize edilmiş | GPU (Metal) |
Vision'ı, görüntüde ne olduğunu anlamanız gerektiğinde kullanın: yüzler, metin, QR kodlar, nesneler. Core Image'ı, görüntüyü değiştirmeniz gerektiğinde kullanın: filtre uygulama, renk ayarlama, kırpma. Genellikle bu iki çerçeve birleştirilir: önce Core Image çekim kalitesini iyileştirir, ardından Vision üzerindeki metni tanır.
Pratikte Vision ve Core Image, belge tarama uygulamalarında birlikte kullanılır. Core Image, CIFilter ve CIPhotoEffectNoir ile kontrastı otomatik olarak artırır ve gölgeleri kaldırır; Vision ise iyileştirilmiş görüntüde metni tanır. Apple'a göre (WWDC 2025), Core Image aracılığıyla ön işleme yapıldığında OCR doğruluğu, kameradan alınan ham kareye kıyasla %15–20 artar.
Bir diğer önemli birlikte kullanım senaryosu, artırılmış gerçeklik uygulamaları için gerçek zamanlı yüz analizidir. Vision yüzü algılar ve 68 işaret noktasını belirler; Core Image ise algılanan alanlara filtreler uygular. ARKit, yüz takibi için Vision'ı ve efekt oluşturma için Core Image'ı kullanır; bu, A15+ çipli cihazlarda toplam 16 ms'nin altında gecikme sağlar.
SwiftUI'de Vision entegrasyonu için, AVCaptureSession ve VNImageRequestHandler'ı bir UIViewRepresentable içine saran Representable protokolü kullanılır. Kamera PreviewView aracılığıyla görüntülenir, her kare AVCaptureVideoDataOutputSampleBufferDelegate aracılığıyla VisionRequestHandler'a iletilir. Bu mimari yaklaşım, SwiftUI'nin reaktivitesini korurken Vision analiz sonuçlarını arayüzü hemen güncellemek için @Published özellikler olarak almayı sağlar.
Vision, belge tarayıcılardan artırılmış gerçeklik uygulamalarına kadar geniş bir iOS uygulama yelpazesinde kullanılır. Üç karakteristik senaryoyu inceleyelim.
VNDetectDocumentSegmentationRequest (iOS 17+ ile kullanılabilir), görüntüdeki belge sınırlarını otomatik olarak algılar, perspektifi düzeltir ve düzleştirilmiş görüntüyü döndürür. VNRecognizeTextRequest ile birleştirildiğinde, faturaları, kartvizitleri ve kitap sayfalarını tanıyabilen tam teşekküllü bir OCR tarayıcı elde edilir. Apple'a göre, belge segmentasyonu A15 çipli bir cihazda 30–80 ms sürer.
VNTrackObjectRequest, seçilen bir nesnenin video akışındaki kareler arasında gerçek zamanlı hareketini izler. Geliştirici, ilk karede nesnenin bounding box'ını belirtir ve Vision sonraki karelerde yeni konumunu otomatik olarak hesaplar. Takip, video analitiği uygulamalarında, AR oyunlarında ve gözetim sistemlerinde kullanılır. A16 çiplerinde takip doğruluğu, kare başına 30 piksele kadar nesne hızında %95'tir.
VNDetectRectanglesRequest, görüntüdeki dikdörtgen alanları bulur: ekranlar, kağıtlar, tabelalar, belgeler. API, perspektif düzeltmeli köşe koordinatlarını döndürür. Dikdörtgenleri VNDetectContoursRequest ile birleştirerek nesnenin tam konturu çıkarılabilir — artırılmış gerçeklik uygulamaları ve grafik düzenleyiciler için kullanışlıdır. VNDetectContoursRequest, çizim için UIBezierPath'e dönüştürülebilen bir kontrol noktaları dizisi döndürür.
Sıkça Sorulan Sorular
iOS 11+ temel API'ler için, iOS 13+ metin tanıma (VNRecognizeTextRequest) için, iOS 17+ belge segmentasyonu için. Vision ayrıca macOS 10.13+ ve iPadOS 13+'da da kullanılabilir.
Evet, Vision, VNSequenceRequestHandler ve AVFoundation aracılığıyla video akışını işler. Çerçeve, hızlı istekler kullanıldığında A14+ çipli cihazlarda 60 FPS'ye kadar destekler.
Vision, ANE ve GPU için otomatik optimizasyonlu yerel bir Apple çerçevesidir. OpenCV, daha geniş yeteneklere sahip platformlar arası bir kütüphanedir ancak manuel optimizasyon gerektirir ve Neural Engine desteği yoktur.
VNCoreMLRequest aracılığıyla: bir Core ML modeli oluşturun, VNCoreMLModel'i başlatın, VNCoreMLRequest'e iletin ve VNImageRequestHandler aracılığıyla çalıştırın. Xcode, model için otomatik olarak bir Swift sınıfı oluşturacaktır.
Dolaylı olarak — VNDetectFaceLandmarksRequest yüzün anahtar noktalarının konumunu belirler; VNDetectFaceExpressionsRequest (iOS 17+) ise gülümseme ve göz kırpmayı değerlendirir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun