iOS এর জন্য স্থানান্তর করা হচ্ছে

পূর্বশর্ত

আপনি আপনার কোড স্থানান্তর করা শুরু করার আগে, নিশ্চিত করুন যে আপনি এই প্রয়োজনীয়তাগুলি পূরণ করেছেন:

  • ML কিট Xcode 13.2.1 বা তার বেশি সমর্থন করে।
  • ML Kit iOS সংস্করণ 15.5 বা তার বেশি সমর্থন করে।
  • ML Kit 32-বিট আর্কিটেকচার (i386 এবং armv7) সমর্থন করে না। ML Kit 64-বিট আর্কিটেকচার (x86_64 এবং arm64) সমর্থন করে।
  • এমএল কিট লাইব্রেরি শুধুমাত্র কোকোপড হিসাবে প্রদান করা হয়। আপনি ফ্রেমওয়ার্ক এবং কোকোপডগুলিকে মিশ্রিত করতে পারবেন না, তাই এই লাইব্রেরিটি ব্যবহার করার জন্য আপনাকে প্রথমে কোকোপড ব্যবহার করতে স্থানান্তর করতে হবে।

কোকোপড আপডেট করুন

আপনার অ্যাপের পডফাইলে ML Kit iOS cocoapods-এর নির্ভরতা আপডেট করুন:

API পুরানো পড নাম(গুলি) নতুন পড নাম(গুলি)
বারকোড স্ক্যানিং ফায়ারবেস/এমএলভিশন
Firebase/MLVisionBarcodeModel
GoogleMLKit/বারকোড স্ক্যানিং
মুখ সনাক্তকরণ ফায়ারবেস/এমএলভিশন
Firebase/MLVisionFaceModel
GoogleMLKit/FaceDetection
ইমেজ লেবেলিং ফায়ারবেস/এমএলভিশন
Firebase/MLVisionLabelModel
GoogleMLKit/ইমেজ লেবেলিং
বস্তু সনাক্তকরণ এবং ট্র্যাকিং ফায়ারবেস/এমএলভিশন অবজেক্ট ডিটেকশন GoogleMLKit/অবজেক্ট ডিটেকশন
পাঠ্য স্বীকৃতি ফায়ারবেস/এমএলভিশন
Firebase/MLVisionTextModel
GoogleMLKit/TextRecognition
অটোএমএল ইমেজ লেবেলিং (বান্ডিল মডেল) Firebase/MLVisionAutoML GoogleMLKit/ইমেজ লেবেলিং কাস্টম
AutoML ইমেজ লেবেলিং (Firebase থেকে মডেল ডাউনলোড) Firebase/MLVisionAutoML GoogleMLKit/ইমেজ লেবেলিং কাস্টম
GoogleMLKit/LinkFirebase
ভাষা আইডি ফায়ারবেস/এমএল ন্যাচারাল ল্যাঙ্গুয়েজ
Firebase/MLNLLlanguageID
GoogleMLKit/LanguageID
স্মার্ট উত্তর ফায়ারবেস/এমএল ন্যাচারাল ল্যাঙ্গুয়েজ
Firebase/MLNLSmartReply
GoogleMLKit/SmartReply
অনুবাদ করুন ফায়ারবেস/এমএল ন্যাচারাল ল্যাঙ্গুয়েজ
Firebase/MLNLTঅনুবাদ
GoogleMLKit/অনুবাদ

ক্লাস, enums, এবং প্রকারের নাম আপডেট করুন

সাধারণভাবে, ক্লাস, enums, এবং প্রকারগুলিকে নিম্নরূপ নামকরণ করা প্রয়োজন:

  • সুইফ্ট: ক্লাসের নাম এবং এনাম থেকে Vision উপসর্গটি সরান
  • উদ্দেশ্য-C: FIRVision এবং FIR ক্লাস নাম এবং enum উপসর্গ উভয়ই MLK দ্বারা প্রতিস্থাপন করুন

কিছু শ্রেণীর নাম এবং প্রকারের জন্য এই সাধারণ নিয়ম প্রযোজ্য নয়:

