Vision: چیست، فریم‌ورک بینایی کامپیوتر و کار روی iOS

نویسنده: IT Sectr منتشر شده: 2026-03-26 زمان مطالعه: 8 دقیقه

Vision — فریم‌ورک بینایی کامپیوتر از Apple، تعبیه‌شده در iOS، macOS و iPadOS که APIهای آماده برای تحلیل تصاویر، ویدئو و زمان واقعی ارائه می‌دهد. این فریم‌ورک تشخیص چهره، تشخیص متن، بارکد، کانتور اشیا و ردیابی حرکت را پوشش می‌دهد — همه روی دستگاه بدون ارسال داده به سرور. طبق Apple Vision Documentation (2026)، این فریم‌ورک تا 60 فریم در ثانیه را روی دستگاه‌های با تراشه A14 و جدیدتر پردازش می‌کند.

نکات اصلی

  • Vision — فریم‌ورک Apple برای بینایی کامپیوتر روی دستگاه با API برای تشخیص چهره، متن و اشیا
  • VNRequest — کلاس پایه برای همه عملیات‌ها: تشخیص، طبقه‌بندی، ردیابی و شناسایی
  • تشخیص متن از لاتین، سیریلیک، چینی و بیش از 30 زبان پشتیبانی می‌کند
  • تشخیص چهره تا 68 نقطه کلیدی را با ارزیابی احساسات و چرخش سر تعیین می‌کند
  • ادغام با Core ML امکان اجرای مدل‌های سفارشی را از طریق VNCoreMLRequest فراهم می‌کند

Vision چیست؟

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 نمایش داده می‌شود.

APIهای کلیدی Vision

Vision بر اساس معماری Request → Handler → Results ساخته شده است، جایی که هر درخواست یک وظیفه مشخص است: پیدا کردن چهره‌ها، تشخیص متن، ردیابی شی. بیایید پرکاربردترین APIها را بررسی کنیم.

VNRequest — اساس همه عملیات‌ها

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) برای فونت‌های پیچیده.

  • VNDetectFaceRectanglesRequest — جستجوی چهره با بازگرداندن قاب‌ها
  • VNDetectFaceLandmarksRequest — 68 نقطه کلیدی چهره
  • VNRecognizeTextRequest — OCR با پشتیبانی از 30+ زبان
  • VNDetectBarcodesRequest — اسکن QR، EAN، PDF417
  • VNCoreMLRequest — اجرای مدل‌های سفارشی Core ML

ادغام Vision در iOS

برای استفاده از Vision کافی است فریم‌ورک را import کنید، یک شی VNRequest ایجاد کنید و آن را به VNImageRequestHandler ارسال کنید. بیایید مثالی از تشخیص متن در تصویر را بررسی کنیم.

نمونه کد در Swift

کد یک VNRecognizeTextRequest با حالت دقیق تشخیص ایجاد می‌کند، آن را روی تصویر اجرا می‌کند و متن تشخیص‌داده‌شده را در کنسول نمایش می‌دهد. این مثال ساده، حداقل ادغام Vision در یک پروژه Swift را با استفاده از VNImageRequestHandler در چند خط کد نشان می‌دهد.

swift
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

Vision و Core Image — دو فریم‌ورک Apple برای کار با تصاویر هستند، اما وظایف اساساً متفاوتی را حل می‌کنند. Core Image فریم‌ورکی برای فیلتر کردن و تبدیل تصاویر (اعمال فیلترها، تصحیح رنگ، تار کردن) است. Vision فریم‌ورکی برای درک محتوای تصویر است: چه چیزی در تصویر وجود دارد.

