本文件將說明將專案從何處遷移 Google Mobile Vision (GMV) 到 ML Kit iOS 版。
必要條件
開始遷移程式碼前,請確認您符合下列規定:
- ML Kit 支援 Xcode 13.2.1 以上版本。
- ML Kit 支援 iOS 10 以上版本。
- ML Kit 不支援 32 位元架構 (i386 和 armv7)。ML Kit 支援 64 位元架構 (x86_64 和 arm64)。
更新 Cocoapods
在應用程式的 Podfile 中,更新 ML Kit iOS Cocoapod 的依附元件:
API | GMV 廣告連播 | ML Kit Pod |
---|---|---|
條碼掃描 | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
臉部偵測 | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
文字辨識 | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
整體 API 異動
以下異動適用於所有 API:
- GMV 的推論 API 會以
UIImage
或CMSampleBufferRef
做為輸入內容。ML Kit 將這些內容納入MLKVisionImage
中,並將其做為輸入內容。 - GMV 會使用
NSDictionary
傳遞各種偵測工具選項。ML Kit 為此使用專屬選項類別。 - GMV 會在擷取偵測工具時,將偵測工具類型傳遞至單一
GMVDetector
類別。ML Kit 會使用專屬類別建立單獨的偵測工具、掃描器和辨識工具執行個體。 - GMV 的 API 僅支援同步偵測。ML Kit 的推論 API 可以同步且非同步呼叫。
- GMV 可擴充
AVCaptureVideoDataOutput
,並提供多偵測工具架構,可同時執行多項偵測。ML Kit 不提供這類機制,但開發人員可視需求導入相同的功能。
API 專屬變更
本節說明各 Vision API 的對應 GMV 和 ML Kit 類別與方法,以及如何初始化 API。
FaceDetector
重新編寫初始化程序,如以下範例所示:
GMV
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
ML Kit
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:));
變更下列類別、方法和名稱:
BarcodeDetector
重新編寫初始化程序,如以下範例所示:
GMV
NSDictionary *options = @{ GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 | GMVDetectorBarcodeFormatQRCode) }; GMVDetector *barcodeDetector = [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
ML Kit
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:));
變更下列類別、方法和名稱:
TextRecognition
重新編寫初始化程序,如以下範例所示:
GMV
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
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:));
變更下列類別、方法和名稱:
GMV | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
取得說明
如有任何問題,請前往我們的社群頁面 我們整理出了可與我們聯絡的管道。