Dokumen ini membahas langkah-langkah yang perlu Anda lakukan untuk memigrasikan project dari Google Mobile Vision (GMV) ke ML Kit di iOS.
Prasyarat
Sebelum mulai memigrasikan kode, pastikan Anda memenuhi persyaratan berikut:
- ML Kit mendukung Xcode 13.2.1 atau yang lebih baru.
- ML Kit mendukung iOS versi 15.5 atau yang lebih baru.
- ML Kit tidak mendukung arsitektur 32-bit (i386 dan armv7). ML Kit mendukung arsitektur 64-bit (x86_64 dan arm64).
Mengupdate cocoapods
Perbarui dependensi untuk cocoapods iOS ML Kit di Podfile aplikasi Anda:
API | Pod GMV | Pod ML Kit |
---|---|---|
Pemindaian kode batang | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
Deteksi wajah | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
Pengenalan teks | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Perubahan API secara keseluruhan
Perubahan ini berlaku untuk semua API:
- API inferensi GMV menggunakan
UIImage
atauCMSampleBufferRef
sebagai input. ML Kit menggabungkannya di dalamMLKVisionImage
dan menggunakannya sebagai input. - GMV menggunakan
NSDictionary
untuk meneruskan berbagai opsi detektor. ML Kit menggunakan class opsi khusus untuk tujuan tersebut. - GMV meneruskan jenis detektor ke class
GMVDetector
tunggal saat membuat detektor. ML Kit menggunakan class khusus untuk membuat instance pendeteksi, pemindai, dan pengenal terpisah. - API GMV hanya mendukung deteksi sinkron. API inferensi ML Kit dapat dipanggil secara sinkron dan asinkron.
- GMV memperluas
AVCaptureVideoDataOutput
dan menyediakan framework multi-detektor untuk melakukan beberapa deteksi secara bersamaan. ML Kit tidak menyediakan mekanisme tersebut, tetapi fungsi yang sama dapat diterapkan oleh developer jika diinginkan.
Perubahan khusus API
Bagian ini menjelaskan class dan metode GMV dan ML Kit yang sesuai untuk setiap Vision API, dan menunjukkan cara menginisialisasi API.
FaceDetector
Kode ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:
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
memiliki dua
API deteksi yang berbeda. Keduanya adalah operasi sinkron:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Ganti GMVDetector
dengan MLKFaceDetector
.
API inferensi dapat dipanggil secara sinkron atau asinkron.
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Ubah class, metode, dan nama berikut:
BarcodeDetector
Kode ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:
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
memiliki dua API deteksi yang berbeda. Keduanya adalah operasi sinkron:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Ganti GMVDetector
dengan
MLKBarcodeScanner
.
API inferensi dapat dipanggil secara sinkron atau asinkron.
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Ubah class, metode, dan nama berikut:
TextRecognition
Kode ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
memiliki dua
API deteksi yang berbeda. Keduanya adalah operasi sinkron:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Ganti GMVDetector
dengan
MLKTextRecognizer
.
API inferensi dapat dipanggil secara sinkron atau asinkron.
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Ubah class, metode, dan nama berikut:
GMV | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Mendapatkan bantuan
Jika Anda mengalami masalah, lihat halaman Komunitas kami yang menjelaskan saluran yang tersedia untuk menghubungi kami.