সুইফট

পুরানো ক্লাস বা টাইপ নতুন ক্লাস বা টাইপ
AutoMLLocalModel স্থানীয় মডেল
AutoMLRemoteModel কাস্টম রিমোট মডেল
VisionBarcodeDetectionCallback বারকোড স্ক্যানিং কলব্যাক
ভিশনবারকোড ডিটেক্টর বারকোড স্ক্যানার
VisionBarcodeDetectorOptions বারকোড স্ক্যানার বিকল্প
ভিশন ইমেজ ভিশন ইমেজ (কোন পরিবর্তন নেই)
ভিশনপয়েন্ট ভিশনপয়েন্ট (কোন পরিবর্তন নেই)
VisionOnDeviceAutoMLImageLabelerOptions CustomImageLabelerOptions
VisionOnDeviceImageLabelerOptions ইমেজ লেবেলার অপশন

উদ্দেশ্য-C

পুরানো ক্লাস বা টাইপ নতুন ক্লাস বা টাইপ
FIRAutoMLLocalModel MLKLocalModel
FIRAutoMLRemoteModel MLKCustomRemoteModel
FIRVisionBarcodeDetectionCallback MLKBarcodeScanningCallback
FIRVisionBarcodeDetector MLKBarcodeScanner
FIRVisionBarcodeDetectorOptions MLKBarcodeScanner অপশন
FIRVision Image এমএলকেভিশন ইমেজ
FIRVisionOnDeviceAutoMLImageLabelerOptions MLKCustomImageLabelerOptions
FIRVisionOnDeviceImageLabelerOptions MLKImageLabelerOptions
FIRVisionPoint MLKVisionPoint

উদ্দেশ্য-C

পদ্ধতির নাম আপডেট করুন

এই নিয়ম অনুযায়ী পদ্ধতির নাম আপডেট করুন:

  • ডোমেন এন্ট্রি পয়েন্ট ক্লাস ( Vision , NaturalLanguage ) আর বিদ্যমান নেই। তারা টাস্ক নির্দিষ্ট ক্লাস দ্বারা প্রতিস্থাপিত হয়েছে. প্রতিটি ডিটেক্টরের ফ্যাক্টরি পদ্ধতিতে সরাসরি কল দিয়ে ডিটেক্টর পাওয়ার জন্য তাদের বিভিন্ন ফ্যাক্টরি পদ্ধতিতে কল প্রতিস্থাপন করুন।

  • VisionDetectorImageOrientation enum সহ VisionImageMetadata ক্লাসটি সরানো হয়েছে। একটি চিত্রের প্রদর্শন অভিযোজন নির্দিষ্ট করতে VisionImage এর orientation বৈশিষ্ট্য ব্যবহার করুন।

  • onDeviceTextRecognizer পদ্ধতি যা একটি নতুন TextRecognizer উদাহরণ পায় সেটির নাম পরিবর্তন করে textRecognizer রাখা হয়েছে।

  • TextElement , TextLine , এবং TextBlock সহ পাঠ্য শনাক্তকরণ ফলাফল শ্রেণী থেকে আত্মবিশ্বাসের সম্পত্তি সরানো হয়েছে।

  • একটি নতুন ImageLabeler ইনস্ট্যান্স পেতে onDeviceImageLabeler এবং onDeviceImageLabeler(options:) পদ্ধতিগুলিকে মার্জ করা হয়েছে এবং imageLabeler(options:) তে নামকরণ করা হয়েছে।

  • একটি নতুন ObjectDetector দৃষ্টান্ত পেতে objectDetector পদ্ধতিটি সরানো হয়েছে। পরিবর্তে objectDetector(options:) ব্যবহার করুন।

  • type প্রপার্টি ImageLabeler থেকে সরানো হয়েছে এবং entityID প্রপার্টি ইমেজ লেবেলিং ফলাফল ক্লাস, ImageLabel থেকে মুছে ফেলা হয়েছে।

  • বারকোড স্ক্যানিং API detect(in _:, completion:) নাম পরিবর্তন করে process(_:, completion:) করা হয়েছে যাতে অন্যান্য দৃষ্টি API-এর সাথে সামঞ্জস্যপূর্ণ হয়।

  • ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই এখন "ভাষা কোড" এর পরিবর্তে "ভাষা ট্যাগ" ( BCP-47 স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত) শব্দটি ব্যবহার করে।

  • TranslateLanguage এখন ভাষা ট্যাগের পরিবর্তে তার ধ্রুবকের জন্য পঠনযোগ্য নাম (যেমন .english) ব্যবহার করে (যেমন .en)।

