فيشن: إطار الرؤية الحاسوبية وعمله على iOS

المؤلف: IT Sectr نُشر: 2026-03-26 وقت القراءة: 8 دق

فيشن هو إطار الرؤية الحاسوبية من Apple، مدمج في iOS، macOS و iPadOS، ويوفر واجهات برمجة تطبيق جاهزة لتحليل الصور والفيديو والبيانات في الوقت الفعلي. يشمل اكتشاف الوجوه، التعرف على النصوص، الرموز الشريطية، محيط الأجسام وتتبع الحركة — كله على الجهاز دون إرسال البيانات إلى خادم. وفقًا لـ Apple Vision Documentation (2026)، يعالج الإطار ما يصل إلى 60 إطارًا في الثانية على الأجهزة مع شريحة A14 وأحدث.

النقاط الرئيسية

  • فيشن — إطار الرؤية الحاسوبية من Apple على الجهاز مع واجهات برمجة لاكتشاف الوجوه والنصوص والأجسام
  • VNRequest — الفئة الأساسية لجميع العمليات: الاكتشاف، التصنيف، التتبع والتعرف
  • التعرف على النصوص يدعم اللاتينية والسيريلية والصينية وأكثر من 30 لغة
  • اكتشاف الوجوه يحدد ما يصل إلى 68 نقطة مرجعية رئيسية مع تقدير المشاعر ودوران الرأس
  • التكامل مع Core ML يسمح بتشغيل نماذج مخصصة عبر VNCoreMLRequest

ما هو فيشن؟

فيشن هو إطار عالي المستوى للرؤية الحاسوبية قدمته Apple في WWDC 2017. يوفر للمطورين واجهة موحدة لأداء مهام مختلفة لتحليل الصور والفيديو دون الحاجة للغوص في رياضيات الرؤية الحاسوبية أو التحسين لمعالج عصبي محدد. يستخدم فيشن تلقائيًا Apple Neural Engine على الأجهزة مع شرائح A12+.

على عكس المكتبات منخفضة المستوى مثل OpenCV، فيشن يجرّد التعقيد: يقوم المطور بإنشاء كائن VNRequest، تكوين المعلمات، وتشغيل المعالجة عبر VNImageRequestHandler. يقرر الإطار وحدة الحساب التي سيستخدمها — CPU، GPU أو ANE — ويعيد نتائج منظمة. وفقًا لـ Apple (WWDC 2025)، يتم استخدام فيشن في 40% من تطبيقات App Store التي تعمل مع الصور.

القدرات الأساسية

فيشن يشمل واجهات برمجة لاكتشاف الوجوه ومعالمها (حتى 68 نقطة)، التعرف على النصوص (OCR) بدعم أكثر من 30 لغة، مسح الرموز الشريطية QR و EAN، تتبع الأجسام بين الإطارات، اكتشاف المستطيلات والمحيط، تصنيف الصور عبر Core ML، تقدير الحركة والتدفق البصري، واكتشاف الأشخاص مع التجزئة. كل عملية تُمثّل بفئة فرعية منفصلة من VNRequest.

واجهات برمجة فيشن الرئيسية

فيشن مبني على معمارية Request → Handler → Results، حيث كل طلب هو مهمة محددة: العثور على الوجوه، التعرف على النصوص، تتبع كائن. دعنا نستعرض أكثر واجهات البرمجة استخدامًا.

VNRequest — أساس جميع العمليات

VNRequest هي فئة أساسية مجردة ترث منها جميع طلبات فيشن المحددة. كل طلب يحتوي على completionHandler، معلمات تكوين، و regionOfInterest لمعالجة جزء من الصورة. بعد إنشاء الطلب، يتم تمريره إلى VNImageRequestHandler (للصور الثابتة) أو VNSequenceRequestHandler (لتدفقات الفيديو). تعاد النتائج كمصفوفة من الملاحظات — فئات فرعية من VNObservation.

اكتشاف الوجوه والمعالم

VNDetectFaceRectanglesRequest يجد جميع الوجوه في صورة ويعيد مستطيلاتها المحددة. VNDetectFaceLandmarksRequest يحدد بالإضافة 68 نقطة مرجعية رئيسية: محيط العيون، الحواجب، الأنف، الشفاه والفك. VNDetectFaceCaptureQualityRequest يقيم جودة التقاط الوجه — من 0 إلى 1 — مفيد للقياسات الحيوية. وفقًا لـ Apple، دقة اكتشاف الوجوه على الأجهزة مع Neural Engine تصل إلى 99% في الزوايا الأمامية.

التعرف على النصوص

