این سند مراحلی را که باید برای انتقال پروژههای خود از Google Mobile Vision (GMV) به ML Kit در iOS انجام دهید، پوشش میدهد.
پیش نیازها
قبل از شروع به انتقال کد خود، مطمئن شوید که شرایط زیر را دارید:
- ML Kit از Xcode 13.2.1 یا جدیدتر پشتیبانی می کند.
- ML Kit از iOS نسخه 15.5 یا بالاتر پشتیبانی می کند.
- ML Kit از معماری های 32 بیتی (i386 و armv7) پشتیبانی نمی کند. ML Kit از معماری های 64 بیتی (x86_64 و arm64) پشتیبانی می کند.
کوکوپودها را به روز کنید
وابستگی های کوکوپودهای iOS کیت ML را در فایل پادفایل برنامه خود به روز کنید:
API | جی ام وی پاد | کیت غلاف ML |
---|---|---|
اسکن بارکد | GoogleMobileVision/BarcodeDetector | GoogleMLKit/BarcodeScanning |
تشخیص چهره | GoogleMobileVision/FaceDetector | GoogleMLKit/FaceDetection |
تشخیص متن | GoogleMobileVision/TextDetector | GoogleMLKit/TextRecognition |
تغییرات کلی API
این تغییرات برای همه API ها اعمال می شود:
- API های استنتاج GMV
UIImage
یاCMSampleBufferRef
را به عنوان ورودی می گیرند. کیت ML آنها را در داخل یکMLKVisionImage
می پیچد و آن را به عنوان ورودی می گیرد. - GMV از
NSDictionary
برای عبور گزینه های مختلف آشکارساز استفاده می کند. ML Kit از کلاس های گزینه های اختصاصی برای این منظور استفاده می کند. - GMV هنگامی که یک آشکارساز ایجاد می کند، نوع آشکارساز را به کلاس
GMVDetector
منفرد منتقل می کند. ML Kit از کلاسهای اختصاصی برای ایجاد نمونههای آشکارساز، اسکنر و شناسایی جداگانه استفاده میکند. - API های GMV فقط از تشخیص همزمان پشتیبانی می کنند. API های استنتاج ML Kit را می توان به صورت همزمان و ناهمزمان فراخوانی کرد.
- GMV
AVCaptureVideoDataOutput
گسترش می دهد و یک چارچوب چند آشکارساز برای انجام چندین تشخیص به طور همزمان فراهم می کند. ML Kit چنین مکانیزمهایی را ارائه نمیکند، اما در صورت تمایل، توسعهدهنده میتواند آن را پیادهسازی کند.
تغییرات ویژه API
این بخش کلاسها و روشهای مربوط به GMV و ML Kit را برای هر Vision API توضیح میدهد و نحوه تنظیم اولیه API را نشان میدهد.
تشخیص چهره
همانطور که در این مثال نشان داده شده است، مقداردهی اولیه را دوباره کدگذاری کنید:
جی ام وی
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
دو API تشخیص متفاوت دارد. هر دو عملیات همزمان هستند:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
GMVDetector
با MLKFaceDetector
جایگزین کنید. API استنتاج را می توان به صورت همزمان یا ناهمزمان فراخوانی کرد.
همزمان
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
ناهمزمان
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
کلاس ها، متدها و نام های زیر را تغییر دهید:
بارکد یاب
همانطور که در این مثال نشان داده شده است، مقداردهی اولیه را دوباره کدگذاری کنید:
جی ام وی
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
دو API تشخیص متفاوت دارد. هر دو عملیات همزمان هستند:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
GMVDetector
با MLKBarcodeScanner
جایگزین کنید. API استنتاج را می توان به صورت همزمان یا ناهمزمان فراخوانی کرد.
همزمان
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
ناهمزمان
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
کلاس ها، متدها و نام های زیر را تغییر دهید:
تشخیص متن
همانطور که در این مثال نشان داده شده است، مقداردهی اولیه را دوباره کدگذاری کنید:
جی ام وی
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
کیت ام ال
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
دو API تشخیص متفاوت دارد. هر دو عملیات همزمان هستند:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
GMVDetector
با MLKTextRecognizer
جایگزین کنید. API استنتاج را می توان به صورت همزمان یا ناهمزمان فراخوانی کرد.
همزمان
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
ناهمزمان
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
کلاس ها، متدها و نام های زیر را تغییر دهید:
جی ام وی | کیت ام ال |
---|---|
GMVDetectorImageOrientation | MLKVisionImage.orientation |
GMVTextBlockFeature | MLKTextBlock |
GMVTextElementFeature | MLKTextElement |
GMVTextLineFeature | MLKTextLine |
کمک گرفتن
اگر با مشکلی مواجه شدید، صفحه انجمن ما را بررسی کنید، جایی که ما کانال های موجود برای تماس با ما را مشخص می کنیم.