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

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

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

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

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

تعديل cocoapods

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

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

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

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

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

التغييرات الخاصة بواجهة برمجة التطبيقات

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

FaceDetector

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

GMV

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. يمكن استدعاء واجهة برمجة التطبيقات للاستدلال بشكل متزامن أو غير متزامن.

متزامن

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

بدون تزامن

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

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

GMV حزمة تعلّم الآلة
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary من خيارات التعرّف على الوجوه MLKFaceDetectorOptions
GMVDetectorFaceFastMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeFast
GMVDetectorFaceAccurateMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeAccurate
GMVDetectorFaceSelfieMode Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceLandmarkType MLKFaceDetectorOptions.landmarkMode
GMVDetectorFaceLandmarkNone Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeNone
GMVDetectorFaceLandmarkAll Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeAll
GMVDetectorFaceLandmarkContour Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceClassificationType MLKFaceDetectorOptions.classificationMode
GMVDetectorFaceClassificationNone Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeNone
GMVDetectorFaceClassificationAll Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeAll
GMVDetectorFaceTrackingEnabled MLKFaceDetectorOptions.trackingEnabled
GMVDetectorProminentFaceOnly Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceMinSize MLKFaceDetectorOptions.minFaceSize

BarcodeDetector

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

GMV

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. يمكن استدعاء واجهة برمجة التطبيقات للاستدلال بشكل متزامن أو غير متزامن.

متزامن

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

بدون تزامن

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

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

GMV حزمة تعلّم الآلة
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary من خيارات أداة رصد الرموز الشريطية MLKBarcodeScannerOptions
GMVDetectorBarcodeFormats MLKBarcodeScannerOptions.formats
GMVBarcodeFeature MLKBarcode
GMVBarcodeFeatureAddress MLKBarcodeAddress
GMVBarcodeFeatureCalendarEvent MLKBarcodeCalendarEvent
GMVBarcodeFeatureContactInfo MLKBarcodeContactInfo
GMVBarcodeFeatureDriverLicense MLKBarcodeDriverLicense
GMVBarcodeFeatureEmail MLKBarcodeEmail
GMVBarcodeFeatureGeoPoint MLKBarcodeGeoPoint
GMVBarcodeFeaturePersonName MLKBarcodePersonName
GMVBarcodeFeaturePhone MLKBarcodePhone
GMVBarcodeFeatureSMS MLKBarcodeSMS
GMVBarcodeFeatureURLBookmark MLKBarcodeURLBookmark
GMVBarcodeFeatureWiFi MLKBarcodeWiFi

TextRecognition

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

GMV

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. يمكن استدعاء واجهة برمجة التطبيقات للاستدلال بشكل متزامن أو غير متزامن.

متزامن

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

بدون تزامن

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

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

GMV حزمة تعلّم الآلة
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

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

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