VNRecognizeTextRequest هي واجهة البرمجة للتعرف البصري على الأحرف (OCR) في الصور. يدعم النصوص المطبوعة باللاتينية والسيريلية والصينية واليابانية والكورية واللغات الأخرى. النتيجة هي مصفوفة من كائنات VNRecognizedTextObservation، كل منها يحتوي على نص، مستطيل محدد ومستوى ثقة. يتوفر وضعان: سريع (Fast) لمسح المستندات ودقيق (Accurate) للخطوط المعقدة.

  • VNDetectFaceRectanglesRequest — اكتشاف الوجوه مع إعادة المستطيلات
  • VNDetectFaceLandmarksRequest — 68 نقطة مرجعية للوجه
  • VNRecognizeTextRequest — OCR بدعم أكثر من 30 لغة
  • VNDetectBarcodesRequest — مسح QR، EAN، PDF417
  • VNCoreMLRequest — تشغيل نماذج Core ML مخصصة

دمج فيشن في iOS

لاستخدام فيشن، قم باستيراد الإطار، أنشئ كائن VNRequest وأرسله إلى VNImageRequestHandler. لننظر إلى مثال للتعرف على النصوص في صورة.

مثال برمجي بـ Swift

يقوم الكود بإنشاء VNRecognizeTextRequest بوضع التعرف الدقيق، تشغيله على صورة وإخراج النص المتعرف عليه في الوحدة الطرفية. يوضح هذا المثال البسيط أدنى الدمج لفيشن في مشروع 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 وينفّذ الطلب. تحتوي النتائج على نصوص متعرف عليها مع مستطيلات محددة ودرجات ثقة لكل رمز. يمكن عرض مصفوفة VNRecognizedTextObservation بسهولة على الشاشة.

لمعالجة الفيديو في الوقت الفعلي، استخدم VNSequenceRequestHandler بدلاً من VNImageRequestHandler. يقبل مصفوفة من الصور (الإطارات) وينفّذ نفس الطلب بالتسلسل، محافظًا على الحالة بين الإطارات — أساسي لتتبع الأجسام. VNSequenceRequestHandler يدير الذاكرة تلقائيًا: تتم إزالة الملاحظات القديمة عندما يغادر الكائن الإطار. يعتمد الأداء في الوقت الفعلي على تعقيد الطلب: يعمل اكتشاف الوجوه بمعدل 60 إطارًا في الثانية، بينما يعمل التعرف على النصوص بمعدل 15–30 إطارًا في الثانية على الأجهزة مع شريحة A16.

فيشن مقابل Core Image

فيشن و Core Image هما إطاران من Apple للعمل مع الصور، لكنهما يحلّان مهامًا مختلفة جوهريًا. Core Image هو إطار لتصفية وتحويل الصور (تطبيق المرشحات، تصحيح الألوان، التمويه). فيشن هو إطار لفهم محتوى الصورة: ما هو مصور فيها.

الخاصيةفيشنCore Image
المهمةتحليل وتعرفتصفية ومعالجة
اكتشاف الوجوهنعم، مع المعالمCIDetector فقط
التعرف على النصوصنعم (OCR)لا
المرشحاتلاأكثر من 200 مرشح
التكامل مع Core MLنعم (VNCoreMLRequest)لا
تتبع الأجسامنعم (VNTrackObjectRequest)لا
الأداءمحسّن لـ ANEGPU (Metal)

استخدم فيشن عندما تحتاج لفهم ما في الصورة: وجوه، نصوص، رموز QR، أجسام. استخدم Core Image عندما تحتاج لتعديل الصورة: تطبيق مرشح، ضبط الألوان، قص. غالبًا ما يتم دمج هذين الإطارين: أولاً Core Image يحسّن جودة الصورة، ثم فيشن يتعرف على النص فيها.

في الممارسة العملية، فيشن و Core Image يُستخدمان معًا في تطبيقات مسح المستندات. Core Image يزيد التباين تلقائيًا ويزيل الظلال (CIFilter مع CIPhotoEffectNoir)، بينما فيشن يتعرف على النص في الصورة المحسّنة. وفقًا لـ Apple (WWDC 2025)، تزداد دقة OCR بنسبة 15–20% عند معالجة الصور مسبقًا عبر Core Image مقارنة بالإطارات الخام من الكاميرا.

حالة استخدام مهمة أخرى للاستخدام المشترك هي تحليل الوجوه في الوقت الفعلي لتطبيقات الواقع المعزز. فيشن يكتشف الوجه ويحدد 68 معلمًا، بينما Core Image يطبق المرشحات على المناطق المكتشفة. ARKit يستخدم فيشن لتتبع الوجه و Core Image لعرض التأثيرات، مما يعطي زمن وصول إجمالي أقل من 16 مللي ثانية على الأجهزة مع شرائح A15+.

