Vision: إطار عمل الرؤية الحاسوبية في iOS

المؤلف: IT Sectr نُشر: 2026-07-19 وقت القراءة: 9 دق

Vision هو إطار عمل للرؤية الحاسوبية من Apple، تم تقديمه لأول مرة في iOS 11 في عام 2017. يوفر Vision خوارزميات جاهزة لاكتشاف الوجوه والتعرف على النص (OCR) واكتشاف الرموز الشريطية وتتبع الأشياء وتصنيف الصور وتحليل المحيطات — وكلها تُنفذ على الجهاز باستخدام Neural Engine. وفقاً لـ Apple WWDC 2023، يُستخدم Vision في تطبيق الصور القياسي للتعرف على الوجوه وفي تطبيق الكاميرا لاكتشاف النص في الوقت الفعلي على iPhone و iPad.

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

  • Vision — إطار عمل الرؤية الحاسوبية من Apple مع دورة تحليل كاملة على الجهاز.
  • يدعم اكتشاف الوجوه والتعرف على النص (OCR) والرموز الشريطية والتصنيف وتتبع الأشياء.
  • يعمل من خلال آلية موحدة VNRequest — طلبات إلى صورة أو تدفق فيديو.
  • يتكامل مع Core ML للنماذج المخصصة عبر VNCoreMLRequest.
  • الإطار محسّن لـ Neural Engine على رقائق A12+ للأداء في الوقت الفعلي.

ما هو Vision في iOS؟

Vision هو إطار عمل عالي المستوى للرؤية الحاسوبية يُجرد الخوارزميات المعقدة للتعلم الآلي خلف واجهة برمجة تطبيقات بسيطة للطلبات (VNRequest). لا يحتاج المطور إلى فهم الشبكات العصبية التلافيفية — يكفي إنشاء طلب من النوع المناسب، تمرير صورة والحصول على النتيجة.

تعتمد بنية Vision على مبدأ طلب → معالج → نتيجة: يستقبل VNImageRequestHandler صورة، وينفذ VNRequest، ويعيد مصفوفة من VNObservation مع النتائج. يتيح ذلك دمج طلبات متعددة على صورة واحدة — على سبيل المثال، اكتشاف الوجوه والنص في صورة في وقت واحد.

يدعم Vision iOS 11+ و macOS 10.13+. يتطلب التسريع عبر Neural Engine شريحة A12 Bionic أو أحدث. على الأجهزة المزودة بـ A17 Pro وسلسلة M، يعالج Vision ما يصل إلى 60 إطاراً في الثانية للفيديو المتدفق.

الميزة الرئيسية لـ Vision هي الخصوصية الكاملة: جميع العمليات الحسابية تُنفذ على الجهاز، ولا تُرسل الصور إلى أي خادم. يتيح ذلك استخدام الإطار في التطبيقات التي تتعامل مع بيانات حساسة، مثل التطبيقات الطبية أو المصرفية.

اكتشاف الوجوه والتعرف عليها

VNDetectFaceRectanglesRequest هو الطلب الأساسي في Vision لاكتشاف الوجوه في صورة. يعيد إحداثيات المستطيلات المحيطة بكل وجه، دون تحديد هوية الشخص.

للتحليل الأكثر تفصيلاً، استخدم VNDetectFaceLandmarksRequest، الذي يُحدد النقاط الرئيسية للوجه: العيون والحاجبين والأنف والفم ومحيط الفك. تُستخدم هذه البيانات لتطبيق الأقنعة وتحريك الرموز التعبيرية والمرشحات في الوقت الفعلي (كما في FaceTime و Snapchat).

swift
import Vision
import UIKit

guard let image = UIImage(named: "photo") else { return }
let request = VNDetectFaceRectanglesRequest()
let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])

try handler.perform([request])
for observation in request.results ?? [] {
    let bbox = observation.boundingBox
    print("Face at x=\\(bbox.origin.x), y=\\(bbox.origin.y)")
}

