Dokumen ini membahas langkah-langkah yang perlu Anda lakukan untuk memigrasikan project Anda 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 10 atau yang lebih baru.
- ML Kit tidak mendukung arsitektur 32-bit (i386 dan armv7). ML Kit mendukung arsitektur 64-bit (x86_64 dan arm64).
Perbarui kakaopod
Perbarui dependensi untuk cocoapod 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 mengambilnya sebagai input. - GMV menggunakan
NSDictionary
untuk meneruskan berbagai opsi pendeteksi. ML Kit menggunakan class opsi khusus untuk tujuan tersebut. - GMV meneruskan jenis detektor ke satu class
GMVDetector
saat membuat detektor. ML Kit menggunakan class khusus untuk membuat instance detektor, 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-deteksi untuk melakukan beberapa deteksi secara bersamaan. ML Kit tidak menyediakan mekanisme seperti itu, tetapi fungsi yang sama dapat diimplementasikan 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 tersebut.
FaceDetector
Kodekan ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:
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
memiliki dua
API deteksi yang berbeda. Keduanya merupakan 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.
Sinkron
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asinkron
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Ubah class, metode, dan nama berikut:
BarcodeDetector
Kodekan ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:
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
memiliki dua API deteksi yang berbeda. Keduanya merupakan 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.
Sinkron
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asinkron
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Ubah class, metode, dan nama berikut:
TextRecognition
Kodekan ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:
GMV
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
memiliki dua
API deteksi yang berbeda. Keduanya merupakan 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.
Sinkron
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asinkron
- (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 di sini, kami menguraikan saluran yang tersedia untuk menghubungi kami.