فيشن هو إطار الرؤية الحاسوبية من Apple، مدمج في iOS، macOS و iPadOS، ويوفر واجهات برمجة تطبيق جاهزة لتحليل الصور والفيديو والبيانات في الوقت الفعلي. يشمل اكتشاف الوجوه، التعرف على النصوص، الرموز الشريطية، محيط الأجسام وتتبع الحركة — كله على الجهاز دون إرسال البيانات إلى خادم. وفقًا لـ Apple Vision Documentation (2026)، يعالج الإطار ما يصل إلى 60 إطارًا في الثانية على الأجهزة مع شريحة A14 وأحدث.
النقاط الرئيسية
فيشن هو إطار عالي المستوى للرؤية الحاسوبية قدمته 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 هي فئة أساسية مجردة ترث منها جميع طلبات فيشن المحددة. كل طلب يحتوي على completionHandler، معلمات تكوين، و regionOfInterest لمعالجة جزء من الصورة. بعد إنشاء الطلب، يتم تمريره إلى VNImageRequestHandler (للصور الثابتة) أو VNSequenceRequestHandler (لتدفقات الفيديو). تعاد النتائج كمصفوفة من الملاحظات — فئات فرعية من VNObservation.
VNDetectFaceRectanglesRequest يجد جميع الوجوه في صورة ويعيد مستطيلاتها المحددة. VNDetectFaceLandmarksRequest يحدد بالإضافة 68 نقطة مرجعية رئيسية: محيط العيون، الحواجب، الأنف، الشفاه والفك. VNDetectFaceCaptureQualityRequest يقيم جودة التقاط الوجه — من 0 إلى 1 — مفيد للقياسات الحيوية. وفقًا لـ Apple، دقة اكتشاف الوجوه على الأجهزة مع Neural Engine تصل إلى 99% في الزوايا الأمامية.
VNRecognizeTextRequest هي واجهة البرمجة للتعرف البصري على الأحرف (OCR) في الصور. يدعم النصوص المطبوعة باللاتينية والسيريلية والصينية واليابانية والكورية واللغات الأخرى. النتيجة هي مصفوفة من كائنات VNRecognizedTextObservation، كل منها يحتوي على نص، مستطيل محدد ومستوى ثقة. يتوفر وضعان: سريع (Fast) لمسح المستندات ودقيق (Accurate) للخطوط المعقدة.
لاستخدام فيشن، قم باستيراد الإطار، أنشئ كائن VNRequest وأرسله إلى VNImageRequestHandler. لننظر إلى مثال للتعرف على النصوص في صورة.
يقوم الكود بإنشاء VNRecognizeTextRequest بوضع التعرف الدقيق، تشغيله على صورة وإخراج النص المتعرف عليه في الوحدة الطرفية. يوضح هذا المثال البسيط أدنى الدمج لفيشن في مشروع 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 وينفّذ الطلب. تحتوي النتائج على نصوص متعرف عليها مع مستطيلات محددة ودرجات ثقة لكل رمز. يمكن عرض مصفوفة VNRecognizedTextObservation بسهولة على الشاشة.
لمعالجة الفيديو في الوقت الفعلي، استخدم VNSequenceRequestHandler بدلاً من VNImageRequestHandler. يقبل مصفوفة من الصور (الإطارات) وينفّذ نفس الطلب بالتسلسل، محافظًا على الحالة بين الإطارات — أساسي لتتبع الأجسام. VNSequenceRequestHandler يدير الذاكرة تلقائيًا: تتم إزالة الملاحظات القديمة عندما يغادر الكائن الإطار. يعتمد الأداء في الوقت الفعلي على تعقيد الطلب: يعمل اكتشاف الوجوه بمعدل 60 إطارًا في الثانية، بينما يعمل التعرف على النصوص بمعدل 15–30 إطارًا في الثانية على الأجهزة مع شريحة A16.
فيشن و Core Image هما إطاران من Apple للعمل مع الصور، لكنهما يحلّان مهامًا مختلفة جوهريًا. Core Image هو إطار لتصفية وتحويل الصور (تطبيق المرشحات، تصحيح الألوان، التمويه). فيشن هو إطار لفهم محتوى الصورة: ما هو مصور فيها.
| الخاصية | فيشن | Core Image |
|---|---|---|
| المهمة | تحليل وتعرف | تصفية ومعالجة |
| اكتشاف الوجوه | نعم، مع المعالم | CIDetector فقط |
| التعرف على النصوص | نعم (OCR) | لا |
| المرشحات | لا | أكثر من 200 مرشح |
| التكامل مع Core ML | نعم (VNCoreMLRequest) | لا |
| تتبع الأجسام | نعم (VNTrackObjectRequest) | لا |
| الأداء | محسّن لـ ANE | GPU (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 11+ لواجهات البرمجة الأساسية، iOS 13+ للتعرف على النصوص (VNRecognizeTextRequest)، iOS 17+ لتجزئة المستندات. فيشن متاح أيضًا على macOS 10.13+ و iPadOS 13+.
نعم، فيشن يعالج تدفقات الفيديو عبر VNSequenceRequestHandler و AVFoundation. الإطار يدعم حتى 60 إطارًا في الثانية على الأجهزة مع شرائح A14+ عند استخدام الطلبات السريعة.
فيشن — إطار أصلي من Apple مع تحسين تلقائي لـ ANE و GPU. OpenCV — مكتبة متعددة المنصات بقدرات أوسع لكنها تتطلب تحسينًا يدويًا وبدون دعم Neural Engine.
عبر VNCoreMLRequest: أنشئ نموذج Core ML، فعّل VNCoreMLModel، مرره إلى VNCoreMLRequest وشغّله عبر VNImageRequestHandler. Xcode سيولّد تلقائيًا فئة Swift للنموذج.
بشكل غير مباشر — VNDetectFaceLandmarksRequest يحدد موضع نقاط الوجه الرئيسية، و VNDetectFaceExpressionsRequest (iOS 17+) يقيم الابتسامات والغمزات عبر العيون المغلقة.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.