Переход с Mobile Vision на ML Kit на iOS

В этом документе описываются шаги, которые необходимо предпринять для переноса проектов из Google Mobile Vision (GMV) в ML Kit на iOS.

Предпосылки

Прежде чем приступить к миграции кода, убедитесь, что вы соответствуете следующим требованиям:

  • ML Kit поддерживает Xcode 13.2.1 или более позднюю версию.
  • ML Kit поддерживает iOS версии 15.5 и выше.
  • ML Kit не поддерживает 32-битные архитектуры (i386 и armv7). ML Kit поддерживает 64-битные архитектуры (x86_64 и arm64).

Обновление кокосопод

Обновите зависимости для Cocoapods ML Kit iOS в Podfile вашего приложения:

API GMV-под Комплект ML Pod
Сканирование штрих-кода GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
Распознавание лиц GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
Распознавание текста GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

Общие изменения API

Эти изменения применяются ко всем API:

  • API вывода GMV принимают UIImage или CMSampleBufferRef в качестве входных данных. ML Kit оборачивает их в MLKVisionImage и принимает его в качестве входных данных.
  • GMV использует NSDictionary для передачи различных опций детектора. ML Kit использует для этой цели выделенные классы опций.
  • GMV передает тип детектора в один класс GMVDetector при создании детектора. ML Kit использует выделенные классы для создания отдельных экземпляров детектора, сканера и распознавателя.
  • API GMV поддерживают только синхронное обнаружение. API вывода ML Kit могут вызываться синхронно и асинхронно.
  • GMV расширяет AVCaptureVideoDataOutput и предоставляет многодетекторную структуру для выполнения нескольких обнаружений одновременно. ML Kit не предоставляет таких механизмов, но та же функциональность может быть реализована разработчиком при желании.

Изменения, специфичные для API

В этом разделе описываются соответствующие классы и методы GMV и ML Kit для каждого API Vision, а также показано, как инициализировать API.

FaceDetector

Перекодируйте инициализацию, как показано в этом примере:

ГМВ

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 имеет два разных API обнаружения. Оба являются синхронными операциями:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

Замените GMVDetector на MLKFaceDetector . API вывода может быть вызван синхронно или асинхронно.

Синхронный

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

Асинхронный

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Измените следующие классы, методы и имена:

ГМВ МЛ-комплект
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary опций распознавания лиц MLKFaceDetectorOptions
GMVDetectorFaceFastMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeFast
GMVDetectorFaceAccurateMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeAccurate
GMVDetectorFaceSelfieMode Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceLandmarkType MLKFaceDetectorOptions.landmarkMode
GMVDetectorFaceLandmarkNone Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeNone
GMVDetectorFaceLandmarkAll Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeAll
GMVDetectorFaceLandmarkContour Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceClassificationType MLKFaceDetectorOptions.classificationMode
GMVDetectorFaceClassificationNone Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeNone
GMVDetectorFaceClassificationAll Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeAll
GMVDetectorFaceTrackingEnabled MLKFaceDetectorOptions.trackingEnabled
GMVDetectorProminentFaceOnly Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceMinSize MLKFaceDetectorOptions.minFaceSize

BarcodeDetector

Перекодируйте инициализацию, как показано в этом примере:

ГМВ

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 имеет два разных API обнаружения. Оба являются синхронными операциями:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

Замените GMVDetector на MLKBarcodeScanner . API вывода может быть вызван синхронно или асинхронно.

Синхронный

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

Асинхронный

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Измените следующие классы, методы и имена:

ГМВ МЛ-комплект
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary опций детектора штрих-кода MLKBarcodeScannerOptions
GMVDetectorBarcodeFormats MLKBarcodeScannerOptions.formats
GMVBarcodeFeature MLKBarcode
GMVBarcodeFeatureAddress MLKBarcodeAddress
GMVBarcodeFeatureCalendarEvent MLKBarcodeCalendarEvent
GMVBarcodeFeatureContactInfo MLKBarcodeContactInfo
GMVBarcodeFeatureDriverLicense MLKBarcodeDriverLicense
GMVBarcodeFeatureEmail MLKBarcodeEmail
GMVBarcodeFeatureGeoPoint MLKBarcodeGeoPoint
GMVBarcodeFeaturePersonName MLKBarcodePersonName
GMVBarcodeFeaturePhone MLKBarcodePhone
GMVBarcodeFeatureSMS MLKBarcodeSMS
GMVBarcodeFeatureURLBookmark MLKBarcodeURLBookmark
GMVBarcodeFeatureWiFi MLKBarcodeWiFi

Распознавание текста

Перекодируйте инициализацию, как показано в этом примере:

ГМВ

GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];

МЛ-комплект

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector имеет два разных API обнаружения. Оба являются синхронными операциями:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

Замените GMVDetector на MLKTextRecognizer . API вывода может быть вызван синхронно или асинхронно.

Синхронный

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

Асинхронный

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

Измените следующие классы, методы и имена:

ГМВ МЛ-комплект
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

Получение помощи

Если у вас возникнут какие-либо проблемы, посетите страницу нашего сообщества , где мы описываем доступные каналы связи с нами.