Bu belgede, projelerinizi iOS'te Google Mobile Vision'dan (GMV) ML Kit'e taşımak için uygulamanız gereken adımlar açıklanmaktadır.
Ön koşullar
Kodunuzu taşımaya başlamadan önce aşağıdaki koşulları karşıladığınızdan emin olun:
- ML Kiti, Xcode 13.2.1 veya sonraki sürümleri destekler.
- ML Kiti, iOS 15.5 veya sonraki sürümleri destekler.
- ML Kiti, 32 bit mimarileri (i386 ve armv7) desteklemez. ML Kiti, 64 bit mimarileri (x86_64 ve arm64) destekler.
CocoaPods'u güncelleme
Uygulamanızın Podfile dosyasında ML Kiti iOS cocoapod'larının bağımlılıklarını güncelleyin:
| API | GMV Pod | ML Kit Pod |
|---|---|---|
| Barkod tarama | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
| Yüz algılama | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
| Metin tanıma | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Genel API değişiklikleri
Bu değişiklikler tüm API'ler için geçerlidir:
- GMV'nin çıkarım API'leri, giriş olarak
UIImageveyaCMSampleBufferRefkullanır. ML Kiti bunları birMLKVisionImageiçine sarmalar ve giriş olarak alır. - GMV, çeşitli algılayıcı seçeneklerini iletmek için
NSDictionarykullanır. ML Kit, bu amaçla özel seçenek sınıfları kullanır. - GMV, bir algılayıcı oluştururken algılayıcı türünü tek bir
GMVDetectorsınıfına iletir. ML Kiti, ayrı algılayıcı, tarayıcı ve tanıyıcı örnekleri oluşturmak için özel sınıflar kullanır. - GMV'nin API'leri yalnızca eşzamanlı algılamayı destekler. ML Kiti'nin çıkarım API'leri eşzamanlı ve eşzamansız olarak çağrılabilir.
- GMV,
AVCaptureVideoDataOutput'yi genişletir ve aynı anda birden fazla algılama gerçekleştirmek için çoklu algılayıcı çerçevesi sağlar. ML Kiti bu tür mekanizmalar sağlamaz ancak geliştirici isterse aynı işlevi uygulayabilir.
API'ye özgü değişiklikler
Bu bölümde, her bir Vision API için karşılık gelen GMV ve ML Kiti sınıfları ile yöntemleri açıklanmakta ve API'nin nasıl ilk kullanıma hazırlanacağı gösterilmektedir.
FaceDetector
Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:
Brüt genel işlem tutarı (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'da iki farklı algılama API'si bulunur. Her ikisi de eşzamanlı işlemlerdir:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
GMVDetector yerine MLKFaceDetector yazın.
Çıkarım API'si eşzamanlı veya eşzamansız olarak çağrılabilir.
Senkronize
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Eşzamansız
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Aşağıdaki sınıfları, yöntemleri ve adları değiştirin:
BarcodeDetector
Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:
Brüt genel işlem tutarı (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'da iki farklı algılama API'si vardır. Her ikisi de eşzamanlı işlemlerdir:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
GMVDetector yerine MLKBarcodeScanner yazın.
Çıkarım API'si eşzamanlı veya eşzamansız olarak çağrılabilir.
Senkronize
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Eşzamansız
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Aşağıdaki sınıfları, yöntemleri ve adları değiştirin:
TextRecognition
Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:
Brüt genel işlem tutarı (GMV)
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector'da iki farklı algılama API'si bulunur. Her ikisi de eşzamanlı işlemlerdir:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
GMVDetector yerine MLKTextRecognizer yazın.
Çıkarım API'si eşzamanlı veya eşzamansız olarak çağrılabilir.
Senkronize
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Eşzamansız
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Aşağıdaki sınıfları, yöntemleri ve adları değiştirin:
| Brüt genel işlem tutarı (GMV) | ML Kit |
|---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Yardım alma
Herhangi bir sorunla karşılaşırsanız bizimle iletişime geçebileceğiniz kanalları listelediğimiz Topluluk sayfamıza göz atın.