الانتقال من Mobile Vision إلى ML Kit على نظام التشغيل iOS

يتناول هذا المستند الخطوات التي يجب اتّخاذها لنقل بيانات مشاريعك من Google Mobile Vision (GMV) إلى ML Kit على نظام التشغيل iOS.

المتطلبات الأساسية

قبل بدء نقل الرمز البرمجي، تأكَّد من استيفاء المتطلبات التالية:

  • تتوافق "حزمة تعلُّم الآلة" مع الإصدار 13.2.1 من Xcode أو الإصدارات الأحدث.
  • تتوافق "حزمة تعلُّم الآلة من Google" مع الإصدار 15.5 من نظام التشغيل iOS أو الإصدارات الأحدث.
  • لا تتوافق "حزمة تعلُّم الآلة" مع البنى الأساسية التي تعمل بنظام 32 بت (i386 وarmv7). تتوافق حزمة ML Kit مع البنى الأساسية التي تعمل بنظام 64 بت (x86_64 وarm64).

تحديث cocoapods

عدِّل التبعيات لواجهة برمجة التطبيقات ML Kit iOS cocoapods في ملف Podfile الخاص بتطبيقك:

واجهة برمجة التطبيقاتمجموعة المتاجرة الإجمالية (GMV)مجموعة ML Kit
مسح الرموز الشريطية ضوئيًا GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
التعرّف على الوجوه GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
التعرّف على النص GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

التغييرات العامة في واجهة برمجة التطبيقات

تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:

  • تأخذ واجهات برمجة التطبيقات الخاصة بعملية الاستنتاج في GMV UIImage أو CMSampleBufferRef كمدخلات. وتُغلِّف حزمة ML Kit هذه العناصر داخل MLKVisionImage وتستخدِمها كمدخل.
  • يستخدم GMV NSDictionary لتمرير خيارات مختلفة للكاشف. تستخدِم ML Kit فئات خيارات مخصّصة لهذا الغرض.
  • تمرّر GMV نوع أداة الرصد إلى فئة GMVDetector الفردية عند إنشاء أداة رصد. تستخدِم ML Kit فئات مخصّصة لإنشاء نُسخ منفصلة من أدوات الرصد والفحص والتعرّف.
  • لا تتوافق واجهات برمجة تطبيقات GMV إلا مع ميزة رصد المحتوى المتزامن. يمكن استدعاء واجهات برمجة التطبيقات الخاصة بعملية الاستنتاج في ML Kit بشكل متزامن وغير متزامن.
  • توفّر ميزة "التعرّف على المحتوى البشري" AVCaptureVideoDataOutput وإطار عمل متعدد للكشف لإجراء عمليات رصد متعددة في الوقت نفسه. لا توفّر حزمة ML Kit آليات مماثلة، ولكن يمكن للمطوّر تنفيذ الوظيفة نفسها إذا شاء.

التغييرات المتعلّقة بواجهة برمجة التطبيقات

يوضّح هذا القسم فئات وطُرق GMV وML Kit المقابلة لكل واجهة برمجة تطبيقات Vision API، ويعرض كيفية إعداد واجهة برمجة التطبيقات.

FaceDetector

أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:

NSDictionary *options = @{
    GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode),
    GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
    GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll)
};
GMVDetector *faceDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init];
options.performanceMode = MLKFaceDetectorPerformanceModeAccurate;
options.classificationMode = MLKFaceDetectorClassificationModeAll;
options.landmarkMode = MLKFaceDetectorLandmarkModeAll;
MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];

يحتوي GMVDetector على واجهتَي برمجة تطبيقات مختلفتَين للرصد. وكلاهما عمليات متزامنة:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

استبدِل GMVDetector بـ MLKFaceDetector. يمكن استدعاء Inference API بشكل متزامن أو غير متزامن.

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

غيِّر الفئات والطُرق والأسماء التالية:

BarcodeDetector

أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:

NSDictionary *options = @{
    GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 |
                                  GMVDetectorBarcodeFormatQRCode)
};
GMVDetector *barcodeDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init];
options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode;
MLKBarcodeScanner *barcodeScanner =
    [MLKBarcodeScanner barcodeScannerWithOptions:options];

تتضمّن GMVDetector وجهتَي برمجة تطبيقات مختلفتَين للرصد. وكلاهما عمليات متزامنة:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

استبدِل GMVDetector ب MLKBarcodeScanner. يمكن استدعاء Inference API بشكل متزامن أو غير متزامن.

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

غيِّر الفئات والطُرق والأسماء التالية:

TextRecognition

أعِد ترميز عملية الإعداد كما هو موضّح في هذا المثال:

GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

يحتوي GMVDetector على واجهتَي برمجة تطبيقات مختلفتَين للرصد. وكلاهما عمليات متزامنة:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

استبدِل GMVDetector ب MLKTextRecognizer. يمكن استدعاء Inference API بشكل متزامن أو غير متزامن.

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

غيِّر الفئات والطُرق والأسماء التالية:

الحصول على المساعدة

إذا واجهت أي مشاكل، يمكنك الاطّلاع على صفحة "المنتدى" التي توضّح القنوات المتاحة للتواصل معنا.