عند التطوير في SwiftUI لدمج فيشن، يتم استخدام بروتوكول Representable، الذي يغلف AVCaptureSession و VNImageRequestHandler في UIViewRepresentable. يتم عرض الكاميرا عبر PreviewView، كل إطار يُمرّر إلى VisionRequestHandler عبر AVCaptureVideoDataOutputSampleBufferDelegate. هذا النهج المعماري يحافظ على تفاعلية SwiftUI ويوصل نتائج تحليل فيشن كخصائص @Published لتحديثات فورية للواجهة.

حالات استخدام فيشن

فيشن يُستخدم في مجموعة واسعة من تطبيقات iOS: من ماسحات المستندات إلى تطبيقات الواقع المعزز. لننظر إلى ثلاثة سيناريوهات نموذجية.

مسح المستندات

VNDetectDocumentSegmentationRequest (متاح منذ iOS 17+) يكتشف تلقائيًا حدود المستند في الصورة، يصحح المنظور ويعيد صورة مستقيمة. مدمجًا مع VNRecognizeTextRequest، يُنشئ ماسح OCR كامل قادر على التعرف على الفواتير وبطاقات العمل وصفحات الكتب. وفقًا لـ Apple، تجزئة المستند تستغرق 30–80 مللي ثانية على جهاز مع شريحة A15.

تتبع الأجسام في الفيديو

VNTrackObjectRequest يتتبع حركة كائن مختار بين إطارات الفيديو في الوقت الفعلي. يحدد المطور المستطيل المحيط بالكائن في الإطار الأول، ويحسب فيشن تلقائيًا موقعه الجديد في الإطارات التالية. التتبع يُستخدم في تطبيقات تحليل الفيديو وألعاب الواقع المعزز وأنظمة المراقبة. دقة التتبع على شرائح A16 تبلغ 95% عند سرعات حركة كائن تصل إلى 30 بكسل لكل إطار.

اكتشاف المستطيلات والمحيط

VNDetectRectanglesRequest يجد المناطق المستطيلة في الصورة: شاشات، أوراق، لافتات، مستندات. تعيد API إحداثيات الزوايا مع تصحيح المنظور. بدمج المستطيلات مع VNDetectContoursRequest، يمكن استخراج محيط دقيق للكائن — مفيد لتطبيقات الواقع المعزز ومحررات الرسوم. VNDetectContoursRequest يعيد مصفوفة من نقاط التحكم للمحيط التي يمكن تحويلها إلى UIBezierPath للرسم.

الأسئلة الشائعة

من أي إصدارات iOS يتوفر فيشن؟

iOS 11+ لواجهات البرمجة الأساسية، iOS 13+ للتعرف على النصوص (VNRecognizeTextRequest)، iOS 17+ لتجزئة المستندات. فيشن متاح أيضًا على macOS 10.13+ و iPadOS 13+.

هل يمكن لفيشن العمل مع الفيديو في الوقت الفعلي؟

نعم، فيشن يعالج تدفقات الفيديو عبر VNSequenceRequestHandler و AVFoundation. الإطار يدعم حتى 60 إطارًا في الثانية على الأجهزة مع شرائح A14+ عند استخدام الطلبات السريعة.

ما الفرق بين فيشن و OpenCV؟

فيشن — إطار أصلي من Apple مع تحسين تلقائي لـ ANE و GPU. OpenCV — مكتبة متعددة المنصات بقدرات أوسع لكنها تتطلب تحسينًا يدويًا وبدون دعم Neural Engine.

كيف أضيف نموذج ML مخصص إلى فيشن؟

عبر VNCoreMLRequest: أنشئ نموذج Core ML، فعّل VNCoreMLModel، مرره إلى VNCoreMLRequest وشغّله عبر VNImageRequestHandler. Xcode سيولّد تلقائيًا فئة Swift للنموذج.

هل يدعم فيشن التعرف على المشاعر؟

بشكل غير مباشر — VNDetectFaceLandmarksRequest يحدد موضع نقاط الوجه الرئيسية، و VNDetectFaceExpressionsRequest (iOS 17+) يقيم الابتسامات والغمزات عبر العيون المغلقة.

الخلاصة

  • فيشن — إطار الرؤية الحاسوبية من Apple على الجهاز بمعمارية موحدة VNRequest → VNHandler → VNObservation
  • اكتشاف الوجوه يحدد حتى 68 نقطة مرجعية رئيسية مع تقييم الجودة ودوران الرأس
  • التعرف على النصوص (OCR) يدعم أكثر من 30 لغة في وضعين: سريع ودقيق
  • مسح الرموز الشريطية يعمل مع QR، EAN-13، Code 128، PDF417 و Aztec
  • التكامل مع Core ML عبر VNCoreMLRequest يسمح بتشغيل نماذج مخصصة
  • تتبع الأجسام بين إطارات الفيديو يعمل في الوقت الفعلي حتى 60 إطارًا في الثانية
  • فيشن و Core Image يكملان بعضهما: التعرف + تصفية الصور

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا