Wymagania wstępne
Zanim zaczniesz przenosić kod, upewnij się, że spełniasz te wymagania:
- ML Kit obsługuje Xcode w wersji 13.2.1 lub nowszej.
- ML Kit obsługuje system iOS w wersji 10 lub nowszej.
- ML Kit nie obsługuje 32-bitowych architektur (i386 i armv7). ML Kit obsługuje architekturę 64-bitową (x86_64 i arm64).
- Biblioteka ML Kit jest dostępna tylko w postaci cocoapod. Nie można mieszać platform i cocoapodów, więc aby korzystać z tej biblioteki, musisz najpierw przeprowadzić migrację i korzystać z cocoapods.
Zaktualizuj Cocoapods
Zaktualizuj zależności ML Kit na iOS cocoapods w pliku Podfile aplikacji:
Interfejs API | Stare nazwy podów | Nazwy nowych podów |
---|---|---|
Skanowanie kodów kreskowych | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
Wykrywanie twarzy | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
Dodawanie etykiet do obrazów | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/ImageLabeling |
Wykrywanie i śledzenie obiektów | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
Rozpoznawanie tekstu | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
Oznaczanie obrazów AutoML (model w pakiecie) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
Oznaczanie obrazów AutoML (pobranie modelu z Firebase) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
Identyfikator języka | Firebase/MLNaturalLanguage Identyfikator Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
Inteligentna odpowiedź | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/SmartReply |
Tłumacz | Firebase/MLNaturalLanguage Tłumacz Firebase/MLNL |
GoogleMLKit/Translate |
Aktualizowanie nazw klas, wyliczenia i typów
Ogólnie nazwy klas, wyliczenia i typów należy zmienić w ten sposób:
- Swift: usuń prefiks
Vision
z nazw klas i wyliczeń - Objective-C: zastąp nazwy klasy i prefiksy wyliczenia
FIRVision
iFIR
autor:MLK
W przypadku niektórych nazw i typów klas ta ogólna zasada nie ma zastosowania:
Swift
Stara klasa lub typ | Nowe zajęcia lub typ |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | VisionImage (bez zmian) |
VisionPoint | VisionPoint (bez zmian) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
Stara klasa lub typ | Nowe zajęcia lub typ |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
Zaktualizuj nazwy metod
Uaktualnij nazwy metod zgodnie z tymi regułami:
Klasy punktów wejścia domeny (
Vision
,NaturalLanguage
) już nie istnieją. Ta zostały zastąpione klasami konkretnymi zadaniami. Zastąp wywołania różnych metod fabrycznych w celu uzyskania wzorców do wykrywania treści bezpośrednich wywołań do metody fabrycznej każdego detektora.Zajęcia
VisionImageMetadata
zostały usunięte wraz z WyliczenieVisionDetectorImageOrientation
. Używaj właściwościorientation
typuVisionImage
, aby określić orientację wyświetlania zdjęcia.Metoda
onDeviceTextRecognizer
pobierająca nową instancjęTextRecognizer
ma Nazwa została zmieniona natextRecognizer
.Właściwość ufności została usunięta z tekstu klas wyników rozpoznawania, w tym
TextElement
,TextLine
iTextBlock
.Metody
onDeviceImageLabeler
ionDeviceImageLabeler(options:)
do uzyskania Nowa instancjaImageLabeler
została scalona i nazwana naimageLabeler(options:)
Metoda
objectDetector
umożliwiająca uzyskanie nowej instancjiObjectDetector
została usunięta. Użyj w zamian zasadyobjectDetector(options:)
.Usunięto właściwość
type
z elementówImageLabeler
oraz WłaściwośćentityID
została usunięta z klasy wyników oznaczania obrazów etykietamiImageLabel
.Nazwa interfejsu API skanowania kodów kreskowych
detect(in _:, completion:)
została zmieniona naprocess(_:, completion:)
, aby zachować spójność z innymi interfejsami API Vision.Interfejsy Natural Language API mają teraz termin „tag języka” (zgodnie z definicją podaną w standard BCP-47) zamiast „kodu języka”.
TranslateLanguage
używa teraz czytelnych nazw (np. .english) jako stałych zamiast tagów języka ( takich jak .en).
Oto kilka przykładów starych i nowych metod Swift:
Stara wersja
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()
Nowość
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())
Oto kilka przykładów starych i nowych metod Objective-C:
Stara wersja
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];
Nowość
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];
Zmiany dotyczące interfejsu API
Wykrywanie i śledzenie obiektów
Jeśli Twoja aplikacja używa klasyfikacji obiektów, pamiętaj, że nowy pakiet SDK uległ zmianie zwraca kategorię klasyfikacji wykrytych obiektów.
Metoda VisionObjectCategory
w VisionObject
jest zwracana jako text
w ObjectLabel
zamiast liczby całkowitej. Wszystkie możliwe kategorie ciągów znaków są uwzględnione w sekcji
Wyliczenie DetectedObjectLabel
.
Pamiętaj, że kategoria .unknown
została usunięta. Kiedy pewność siebie sklasyfikowana
jeśli obiekt jest niski, klasyfikator nie zwraca żadnej etykiety.
Oto przykład starego i nowego kodu Swift:
Stara wersja
if (object.classificationCategory == .food) { ... }
Nowość
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) { ... } }
Oto przykład starego i nowego kodu Objective-C:
Stara wersja
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
Nowość
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Usuń zależności Firebase (opcjonalnie)
Ten krok ma zastosowanie tylko wtedy, gdy są spełnione te warunki:
- Jedyny komponent Firebase, którego używasz, to Firebase ML Kit
- Używasz tylko interfejsów API działających na urządzeniu
- Nie korzystasz z udostępniania modeli
W takim przypadku możesz usunąć zależności Firebase po migracji. Aby to zrobić:
- Usuń plik konfiguracji Firebase, usuwając plik GoogleService-Info.plist. z katalogu aplikacji i projektu Xcode.
- Usuń z pliku Podfile wszystkie cocoapod Firebase, takie jak
pod 'Firebase/Analytics'
. - Usuń z kodu inicjowanie aplikacji FirebaseApp, takie jak
FirebaseApp.configure()
. - Usuń swoją aplikację Firebase z konsoli Firebase po instrukcje znajdziesz na stronie pomocy Firebase.
Uzyskiwanie pomocy
Jeśli napotkasz jakieś problemy, odwiedź naszą stronę Społeczności, gdzie znajdziesz wskazówki i opisy. kanały, za pomocą których można się z nami skontaktować.