يحتوي VNFaceObservation ليس فقط على boundingBox ولكن أيضاً على confidence (ثقة من 0 إلى 1) و landmarks — مصفوفة من نقاط الوجه إذا كان الطلب من نوع VNDetectFaceLandmarksRequest. الثقة الأقل من 0.5 تشير عادةً إلى نتيجة إيجابية خاطئة — يُوصى بتجاهل هذه النتائج.

يدعم Vision أيضاً VNDetectFaceCaptureQualityRequest، الذي يُقيّم جودة صورة الوجه: الإضاءة والوضوح وزاوية الدوران. هذا مفيد لاختيار أفضل إطار أثناء تسجيل المستخدم أو إنشاء صورة رمزية.

التعرف على النص (OCR) مع Vision

VNRecognizeTextRequest هو محرك OCR المدمج من Apple، الذي تم تقديمه في iOS 13. يتعرف على النص المطبوع في الصور مع دعم 13 لغة: الإنجليزية والروسية والصينية واليابانية والكورية والإيطالية والألمانية والإسبانية والبرتغالية والفرنسية والعربية والفيتنامية والتايلاندية.

يدعم VNRecognizeTextRequest مستويين من الدقة: .fast (سريع، للنص البسيط على خلفية متباينة) و .accurate (دقيق، للمشاهد المعقدة بخطوط وزوايا مختلفة). .fast أسرع بمقدار 3–5 مرات لكنه يتعامل بشكل أقل فعالية مع النص المكتوب بخط اليد والخطوط غير القياسية.

swift
import Vision

let textRequest = VNRecognizeTextRequest { request, _ in
    guard let observations = request.results as? [VNRecognizedTextObservation]
    else { return }
    for observation in observations {
        let topCandidate = observation.topCandidates(1).first
        print(topCandidate?.string ?? "")
    }
}
textRequest.recognitionLevel = .accurate
textRequest.usesLanguageCorrection = true

خاصية usesLanguageCorrection تُفعّل تصحيح النص المُتعرف عليه باستخدام نموذج لغوي. هذا يحسن دقة الإنجليزية بنسبة 10–15% لكنه يزيد من وقت المعالجة. تصحيح اللغة الروسية متاح أيضاً عند تحديد التعرف المناسب.

وفقاً لـ Apple ML Research 2022، تصل دقة VNRecognizeTextRequest في مستوى .accurate إلى 96% للصور الواضحة للمستندات بالإنجليزية وحوالي 88% للروسية. بالنسبة للنص على العبوات واللافتات والشاشات، تنخفض الدقة إلى 75–85%.

مستوى التعرفالسرعةالدقة (الإنجليزية)دعم الروسية
.fast0.1–0.3 ث~85%نعم
.accurate0.3–1.0 ث~96%نعم

اكتشاف الرموز الشريطية ورموز QR

VNDetectBarcodesRequest — طلب Vision لاكتشاف وفك تشفير الرموز الشريطية ورموز QR في الصور. جميع التنسيقات الرئيسية مدعومة: EAN-8 و EAN-13 و UPC-A و UPC-E و Code 39 و Code 93 و Code 128 و PDF417 و Aztec و QR.

على عكس AVFoundation (AVCaptureMetadataOutput)، لا يعمل Vision مع تدفقات الفيديو فقط بل أيضاً مع الصور الثابتة — مما يسمح بمسح الرموز من الصور الموجودة أو لقطات الشاشة. يحدد Vision أيضاً boundingBox للرمز بدقة بكسل، مما يسهل تحريك إطار حول الرمز المكتشف.

swift
import Vision

