Предварительные требования
Прежде чем приступить к миграции кода, убедитесь, что вы соответствуете следующим требованиям:
- ML Kit поддерживает Xcode 13.2.1 и более поздние версии.
- ML Kit поддерживает iOS версии 15.5 и выше.
- ML Kit не поддерживает 32-битные архитектуры (i386 и armv7). ML Kit поддерживает 64-битные архитектуры (x86_64 и arm64).
- Библиотека ML Kit предоставляется только в виде Cocoapods. Нельзя смешивать фреймворки и Cocoapods, поэтому для использования этой библиотеки необходимо сначала перейти на использование Cocoapods.
Обновить Cocoapods
Обновите зависимости для Cocoapods ML Kit для iOS в файле Podfile вашего приложения:
| API | Старое(ые) название(я) пода | Новое(ые) название(я) пода |
|---|---|---|
| сканирование штрих-кода | Firebase/MLVision Firebase/MLVisionBarcodeModel | GoogleMLKit/BarcodeScanning |
| Обнаружение лиц | Firebase/MLVision Firebase/MLVisionFaceModel | GoogleMLKit/FaceDetection |
| Разметка изображений | Firebase/MLVision Firebase/MLVisionLabelModel | GoogleMLKit/ImageLabeling |
| Обнаружение и отслеживание объектов | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
| распознавание текста | Firebase/MLVision Firebase/MLVisionTextModel | GoogleMLKit/Распознавание текста |
| Автоматическая разметка изображений AutoML (пакетная модель) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
| Автоматическая разметка изображений с помощью AutoML (загрузка модели из Firebase) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
| Идентификатор языка | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID | GoogleMLKit/LanguageID |
| Умный ответ | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply | GoogleMLKit/SmartReply |
| Переводить | Firebase/MLNaturalLanguage Firebase/MLNLTranslate | GoogleMLKit/Translate |
Обновите названия классов, перечислений и типов.
В общем случае, классы, перечисления и типы необходимо переименовывать следующим образом:
- Swift: Удалите префикс
Visionиз имен классов и перечислений. - Objective-C: Замените префиксы имен классов и перечислений
FIRVisionиFIRнаMLK
Для некоторых названий классов и типов это общее правило не применяется:
Быстрый
| Старый класс или тип | Новый класс или тип |
|---|---|
| AutoMLLocalModel | LocalModel |
| AutoMLRemoteModel | CustomRemoteModel |
| VisionBarcodeDetectionCallback | Сканирование штрихкода Обратный вызов |
| VisionBarcodeDetector | Сканер штрихкодов |
| VisionBarcodeDetectorOptions | Параметры сканера штрихкодов |
| VisionImage | VisionImage (без изменений) |
| VisionPoint | VisionPoint (без изменений) |
| VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
| VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
| Старый класс или тип | Новый класс или тип |
|---|---|
| FIRAutoMLLocalModel | MLKLocalModel |
| FIRAutoMLRemoteModel | MLKCustomRemoteModel |
| FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
| Детектор штрихкодов FIRVision | MLKBarcodeScanner |
| Параметры детектора штрихкодов FIRVision | MLKBarcodeScannerOptions |
| FIRVisionImage | MLKVisionImage |
| FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
| FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
| FIRVisionPoint | MLKVisionPoint |
Objective-C
Обновить названия методов
Обновите названия методов в соответствии со следующими правилами:
Классы точек входа в предметную область (
Vision,NaturalLanguage) больше не существуют. Они были заменены классами, специфичными для конкретных задач. Замените вызовы их различных фабричных методов для получения детекторов прямыми вызовами фабричных методов каждого детектора.Класс
VisionImageMetadataбыл удален, как и перечислениеVisionDetectorImageOrientation. Используйте свойствоorientationклассаVisionImageдля указания ориентации изображения на экране.Метод
onDeviceTextRecognizer, который получает новый экземплярTextRecognizerбыл переименован вtextRecognizer.Свойство confidence было удалено из классов результатов распознавания текста, включая
TextElement,TextLineиTextBlock.Методы
onDeviceImageLabelerиonDeviceImageLabeler(options:), позволяющие получить новый экземплярImageLabelerбыли объединены и переименованы вimageLabeler(options:).Метод
objectDetectorдля получения нового экземпляраObjectDetectorбыл удален. ИспользуйтеobjectDetector(options:)вместо него.Свойство
typeбыло удалено изImageLabeler, а свойствоentityID— из класса результатов разметки изображенийImageLabel.API сканирования штрихкодов
detect(in _:, completion:)был переименован вprocess(_:, completion:)для обеспечения согласованности с другими API обработки изображений.В API обработки естественного языка теперь используется термин «языковой тег» (как определено в стандарте BCP-47 ) вместо «языковой код».
Теперь
TranslateLanguageиспользует читаемые имена (например, .english) для своих констант вместо языковых тегов (например, .en).
Вот несколько примеров старых и новых методов Swift:
Старый
let options = VisionOnDeviceImageLabelerOptions()
options.confidenceThreshold = 0.75
let labeler = Vision.vision().onDeviceImageLabeler(options: options)
let detector = Vision.vision().faceDetector(options: options)
let localModel = AutoMLLocalModel(manifestPath: "automl/manifest.json")
let options = VisionOnDeviceAutoMLImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = 0.75
let labeler = vision.onDeviceAutoMLImageLabeler(options: options)
let detector = Vision.vision().objectDetector()
Новый
let options = ImageLabelerOptions()
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)
let detector = FaceDetector.faceDetector(options: options)
let localModel = LocalModel(manifestPath: "automl/manifest.json")
let options = CustomImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)
let detector = ObjectDetector.objectDetector(options: ObjectDetectorOptions())
Вот несколько примеров старых и новых методов Objective-C:
Старый
FIRVisionOnDeviceImageLabelerOptions *options = [[FIRVisionOnDeviceImageLabelerOptions alloc] init]; options.confidenceThreshold = 0.75; FIRVisionImageLabeler *labeler = [[FIRVision vision] onDeviceImageLabelerWithOptions:options]; FIRVisionFaceDetector *detector = [[FIRVision vision] faceDetectorWithOptions: options]; FIRAutoMLLocalModel *localModel = [[FIRAutoMLLocalModel alloc] initWithManifestPath:@"automl/manifest.json"]; FIRVisionOnDeviceAutoMLImageLabelerOptions *options = [[FIRVisionOnDeviceAutoMLImageLabelerOptions alloc] initWithLocalModel: localModel]; options.confidenceThreshold = 0.75 FIRVisionImageLabeler *labeler = [[FIRVision vision] onDeviceAutoMLImageLabelerWithOptions:options]; FIRVisionObjectDetector *detector = [[FIRVision vision] objectDetector];
Новый
MLKImageLabelerOptions *options = [[MLKImageLabelerOptions alloc] init]; options.confidenceThreshold = @(0.75); MLKImageLabeler *labeler = [MLKImageLabeler imageLabelerWithOptions:options]; MLKFaceDetector *detector = [MLKFaceDetector faceDetectorWithOptions:options]; MLKLocalModel *localModel = [[MLKLocalModel alloc] initWithManifestPath:@"automl/manifest.json"]; MLKCustomImageLabelerOptions *options = [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel]; options.confidenceThreshold = @(0.75) MLKImageLabeler *labeler = [MLKImageLabeler imageLabelerWithOptions:options]; MLKObjectDetectorOptions *options = [[MLKObjectDetectorOptions alloc] init]; MLKObjectDetector *detector = [MLKObjectDetector objectDetectorWithOptions:options];
изменения, специфичные для API
Обнаружение и отслеживание объектов
Если ваше приложение использует классификацию объектов, имейте в виду, что в новом SDK изменился способ возврата категории классификации для обнаруженных объектов.
VisionObjectCategory в VisionObject возвращается в виде text в объекте ObjectLabel , а не целого числа. Все возможные строковые категории включены в перечисление DetectedObjectLabel .
Обратите внимание, что категория .unknown была удалена. Когда уверенность в классификации объекта низка, классификатор не возвращает никакой метки.
Вот пример старого и нового кода на Swift:
Старый
if (object.classificationCategory == .food) {
...
}Новый
if let label = object.labels.first {
if (label.text == DetectedObjectLabel.food.rawValue) {
...
}
}
// or
if let label = object.labels.first {
if (label.index == DetectedObjectLabelIndex.food.rawValue) {
...
}
}Вот пример старого и нового кода на Objective-C:
Старый
if (object.classificationCategory == FIRVisionObjectCategoryFood) {
...
}Новый
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) {
...
}
// or
if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) {
...
}Удалите зависимости Firebase (необязательно)
Этот шаг применяется только при соблюдении следующих условий:
- Firebase ML Kit — это единственный компонент Firebase, который вы используете.
- Вы используете только API, встроенные в устройство.
- Вы не используете подачу моделей.
В этом случае вы можете удалить зависимости Firebase после миграции. Выполните следующие шаги:
- Удалите файл конфигурации Firebase, удалив файл GoogleService-Info.plist из каталога вашего приложения и из проекта Xcode.
- Удалите из вашего Podfile все Cocoapod-файлы Firebase, например,
pod 'Firebase/Analytics'. - Удалите из кода все инициализации FirebaseApp, например,
FirebaseApp.configure(). - Удалите приложение Firebase в консоли Firebase в соответствии с инструкциями на сайте поддержки Firebase.
Получение помощи
Если у вас возникнут какие-либо проблемы, пожалуйста, посетите нашу страницу «Сообщество» , где мы описываем доступные каналы связи с нами.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-01-28 UTC.