এখানে পুরানো এবং নতুন সুইফট পদ্ধতির কিছু উদাহরণ রয়েছে:

পুরাতন

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())
    

এখানে পুরানো এবং নতুন উদ্দেশ্য-সি পদ্ধতির কিছু উদাহরণ রয়েছে:

পুরাতন

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 শনাক্ত করা বস্তুর জন্য শ্রেণীবিভাগ শ্রেণী ফেরানোর উপায় পরিবর্তন করেছে।

VisionObjectVisionObjectCategory একটি পূর্ণসংখ্যার পরিবর্তে ObjectLabel অবজেক্টে text হিসাবে ফেরত দেওয়া হয়। সমস্ত সম্ভাব্য স্ট্রিং বিভাগগুলি DetectedObjectLabel enum-এ অন্তর্ভুক্ত করা হয়েছে।

মনে রাখবেন যে .unknown বিভাগটি সরানো হয়েছে। যখন কোনো বস্তুকে শ্রেণীবদ্ধ করার আত্মবিশ্বাস কম থাকে, তখন শ্রেণীবিভাগকারী কোনো লেবেল ফেরত দেয় না।

এখানে পুরানো এবং নতুন সুইফট কোডের একটি উদাহরণ রয়েছে:

পুরাতন

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) {
    ...
  }
}

এখানে পুরানো এবং নতুন উদ্দেশ্য-সি কোডের একটি উদাহরণ রয়েছে:

পুরাতন

if (object.classificationCategory == FIRVisionObjectCategoryFood) {
    ...
}

নতুন

if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) {
  ...
}
// or
if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) {
  ...
}

ফায়ারবেস নির্ভরতা সরান (ঐচ্ছিক)

এই পদক্ষেপটি শুধুমাত্র তখনই প্রযোজ্য যখন এই শর্তগুলি পূরণ হয়:

  • Firebase ML Kit হল একমাত্র Firebase উপাদান যা আপনি ব্যবহার করেন
  • আপনি শুধুমাত্র অন-ডিভাইস API ব্যবহার করেন
  • আপনি মডেল পরিবেশন ব্যবহার করবেন না

যদি এটি হয়, আপনি স্থানান্তর করার পরে Firebase নির্ভরতা মুছে ফেলতে পারেন। এই পদক্ষেপগুলি অনুসরণ করুন:

  • আপনার অ্যাপের ডিরেক্টরি এবং আপনার Xcode প্রকল্প থেকে GoogleService-Info.plist ফাইলটি মুছে ফায়ারবেস কনফিগারেশন ফাইলটি সরান৷
  • আপনার পডফাইল থেকে যেকোনও ফায়ারবেস কোকোপড, যেমন pod 'Firebase/Analytics' সরান।
  • আপনার কোড থেকে FirebaseApp.configure() মতো যেকোনও FirebaseApp আরম্ভ সরান।
  • Firebase সমর্থন সাইটের নির্দেশাবলী অনুযায়ী Firebase কনসোলে আপনার Firebase অ্যাপটি মুছুন।

সাহায্য পাচ্ছি

আপনি যদি কোনো সমস্যায় পড়েন, অনুগ্রহ করে আমাদের কমিউনিটি পৃষ্ঠা দেখুন যেখানে আমরা আমাদের সাথে যোগাযোগ করার জন্য উপলব্ধ চ্যানেলগুলির রূপরেখা দিই।