ویژگیVisionCore Image
وظیفهتحلیل و تشخیصفیلتر کردن و پردازش
تشخیص چهرهبله، با نقاط کلیدیفقط CIDetector
تشخیص متنبله (OCR)خیر
فیلترهاخیر200+ فیلتر
ادغام Core MLبله (VNCoreMLRequest)خیر
ردیابی اشیابله (VNTrackObjectRequest)خیر
عملکردبهینه‌سازی شده برای ANEGPU (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

Vision در طیف گسترده‌ای از برنامه‌های iOS استفاده می‌شود: از اسکنرهای اسناد گرفته تا برنامه‌های واقعیت افزوده. بیایید سه سناریوی مشخص را بررسی کنیم.

اسکن اسناد

VNDetectDocumentSegmentationRequest (موجود از iOS 17+) به طور خودکار مرزهای سند را در تصویر تشخیص می‌دهد، پرسپکتیو را تصحیح می‌کند و تصویر صاف‌شده را برمی‌گرداند. در ترکیب با VNRecognizeTextRequest یک اسکنر OCR کامل به دست می‌آید که قادر به تشخیص صورتحساب‌ها، کارت‌های ویزیت و صفحات کتاب است. طبق Apple، بخش‌بندی سند 30–80 میلی‌ثانیه روی دستگاه با تراشه A15 طول می‌کشد.

ردیابی اشیا در ویدئو

VNTrackObjectRequest حرکت شی انتخاب‌شده را بین فریم‌های جریان ویدئو در زمان واقعی ردیابی می‌کند. توسعه‌دهنده bounding box شی را در اولین فریم مشخص می‌کند و Vision به طور خودکار موقعیت جدید آن را در فریم‌های بعدی محاسبه می‌کند. ردیابی در برنامه‌های تحلیل ویدئو، بازی‌های AR و سیستم‌های نظارتی استفاده می‌شود. دقت ردیابی روی تراشه‌های A16 با سرعت حرکت شی تا 30 پیکسل در هر فریم 95% است.

تشخیص کانتورها و مستطیل‌ها

VNDetectRectanglesRequest مناطق مستطیلی را در تصویر پیدا می‌کند: صفحه‌نمایش‌ها، برگه‌های کاغذ، تابلوها، اسناد. API مختصات گوشه‌ها را با تصحیح پرسپکتیو برمی‌گرداند. با ترکیب مستطیل‌ها با VNDetectContoursRequest می‌توان کانتور دقیق شی را استخراج کرد — برای برنامه‌های واقعیت افزوده و ویرایشگرهای گرافیکی مفید است. VNDetectContoursRequest آرایه‌ای از نقاط کنترل کانتور را برمی‌گرداند که می‌توان برای رسم به UIBezierPath تبدیل کرد.

سؤالات متداول

Vision از چه نسخه‌هایی از iOS در دسترس است؟

iOS 11+ برای APIهای پایه، iOS 13+ برای تشخیص متن (VNRecognizeTextRequest)، iOS 17+ برای بخش‌بندی اسناد. Vision همچنین در macOS 10.13+ و iPadOS 13+ در دسترس است.

آیا Vision می‌تواند با ویدئو در زمان واقعی کار کند؟

بله، Vision جریان ویدئو را از طریق VNSequenceRequestHandler و AVFoundation پردازش می‌کند. این فریم‌ورک با استفاده از درخواست‌های سریع تا 60 FPS روی دستگاه‌های با تراشه A14+ پشتیبانی می‌کند.

Vision چه تفاوتی با OpenCV دارد؟

Vision — فریم‌ورک بومی Apple با بهینه‌سازی خودکار برای ANE و GPU. OpenCV — یک کتابخانه چندسکویی با قابلیت‌های گسترده‌تر، اما نیازمند بهینه‌سازی دستی و بدون پشتیبانی از Neural Engine.

چگونه یک مدل ML سفارشی به Vision اضافه کنیم؟

از طریق VNCoreMLRequest: یک مدل Core ML ایجاد کنید، VNCoreMLModel را مقداردهی کنید، آن را به VNCoreMLRequest ارسال کنید و از طریق VNImageRequestHandler اجرا کنید. Xcode به طور خودکار یک کلاس Swift برای مدل تولید می‌کند.

آیا Vision از تشخیص احساسات پشتیبانی می‌کند؟

به طور غیرمستقیم — VNDetectFaceLandmarksRequest موقعیت نقاط کلیدی چهره را تعیین می‌کند و VNDetectFaceExpressionsRequest (iOS 17+) لبخند و چشمک را از طریق چشم‌های بسته ارزیابی می‌کند.

خلاصه

  • Vision — فریم‌ورک Apple برای بینایی کامپیوتر روی دستگاه با معماری یکپارچه VNRequest → VNHandler → VNObservation
  • تشخیص چهره تا 68 نقطه کلیدی را با ارزیابی کیفیت و چرخش سر تعیین می‌کند
  • تشخیص متن (OCR) از 30+ زبان در دو حالت پشتیبانی می‌کند: سریع و دقیق
  • اسکن بارکد با QR، EAN-13، Code 128، PDF417 و Aztec کار می‌کند
  • ادغام با Core ML از طریق VNCoreMLRequest امکان اجرای مدل‌های سفارشی را فراهم می‌کند
  • ردیابی اشیا بین فریم‌های جریان ویدئو در زمان واقعی تا 60 FPS کار می‌کند
  • Vision و Core Image یکدیگر را تکمیل می‌کنند: تشخیص + فیلتر کردن تصاویر

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید