يتناول هذا المستند الخطوات التي تحتاج إلى اتخاذها لنقل مشروعاتك من 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:));
غيِّر الفئات والطرق والأسماء التالية:
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
|
الحصول على المساعدة
إذا واجهت أيّ مشاكل، يُرجى الاطّلاع على صفحة "المنتدى". حيث نحدد القنوات المتاحة للتواصل معنا.