ज़रूरी शर्तें
अपने कोड को माइग्रेट करने से पहले, पक्का करें कि आपने इन शर्तों को पूरा किया हो:
- ML Kit, Xcode 13.2.1 या इसके बाद के वर्शन के साथ काम करता है.
- ML Kit, iOS के 10 या उसके बाद वाले वर्शन पर काम करता है.
- ML Kit, 32-बिट आर्किटेक्चर (i386 और armv7) पर काम नहीं करता. ML Kit, 64-बिट आर्किटेक्चर (x86_64 और arm64) पर काम करता है.
- ML Kit लाइब्रेरी को सिर्फ़ cocoapods के तौर पर उपलब्ध कराया जाता है. फ़्रेमवर्क और कोकोपॉड का इस्तेमाल नहीं किया जा सकता. इसलिए, इस लाइब्रेरी का इस्तेमाल करने के लिए, आपको सबसे पहले cocoapods का इस्तेमाल करना होगा.
Cocoapods को अपडेट करें
अपने ऐप्लिकेशन की Podfile में, ML Kit iOS cocoapods के लिए डिपेंडेंसी अपडेट करें:
एपीआई | पॉड के पुराने नाम | नए पॉड नाम |
---|---|---|
बारकोड स्कैन करना | 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/TextRecognition |
AutoML इमेज लेबलिंग (बंडल किया गया मॉडल) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
AutoML इमेज लेबलिंग (Firebase से मॉडल डाउनलोड) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
भाषा आईडी | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
स्मार्ट जवाब | Firebase/MLNaturalLanguage Firebase/MLNLSmartResponse |
GoogleMLKit/SmartReply |
अनुवाद करें | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Translate |
क्लास के नाम, ईनम, और टाइप अपडेट करें
आम तौर पर, क्लास , ईनम, और टाइप के नाम इस तरह बदले जाने चाहिए:
- स्विफ़्ट: क्लास के नामों और ईनम से
Vision
प्रीफ़िक्स हटाएं - Objective-C:
FIRVision
औरFIR
क्लास के नाम और ईनम प्रीफ़िक्स, दोनों को बदलेंMLK
की ओर से
कुछ क्लास के नामों और टाइप के लिए, यह सामान्य नियम लागू नहीं होता है:
Swift
पुरानी क्लास या टाइप | नई क्लास या टाइप |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | VisionImage (कोई बदलाव नहीं) |
VisionPoint | VisionPoint (कोई बदलाव नहीं) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
पुरानी क्लास या टाइप | नई क्लास या टाइप |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
तरीकों के नाम अपडेट करें
इन नियमों के मुताबिक तरीकों के नाम अपडेट करें:
डोमेन एंट्री पॉइंट क्लास (
Vision
,NaturalLanguage
) अब मौजूद नहीं हैं. वे को टास्क के हिसाब से क्लास से बदल दिया गया है. कॉल की जगह डिटेक्टर पाने के लिए, अलग-अलग फ़ैक्ट्री तरीकों का इस्तेमाल करें हर डिटेक्टर के फ़ैक्ट्री तरीके से किए गए कॉल को डायरेक्ट कॉल कर सकता है.VisionImageMetadata
क्लास को हटा दिया गया है. साथ ही,VisionDetectorImageOrientation
एनम. इसकीorientation
प्रॉपर्टी का इस्तेमाल करें किसी इमेज के डिसप्ले ओरिएंटेशन के बारे में बताने के लिए,VisionImage
.नया
TextRecognizer
इंस्टेंस पाने वालेonDeviceTextRecognizer
तरीके में का नाम बदलकरtextRecognizer
कर दिया गया है.कॉन्फ़िडेंस प्रॉपर्टी को टेक्स्ट से हटा दिया गया है पहचान के नतीजे की क्लास, जिनमें
TextElement
,TextLine
, औरTextBlock
शामिल हैं.पाने के
onDeviceImageLabeler
औरonDeviceImageLabeler(options:)
तरीके नएImageLabeler
इंस्टेंस को मर्ज कर दिया गया है. साथ ही, इसका नाम बदलकर यह कर दिया गया हैimageLabeler(options:)
.नया
ObjectDetector
इंस्टेंस पाने काobjectDetector
तरीका हटा दिया गया है. इसके बजाय,objectDetector(options:)
का इस्तेमाल करें.type
प्रॉपर्टी कोImageLabeler
और इमेज लेबलिंग के नतीजे की क्लास,ImageLabel
सेentityID
प्रॉपर्टी हटा दी गई है.बारकोड स्कैनिंग एपीआई
detect(in _:, completion:)
का नाम बदलकर यह कर दिया गया है अन्य विज़न एपीआई के साथ काम करने के लिए,process(_:, completion:)
का इस्तेमाल करें.Natural Language 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];
एपीआई से जुड़े बदलाव
ऑब्जेक्ट का पता लगाना और उसे ट्रैक करना
अगर आपका ऐप्लिकेशन, ऑब्जेक्ट क्लासिफ़िकेशन का इस्तेमाल करता है, तो ध्यान रखें कि नए SDK टूल में बदलाव किया गया है यह तरीका पता लगाए गए ऑब्जेक्ट के लिए, कैटगरी तय करने की कैटगरी दिखाता है.
VisionObject
में VisionObjectCategory
को ObjectLabel
में text
के तौर पर वापस किया जाता है
डालें. सभी संभावित स्ट्रिंग कैटगरी इसमें शामिल होती हैं
DetectedObjectLabel
Enum.
ध्यान दें कि .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 किट ही वह Firebase कॉम्पोनेंट है जिसका आप इस्तेमाल करते हैं
- सिर्फ़ डिवाइस पर मौजूद एपीआई का इस्तेमाल किया जाता है
- मॉडल सर्विंग का इस्तेमाल नहीं किया जाता
अगर ऐसा है, तो माइग्रेशन के बाद Firebase डिपेंडेंसी हटा दें. यह तरीका अपनाएं:
- GoogleService-Info.plist को मिटाकर, Firebase कॉन्फ़िगरेशन फ़ाइल को हटाएं आपके ऐप्लिकेशन की डायरेक्ट्री और Xcode प्रोजेक्ट से
- अपनी Podfile से,
pod 'Firebase/Analytics'
जैसे किसी भी Firebase कोकोपॉड को हटाएं. - अपने कोड से, Firebaseऐप्लिकेशन शुरू करने की कोई भी सुविधा हटाएं, जैसे कि
FirebaseApp.configure()
. - उस Firebase कंसोल से अपना Firebase ऐप्लिकेशन मिटाएं जो इससे जुड़ा है Firebase सहायता साइट पर दिए गए निर्देश दिए गए हैं.
मदद लेना
अगर आपको कोई समस्या होती है, तो कृपया हमारे कम्यूनिटी पेज पर जाएं. यहां हमने इसके बारे में जानकारी दी है हमसे संपर्क करने के लिए उपलब्ध चैनल.