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 در زاویه front به 99% میرسد.
VNRecognizeTextRequest — API برای تشخیص نوری کاراکترها (OCR) روی تصاویر. از متن چاپی به لاتین، سیریلیک، چینی، ژاپنی، کرهای و سایر زبانها پشتیبانی میکند. نتیجه — آرایهای از VNRecognizedTextObservation که هر کدام شامل یک رشته متن، bounding box و سطح اطمینان است. دو حالت موجود است: سریع (Fast) برای اسکن اسناد و دقیق (Accurate) برای فونتهای پیچیده.
برای استفاده از Vision کافی است فریمورک را import کنید، یک شی 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 box و سطح اطمینان برای هر token است. آرایه VNRecognizedTextObservation را میتوان به راحتی روی صفحه نمایش داد.
برای پردازش ویدئو در زمان واقعی به جای VNImageRequestHandler از VNSequenceRequestHandler استفاده میشود. این handler آرایهای از تصاویر (فریمها) را دریافت میکند و همان درخواست را به صورت متوالی اجرا میکند و وضعیت را بین فریمها حفظ میکند — این برای ردیابی اشیا ضروری است. VNSequenceRequestHandler به طور خودکار حافظه را مدیریت میکند: مشاهدات قدیمی حذف میشوند وقتی شی از کادر خارج میشود. عملکرد در زمان واقعی به پیچیدگی درخواست بستگی دارد: تشخیص چهره با 60 FPS کار میکند، در حالی که تشخیص متن روی دستگاههای با تراشه A16 با 15–30 FPS کار میکند.
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 برای رندر کردن افکتها استفاده میکند که مجموع تأخیر را روی دستگاههای با تراشه A15+ به کمتر از 16 میلیثانیه میرساند.
در توسعه با SwiftUI برای ادغام Vision از پروتکل Representable استفاده میشود که AVCaptureSession و VNImageRequestHandler را در UIViewRepresentable میپیچد. دوربین از طریق PreviewView نمایش داده میشود، هر فریم از طریق AVCaptureVideoDataOutputSampleBufferDelegate به VisionRequestHandler ارسال میشود. این رویکرد معماری امکان حفظ واکنشگرایی SwiftUI و دریافت نتایج تحلیل Vision به عنوان ویژگیهای @Published برای بهروزرسانی فوری رابط را فراهم میکند.
Vision در طیف گستردهای از برنامههای iOS استفاده میشود: از اسکنرهای اسناد گرفته تا برنامههای واقعیت افزوده. بیایید سه سناریوی مشخص را بررسی کنیم.
VNDetectDocumentSegmentationRequest (موجود از iOS 17+) به طور خودکار مرزهای سند را در تصویر تشخیص میدهد، پرسپکتیو را تصحیح میکند و تصویر صافشده را برمیگرداند. در ترکیب با VNRecognizeTextRequest یک اسکنر OCR کامل به دست میآید که قادر به تشخیص صورتحسابها، کارتهای ویزیت و صفحات کتاب است. طبق Apple، بخشبندی سند 30–80 میلیثانیه روی دستگاه با تراشه A15 طول میکشد.
VNTrackObjectRequest حرکت شی انتخابشده را بین فریمهای جریان ویدئو در زمان واقعی ردیابی میکند. توسعهدهنده bounding box شی را در اولین فریم مشخص میکند و Vision به طور خودکار موقعیت جدید آن را در فریمهای بعدی محاسبه میکند. ردیابی در برنامههای تحلیل ویدئو، بازیهای AR و سیستمهای نظارتی استفاده میشود. دقت ردیابی روی تراشههای A16 با سرعت حرکت شی تا 30 پیکسل در هر فریم 95% است.
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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید