المتطلّبات الأساسية
قبل البدء في نقل الرمز، تأكَّد من استيفاء المتطلبات التالية:
- تتوافق حزمة ML Kit مع الإصدار 13.2.1 من Xcode أو الإصدارات الأحدث.
- تتوافق حزمة تعلّم الآلة مع الإصدار 10 من نظام التشغيل iOS أو الإصدارات الأحدث.
- لا تتوافق حزمة تعلّم الآلة مع بُنى 32 بت (i386 و armv7). تتوافق مجموعة أدوات تعلُّم الآلة مع بُنى 64 بت (x86_64 و arm64).
- لا تتوفّر مكتبة ML Kit إلا على شكل حلقات سفينة. لا يمكنك المزج بين أطر العمل وكائنات cocoapods، لذا عليك أولاً النقل لاستخدام هذه المكتبة لاستخدام cocoapods.
تعديل Cocoapods
يمكنك تعديل الاعتماديات الخاصة بالاشتراكات التعاونية في حزمة ML Kit على نظام التشغيل iOS في ملف Podfile الخاص بتطبيقك:
API | أسماء المجموعات القديمة | أسماء المجموعات الجديدة |
---|---|---|
مسح الرمز الشريطي ضوئيًا | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/مسح الرموز الشريطية |
التعرّف على الوجه | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
تصنيف الصور | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/ImageLabeling |
رصد العناصر وتتبُّعها | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
التعرّف على النص | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/Textإدراك |
تصنيف الصور تلقائيًا باستخدام ميزة AutoML (نموذج مجمّع) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
تصنيف صور AutoML (تنزيل النموذج من Firebase) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
معرف اللغة | Firebase/MLNatralLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
الرد السريع | Firebase/MLNatralLanguage Firebase/MLNLSmartReply |
GoogleMLKit/الرد السريع |
ترجمة | Firebase/MLNatralLanguage Firebase/MLNLTranslation |
GoogleMLKit/الترجمة |
تعديل أسماء الفئات والتعدادات والأنواع
وبوجه عام، يجب إعادة تسمية الفئات والتعدادات والأنواع على النحو التالي:
- Swift: إزالة البادئة
Vision
من أسماء الفئات والتعدادات - الهدف-ج: استبدال كل من اسم الفئة
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
لتحديد اتجاه عرض الصورة.تمت إعادة تسمية طريقة
onDeviceTextRecognizer
التي تحصل على مثيلTextRecognizer
جديد إلىtextRecognizer
.تمت إزالة خاصية الثقة من فئات نتائج التعرّف على النص، بما في ذلك
TextElement
وTextLine
وTextBlock
.تم دمج الطريقتين
onDeviceImageLabeler
وonDeviceImageLabeler(options:)
للحصول على مثيلImageLabeler
جديد وإعادة تسميتها إلىimageLabeler(options:)
.تمت إزالة طريقة
objectDetector
للحصول على مثيلObjectDetector
جديد. يمكنك استخدامobjectDetector(options:)
كبديل.تمت إزالة السمة
type
منImageLabeler
وتمت إزالة السمةentityID
من فئة نتائج تصنيف الصور،ImageLabel
.تمت إعادة تسمية واجهة برمجة تطبيقات فحص الرمز الشريطي
detect(in _:, completion:)
لتصبحprocess(_:, completion:)
لتتوافق مع واجهات برمجة تطبيقات الرؤية الأخرى.تستخدم واجهات برمجة التطبيقات للغة الطبيعية الآن المصطلح "علامة اللغة" (كما هو موضح في معيار 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()
New
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())
وفي ما يلي بعض الأمثلة على طرق الهدف-ج القديمة والجديدة:
الإصدار القديم
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];
New
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) الجديدة قد غيّرت طريقة عرض فئة التصنيف للعناصر التي يتم رصدها.
يتم عرض VisionObjectCategory
في VisionObject
على أنّه text
في كائن ObjectLabel
، بدلاً من عدد صحيح. يتم تضمين جميع فئات السلاسل الممكنة في
التعداد DetectedObjectLabel
.
يُرجى العِلم أنّه تمت إزالة الفئة .unknown
. وعندما تكون الثقة في تصنيف كائن منخفضة، لا ينتج عن المُصنِّف أي تسمية على الإطلاق.
فيما يلي مثال على رمز Swift القديم والجديد:
الإصدار القديم
if (object.classificationCategory == .food) { ... }
New
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) { ... } }
فيما يلي مثال لرمز الهدف-C القديم والجديد:
الإصدار القديم
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
New
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
إزالة اعتماديات Firebase (اختياري)
لا تنطبق هذه الخطوة إلا عند استيفاء الشروط التالية:
- إنّ Firebase ML Kit هو المكوّن الوحيد الذي تستخدمه في Firebase.
- استخدام واجهات برمجة التطبيقات على الجهاز فقط
- لا تستخدم نموذج عرض
في هذه الحالة، يمكنك إزالة تبعيات Firebase بعد نقل البيانات. يُرجى اتّباع الخطوات التالية:
- أزِل ملف إعداد Firebase من خلال حذف ملف GoogleService-Info.plist من دليل تطبيقك ومشروع Xcode.
- أزِل أي ملف cocoapod في Firebase، مثل
pod 'Firebase/Analytics'
، من Podfile. - أزِل أي إعداد لتطبيق Firebase، مثل
FirebaseApp.configure()
، من الرمز. - احذف تطبيق Firebase من "وحدة تحكُّم Firebase" وفقًا instructions الواردة على الموقع الإلكتروني لدعم Firebase.
الحصول على المساعدة
إذا واجهت أيّ مشاكل، يُرجى زيارة صفحة المنتدى حيث نوضّح القنوات التي يمكنك التواصل معنا من خلالها.