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 a eseguire la migrazione del codice, assicurati di soddisfare i seguenti requisiti:
- ML Kit supporta Xcode 13.2.1 o versioni successive.
- ML Kit supporta iOS 10 o versioni successive.
- ML Kit non supporta architetture a 32 bit (i386 e armv7). ML Kit supporta architetture a 64 bit (x86_64 e arm64).
Aggiorna cocoapod
Aggiorna le dipendenze per i cocoapod per iOS del Kit ML nel Podfile dell'app:
API | Pod RLV | Pod ML Kit |
---|---|---|
Scansione di codici a barre | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
Rilevamento facciale | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
Riconoscimento del testo | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Modifiche generali all'API
Queste modifiche si applicano a tutte le API:
- Le API di inferenza di GMV prendono
UIImage
oCMSampleBufferRef
come input. ML Kit li inserisce in unaMLKVisionImage
e li prende come input. - RLV utilizza
NSDictionary
per superare varie opzioni di rilevatori. A questo scopo, ML Kit utilizza classi di opzioni dedicate. - RLV passa il tipo di rilevatore alla singola classe
GMVDetector
quando crea un rilevatore. ML Kit utilizza classi dedicate per creare istanze separate di rilevatore, scanner e riconoscimento. - 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
AVCaptureVideoDataOutput
e fornisce un framework multi-rilevamento per eseguire più rilevamenti contemporaneamente. ML Kit non fornisce questi meccanismi, ma la stessa funzionalità può essere implementata dallo sviluppatore, se lo desidera.
Modifiche specifiche per l'API
Questa sezione descrive le classi e i metodi GMV e ML Kit corrispondenti per ciascuna API Vision e mostra come inizializzare l'API.
FaceDetector
Ricodifica l'inizializzazione come mostrato in questo esempio:
RLV
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
diverse API di rilevamento. Sono entrambe 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 i seguenti metodi, nomi e classi:
BarcodeDetector
Ricodifica l'inizializzazione come mostrato in questo esempio:
RLV
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
dispone di due diverse API di rilevamento. Sono entrambe 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 i seguenti metodi, nomi e classi:
TextRecognition
Ricodifica l'inizializzazione come mostrato in questo esempio:
RLV
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
ha due
diverse API di rilevamento. Sono entrambe 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 i seguenti metodi, nomi e classi:
RLV | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Richiesta di aiuto
Se riscontri problemi, consulta la pagina della community in cui sono indicati i canali disponibili per metterti in contatto con noi.