Prérequis
Avant de commencer à migrer votre code, vérifiez que vous remplissez les conditions suivantes:
- ML Kit est compatible avec Xcode 13.2.1 ou version ultérieure.
- ML Kit est compatible avec iOS version 10 ou ultérieure.
- ML Kit n'est pas compatible avec les architectures 32 bits (i386 et armv7). ML Kit est compatible avec les architectures 64 bits (x86_64 et arm64).
- La bibliothèque ML Kit n'est fournie qu'en tant que CocoaPods. Vous ne pouvez pas mélanger les frameworks et les CocoaPods. Par conséquent, pour utiliser cette bibliothèque, vous devez d'abord migrer pour utiliser CocoaPods.
Mettre à jour CocoaPods
Mettez à jour les dépendances des CocoaPods iOS ML Kit dans le Podfile de votre application:
API | Anciens noms des pods | Noms des nouveaux pods |
---|---|---|
Lecture de codes-barres | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
Détection de visages | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
Étiquetage d'images | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/ImageLabeling |
Détectez les objets et assurez leur suivi. | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
Reconnaissance de texte | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
Ajout d'étiquettes aux images AutoML (modèle groupé) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
Ajout d'étiquettes aux images AutoML (téléchargement de modèle à partir de Firebase) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
ID de langue | Firebase/MLNaturalLanguage ID de langue Firebase/MLNL |
GoogleMLKit/LanguageID |
Réponse suggérée | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/SmartReply |
Traduire | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Traduction |
Mettre à jour les noms des classes, des énumérations et des types
En général, les classes , les énumérations et les types doivent être renommés comme suit:
- Swift: supprimer le préfixe
Vision
des noms de classe et des énumérations - Objectif C: Remplacer les noms de classe
FIRVision
etFIR
, ainsi que les préfixes d'énumération d'ici leMLK
Cette règle générale ne s'applique pas à certains noms et types de classes:
Swift
Ancienne classe ou type | Nouvelle classe ou nouveau type |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | VisionImage (sans modification) |
VisionPoint | VisionPoint (aucun changement) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
Ancienne classe ou type | Nouvelle classe ou nouveau type |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
Mettre à jour les noms des méthodes
Mettez à jour les noms des méthodes en fonction des règles suivantes:
Les classes de points d'entrée du domaine (
Vision
,NaturalLanguage
) n'existent plus. Ils ont été remplacés par des classes spécifiques à une tâche. Remplacez les appels à leurs différentes méthodes d'usine pour obtenir des détecteurs avec des appels directs à la méthode de fabrique de chaque détecteur.La classe
VisionImageMetadata
a été supprimée, de même que la ÉnumérationVisionDetectorImageOrientation
. Utilisez la propriétéorientation
deVisionImage
pour spécifier l'orientation d'affichage d'une image.La méthode
onDeviceTextRecognizer
qui obtient une nouvelle instanceTextRecognizer
possède a été renommétextRecognizer
.La propriété de confiance a été supprimée du texte classes de résultats de reconnaissance, y compris
TextElement
,TextLine
etTextBlock
.Les méthodes
onDeviceImageLabeler
etonDeviceImageLabeler(options:)
pour obtenir une La nouvelle instanceImageLabeler
a été fusionnée et renommée enimageLabeler(options:)
La méthode
objectDetector
permettant d'obtenir une nouvelle instanceObjectDetector
a été supprimée. Utilisez plutôtobjectDetector(options:)
.La propriété
type
a été supprimée deImageLabeler
et La propriétéentityID
a été supprimée de la classe de résultat de l'étiquetage d'image,ImageLabel
.L'API de lecture de codes-barres
detect(in _:, completion:)
a été renommée enprocess(_:, completion:)
pour assurer la cohérence avec les autres API Vision.Les API Natural Language utilisent désormais le terme "tag de langue" (tel que défini par le norme BCP-47) au lieu du "code de langue".
TranslateLanguage
utilise désormais des noms lisibles (comme .english) pour ses constantes au lieu des balises de langue ( comme .en).
Voici quelques exemples d'anciennes et de nouvelles méthodes Swift:
Ancienne version
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()
Nouveau
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())
Voici quelques exemples d'anciennes et de nouvelles méthodes Objective-C:
Ancienne version
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];
Nouveau
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];
Modifications spécifiques aux API
Détectez les objets et assurez leur suivi.
Si votre application utilise la classification d'objets, sachez que le nouveau SDK a changé renvoie la catégorie de classification pour les objets détectés.
VisionObjectCategory
dans VisionObject
est renvoyé en tant que text
dans un ObjectLabel
au lieu d'un nombre entier. Toutes les catégories de chaîne possibles sont incluses dans
Énumération DetectedObjectLabel
.
Notez que la catégorie .unknown
a été supprimée. Quand le niveau de confiance de la classification
un objet est faible, le classificateur ne renvoie aucune étiquette.
Voici un exemple de l'ancien et du nouveau code Swift:
Ancienne version
if (object.classificationCategory == .food) { ... }
Nouveau
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) { ... } }
Voici un exemple de l'ancien et du nouveau code Objective-C:
Ancienne version
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
Nouveau
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Supprimer les dépendances Firebase (facultatif)
Cette étape ne s'applique que lorsque les conditions suivantes sont remplies:
- Firebase ML Kit est le seul composant Firebase que vous utilisez
- Vous n'utilisez que des API sur l'appareil
- Vous n'utilisez pas l'inférence du modèle
Dans ce cas, vous pouvez supprimer les dépendances Firebase après la migration. Procédez comme suit :
- Supprimez le fichier de configuration Firebase en supprimant le fichier GoogleService-Info.plist du répertoire de votre application et de votre projet Xcode.
- Supprimez tous les CocoaPods Firebase, tels que
pod 'Firebase/Analytics'
, de votre Podfile. - Supprimez de votre code toute initialisation de FirebaseApp, telle que
FirebaseApp.configure()
. - Supprimez votre application Firebase dans la console Firebase les instructions sur le site d'assistance de Firebase.
Obtenir de l'aide
Si vous rencontrez des problèmes, veuillez consulter la page de la communauté canaux disponibles pour nous contacter.