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

يتناول هذا المستند الخطوات التي تحتاج إلى اتخاذها لنقل مشروعاتك من Google Mobile Vision (GMV) إلى ML Kit على أجهزة iOS.

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

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

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

تعديل cocoapods

يمكنك تعديل الاعتماديات الخاصة بالاشتراكات التعاونية في حزمة ML Kit على نظام التشغيل iOS في ملف Podfile الخاص بتطبيقك:

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

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

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

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

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

يصف هذا القسم فئات 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

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

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