Questo documento illustra i passaggi da seguire per eseguire la migrazione dei progetti da Google Mobile Vision (GMV) a ML Kit su iOS.
Prerequisiti
Prima di iniziare la migrazione del codice, assicurati di soddisfare i seguenti requisiti:
- ML Kit supporta Xcode 13.2.1 o versioni successive.
- ML Kit supporta iOS versione 15.5 o successive.
- ML Kit non supporta le architetture a 32 bit (i386 e armv7). ML Kit supporta le architetture a 64 bit (x86_64 e arm64).
Aggiornare cocoapods
Aggiorna le dipendenze per i cocoapods di ML Kit iOS nel Podfile della tua app:
| API | Pod GMV | Pod ML Kit |
|---|---|---|
| Scansione di codici a barre | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
| Riconoscimento facciale | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
| Riconoscimento del testo | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Modifiche generali alle API
Queste modifiche si applicano a tutte le API:
- Le API di inferenza di GMV accettano
UIImageoCMSampleBufferRefcome input. ML Kit le racchiude in unMLKVisionImagee lo accetta come input. - GMV uses
NSDictionaryper passare varie opzioni del rilevatore. ML Kit utilizza classi di opzioni dedicate a questo scopo. - GMV passa il tipo di rilevatore alla singola
GMVDetectorclasse quando crea un rilevatore. ML Kit utilizza classi dedicate per creare istanze separate di rilevatore, scanner e riconoscitore. - Le API di GMV supportano solo il rilevamento sincrono. Le API di inferenza di ML Kit possono essere chiamate in modo sincrono e asincrono.
- GMV estende
AVCaptureVideoDataOutpute fornisce un framework multi-rilevatore per eseguire più rilevamenti contemporaneamente. ML Kit non fornisce questi meccanismi, ma lo sviluppatore può implementare la stessa funzionalità, se lo desidera.
Modifiche specifiche per l'API
Questa sezione descrive le classi e i metodi GMV e ML Kit corrispondenti per ogni API Vision e mostra come inizializzare l'API.
FaceDetector
Ricodifica l'inizializzazione come mostrato in questo esempio:
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 ha due API di rilevamento diverse. Entrambe sono operazioni sincrone:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Sostituisci GMVDetector con MLKFaceDetector.
L'API di inferenza può essere chiamata in modo sincrono o asincrono.
Sincrona
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asincrona
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Modifica le seguenti classi, i metodi e i nomi:
BarcodeDetector
Ricodifica l'inizializzazione come mostrato in questo esempio:
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 ha due API di rilevamento diverse. Entrambe sono operazioni sincrone:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Sostituisci GMVDetector con
MLKBarcodeScanner.
L'API di inferenza può essere chiamata in modo sincrono o asincrono.
Sincrona
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asincrona
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Modifica le seguenti classi, i metodi e i nomi:
TextRecognition
Ricodifica l'inizializzazione come mostrato in questo esempio:
GMV
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector ha due API di rilevamento diverse. Entrambe sono operazioni sincrone:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Sostituisci GMVDetector con
MLKTextRecognizer.
L'API di inferenza può essere chiamata in modo sincrono o asincrono.
Sincrona
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Asincrona
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Modifica le seguenti classi, i metodi e i nomi:
| GMV | ML Kit |
|---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Richiesta di aiuto
Se riscontri problemi, consulta la nostra pagina della community dove sono indicati i canali disponibili per contattarci.