يتناول هذا المستند الخطوات التي يجب اتّخاذها لنقل مشاريعك من Google Mobile Vision (GMV) إلى حزمة تعلّم الآلة على أجهزة iOS.
المتطلبات الأساسية
قبل البدء في نقل الرمز، تأكَّد من استيفاء المتطلبات التالية:
- تتوافق حزمة ML Kit مع الإصدار 13.2.1 من Xcode أو الإصدارات الأحدث.
- تتوافق حزمة تعلّم الآلة مع الإصدار 15.5 من نظام التشغيل iOS أو الإصدارات الأحدث.
- لا تتوافق حزمة تعلُّم الآلة مع بنى 32 بت (i386 وarmv7). تتوافق حزمة تعلُّم الآلة (ML Kit) مع بنى 64 بت (x86_64 وarm64).
تعديل cocoapods
عدِّل التبعيات الخاصة بـ cocoapods في حزمة تعلّم الآلة لنظام التشغيل iOS في ملف Podfile الخاص بتطبيقك:
| واجهة برمجة التطبيقات | كبسولة قيمة المتاجرة الإجمالية | حزمة تعلّم الآلة |
|---|---|---|
| المسح الضوئي للرموز الشريطية | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
| التعرّف على الوجوه | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
| التعرّف على النص | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
التغييرات العامة في واجهة برمجة التطبيقات
تنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:
- تتلقّى واجهات برمجة التطبيقات للاستدلال في GMV
UIImageأوCMSampleBufferRefكمدخلات. تغلّف حزمة تعلُّم الآلة هذه القيم داخلMLKVisionImageوتستخدمها كمدخلات. - تستخدم GMV
NSDictionaryلتمرير خيارات مختلفة للكاشف. تستخدم حزمة تعلّم الآلة فئات خيارات مخصّصة لهذا الغرض. - تمرِّر GMV نوع أداة الرصد إلى فئة
GMVDetectorالفردية عند إنشاء أداة رصد. تستخدم حزمة تعلّم الآلة فئات مخصّصة لإنشاء مثيلات منفصلة لأدوات الرصد والماسحات الضوئية وأدوات التعرّف. - تتيح واجهات برمجة التطبيقات في "خرائط Google" إمكانية الرصد المتزامن فقط. يمكن استدعاء واجهات برمجة التطبيقات للاستدلال في ML Kit بشكل متزامن وغير متزامن.
- توسّع GMV نطاق
AVCaptureVideoDataOutputوتوفّر إطار عمل متعدد الكاشفات لإجراء عمليات رصد متعددة في الوقت نفسه. لا توفّر حزمة تعلّم الآلة آليات من هذا النوع، ولكن يمكن للمطوّر تنفيذ الوظيفة نفسها إذا أراد ذلك.
التغييرات الخاصة بواجهة برمجة التطبيقات
يوضّح هذا القسم فئات وأساليب GMV و حزمة تعلّم الآلة المقابلة لكل 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:));
غيِّر الفئات والطُرق والأسماء التالية:
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:));
غيِّر الفئات والطُرق والأسماء التالية:
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
|
الحصول على المساعدة
إذا واجهت أي مشاكل، يُرجى الاطّلاع على صفحة المنتدى حيث نوضّح القنوات المتاحة للتواصل معنا.