let barcodeRequest = VNDetectBarcodesRequest { request, _ in
    guard let observations = request.results as? [VNBarcodeObservation]
    else { return }
    for observation in observations {
        let payload = observation.payloadStringValue ?? ""
        print("Barcode: \\(payload), Symbology: \\(observation.symbology.rawValue)"
    }
}

يحتوي VNBarcodeObservation على payloadStringValue (المحتوى المُفكوك)، symbology (نوع الرمز) و confidence. لرموز QR، يمكن أن يكون المحتوى عنوان URL أو نصاً أو JSON. لـ EAN/UPC، يتم إرجاع رمز منتج رقمي يمكن استخدامه للبحث عن العنصر في قاعدة بيانات.

يمكن لـ Vision معالجة رموز شريطية متعددة في صورة واحدة — مصفوفة observations تحتوي على كائن واحد لكل رمز مكتشف. هذا مفيد لمسح دفعات من المنتجات أو مستندات برموز شريطية متعددة.

تتبع الأشياء في تدفق الفيديو

VNDetectObjectAtPointRequest و VNSequenceRequestHandler — أدوات Vision لتتبع الأشياء في تدفق الفيديو. الأول يُحدد الشيء بنقطة لمس المستخدم، والثاني يتتبع الشيء بين إطارات الفيديو.

VNSequenceRequestHandler يستقبل سلسلة من الصور (إطارات الفيديو) ويعيد الموضع المحدث للشيء المتتبع لكل إطار. يُستخدم هذا في تطبيقات الواقع المعزز ومحرري الفيديو وأنظمة المراقبة.

swift
import Vision

let trackingRequest = VNTrackObjectRequest(detectedObjectObservation: initialObservation)
let sequenceHandler = VNSequenceRequestHandler()

for frame in videoFrames {
    try sequenceHandler.perform([trackingRequest],
        on: frame.cgImage!)
    let newBBox = trackingRequest.results?.first?.boundingBox
    // تحديث موضع الكائن على الشاشة
}

VNTrackObjectRequest يستخدم خوارزمية تتبع تعتمد على التدفق البصري — لا يعيد تدريب المكتشف على كل إطار بل يحسب إزاحة الشيء بالنسبة لموقعه السابق. يتيح ذلك العمل في الوقت الفعلي حتى على الأجهزة دون Neural Engine.

القيود: قد يفقد التتبع الشيء أثناء الحركة السريعة أو الإطباق أو التغيرات المفاجئة في الإضاءة. توصي Apple بإعادة تشغيل الكشف (VNDetectObjectAtPointRequest) كل 10–15 إطاراً لتصحيح التتبع.

تصنيف الصور وتحليل المحيطات

VNClassifyImageRequest — النموذج المدمج في Vision لتصنيف الصور إلى 1000 فئة (نموذج ResNet-50 المدرب على ImageNet). يعيد الطلب مصفوفة من VNClassificationObservation مع اسم الفئة والثقة.

VNDetectContoursRequest يُحلل محيطات الصورة — يستخرج حدود الأشياء، وهو مفيد للتجزئة والتحديد والمعالجة المسبقة قبل التعرف. يعيد الطلب مصفوفة من النقاط تصف كل محيط في الصورة.

swift
import Vision

// تصنيف الصور
let classificationRequest = VNClassifyImageRequest { request, _ in
    guard let results = request.results as? [VNClassificationObservation]
    else { return }
    let topMatch = results.prefix(3).filter { $0.confidence > 0.3 }
    for match in topMatch {
        print("\\(match.identifier): \\(match.confidence)"
    }
}

VNClassifyImageRequest يعمل جيداً للفئات العامة (قطة، كلب، سيارة، طعام) لكنه غير مناسب للأشياء المحددة — لهذه تحتاج إلى تدريب نموذج Core ML مخصص واستخدام VNCoreMLRequest. نموذج Apple محسّن للأجهزة المحمولة ويشغل 5 MB فقط.

VNDetectContoursRequest يعيد المحيطات كمصفوفة من النقاط مع نوع المحيط (خارجي، داخلي، ثقب). يُستخدم هذا الطلب للمعالجة المسبقة للصور قبل OCR (تحسين تباين النص) ولرسم التأثيرات (تحديد الأشياء) ولتحليل الأشكال.

طلب Visionالغرضإصدار iOS
VNDetectFaceRectanglesRequestالبحث عن الوجوه في الصورiOS 11
VNRecognizeTextRequestالتعرف على النص (OCR)iOS 13
VNDetectBarcodesRequestكشف الرموز الشريطية و QRiOS 11
VNClassifyImageRequestتصنيف الصورiOS 13
VNDetectContoursRequestتحليل المحيطاتiOS 14
VNTrackObjectRequestتتبع الأشياءiOS 11

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

ما الفرق بين Vision و Core ML للرؤية الحاسوبية؟

Vision يوفر خوارزميات جاهزة (اكتشاف الوجوه، OCR، الرموز الشريطية) دون تدريب نموذج. Core ML هو محرك لتنفيذ النماذج المخصصة. يسمح Vision + VNCoreMLRequest بتشغيل نماذج Core ML في خط أنابيب Vision، للحصول على أفضل ما في العالمين: كاشفات Vision الجاهزة + تصنيف Core ML المخصص.

هل يعمل Vision في الوقت الفعلي على الفيديو؟

نعم، Vision يدعم معالجة تدفق الفيديو في الوقت الفعلي عبر VNSequenceRequestHandler للتتبع وعبر AVCaptureVideoDataOutput للمعالجة إطاراً بإطار. على الأجهزة المزودة بـ A12+ و Neural Engine، يعالج Vision ما يصل إلى 60 إطاراً في الثانية لاكتشاف الوجوه. للمهام الثقيلة (OCR، التصنيف)، يُوصى بمعالجة كل 5–10 إطار.

ما اللغات التي يدعمها VNRecognizeTextRequest؟

VNRecognizeTextRequest يدعم 13 لغة: الإنجليزية والروسية والصينية (المبسطة والتقليدية) واليابانية والكورية والإيطالية والألمانية والإسبانية والبرتغالية والفرنسية والعربية والفيتنامية والتايلاندية. للتعرف على لغات متعددة في صورة واحدة، حدد مصفوفة في خاصية recognitionLanguages.

هل يمكن استخدام Vision مع نموذج Core ML؟

نعم، عبر VNCoreMLRequest. تقوم بإنشاء نموذج Core ML مغلف في VNCoreMLModel وتمريره إلى VNCoreMLRequest. يعالج Vision تلقائياً المعالجة المسبقة للصورة (التحجيم، القص) ويغذيها لنموذج Core ML. يتم إرجاع النتيجة كـ VNCoreMLFeatureValueObservation مع بيانات مخرجات النموذج.

هل يرسل Vision الصور إلى خادم Apple؟

لا، Vision ينفذ جميع التحليلات بالكامل على الجهاز. لا تغادر الصور جهاز المستخدم أبداً. هذه هي البنية الأساسية لـ Apple: جميع أطر ML (Vision و NaturalLanguage و Core ML و Speech) تعمل على الجهاز لضمان الخصوصية. لا يتم إرسال أي بيانات إلى خوادم Apple.

الخلاصة

  • Vision — إطار عمل الرؤية الحاسوبية من Apple مع واجهة برمجة تطبيقات قائمة على VNRequest، متاح منذ iOS 11 على جميع أجهزة Apple.
  • VNDetectFaceRectanglesRequest و VNDetectFaceLandmarksRequest يكتشفان الوجوه والنقاط الرئيسية للمرشحات والأقنعة والرسوم المتحركة.
  • VNRecognizeTextRequest — OCR مدمج لـ 13 لغة بمستويات .fast و .accurate ودقة تصل إلى 96% للمستندات.
  • VNDetectBarcodesRequest يفك تشفير جميع تنسيقات الرموز الشريطية و QR الشائعة في كل من الصور وتدفقات الفيديو.
  • VNTrackObjectRequest يتتبع الأشياء بين إطارات الفيديو عبر التدفق البصري دون إعادة تدريب المكتشف.
  • التكامل مع Core ML عبر VNCoreMLRequest يتيح تشغيل نماذج التصنيف والكشف المخصصة داخل خط أنابيب Vision.
  • جميع العمليات الحسابية تُنفذ على الجهاز باستخدام Neural Engine — دون إرسال الصور إلى الخوادم وخصوصية كاملة للبيانات.

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

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

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

اقرأ أيضًا