iOS-এ Mobile Vision থেকে ML Kit-এ স্থানান্তরিত হচ্ছে

এই ডকুমেন্টে আপনার প্রোজেক্টগুলো গুগল মোবাইল ভিশন (GMV) থেকে iOS-এর ML Kit-এ মাইগ্রেট করার জন্য প্রয়োজনীয় পদক্ষেপগুলো বর্ণনা করা হয়েছে।

পূর্বশর্ত

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

  • এমএল কিট এক্সকোড ১৩.২.১ বা তার পরবর্তী সংস্করণ সমর্থন করে।
  • এমএল কিট আইওএস সংস্করণ ১৫.৫ বা তার পরবর্তী সংস্করণ সমর্থন করে।
  • এমএল কিট ৩২-বিট আর্কিটেকচার (i386 এবং armv7) সমর্থন করে না। এমএল কিট ৬৪-বিট আর্কিটেকচার (x86_64 এবং arm64) সমর্থন করে।

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

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

এপিআই জিএমভি পড এমএল কিট পড
বারকোড স্ক্যানিং GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
মুখ শনাক্তকরণ GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
পাঠ্য শনাক্তকরণ GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

সামগ্রিক এপিআই পরিবর্তন

এই পরিবর্তনগুলি সকল API-এর ক্ষেত্রে প্রযোজ্য:

  • GMV-এর ইনফারেন্স API-গুলো ইনপুট হিসেবে UIImage বা CMSampleBufferRef গ্রহণ করে। ML Kit সেগুলোকে একটি MLKVisionImage এর মধ্যে র‍্যাপ করে এবং সেটিকে ইনপুট হিসেবে নেয়।
  • GMV বিভিন্ন ডিটেক্টর অপশন প্রেরণের জন্য NSDictionary ব্যবহার করে। ML Kit সেই উদ্দেশ্যে বিশেষ অপশন ক্লাস ব্যবহার করে।
  • GMV যখন একটি ডিটেক্টর তৈরি করে, তখন এটি ডিটেক্টরের ধরনটি একক GMVDetector ক্লাসে প্রেরণ করে। ML Kit পৃথক ডিটেক্টর, স্ক্যানার এবং রিকগনাইজার ইনস্ট্যান্স তৈরি করার জন্য নির্দিষ্ট ক্লাস ব্যবহার করে।
  • GMV-এর API-গুলো শুধুমাত্র সিনক্রোনাস ডিটেকশন সমর্থন করে। ML Kit-এর ইনফারেন্স API-গুলো সিনক্রোনাস এবং অ্যাসিনক্রোনাস উভয়ভাবেই কল করা যায়।
  • GMV, AVCaptureVideoDataOutput সম্প্রসারিত করে এবং একই সময়ে একাধিক ডিটেকশন সম্পাদনের জন্য একটি মাল্টি-ডিটেক্টর ফ্রেমওয়ার্ক প্রদান করে। ML Kit এই ধরনের কোনো ব্যবস্থা প্রদান করে না, কিন্তু ডেভেলপার চাইলে একই কার্যকারিতা বাস্তবায়ন করতে পারেন।

এপিআই-নির্দিষ্ট পরিবর্তন

এই অংশে প্রতিটি ভিশন এপিআই-এর জন্য সংশ্লিষ্ট জিএমভি এবং এমএল কিট ক্লাস ও মেথড বর্ণনা করা হয়েছে এবং এপিআই-টি কীভাবে ইনিশিয়ালাইজ করতে হয় তা দেখানো হয়েছে।

মুখ ডিটেক্টর

এই উদাহরণে দেখানো অনুযায়ী প্রারম্ভিকীকরণটি পুনরায় কোড করুন:

জিএমভি

NSDictionary *options = @{
    GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode),
    GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
    GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll)
};
GMVDetector *faceDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];

এমএল কিট

MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init];
options.performanceMode = MLKFaceDetectorPerformanceModeAccurate;
options.classificationMode = MLKFaceDetectorClassificationModeAll;
options.landmarkMode = MLKFaceDetectorLandmarkModeAll;
MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];

GMVDetector দুটি ভিন্ন ডিটেকশন এপিআই রয়েছে। উভয়ই সিনক্রোনাস অপারেশন:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector পরিবর্তে MLKFaceDetector ব্যবহার করুন। ইনফারেন্স এপিআই সিনক্রোনাসলি বা অ্যাসিনক্রোনাসলি কল করা যেতে পারে।

সিঙ্ক্রোনাস

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

অ্যাসিঙ্ক্রোনাস

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

নিম্নলিখিত ক্লাস, মেথড এবং নামগুলো পরিবর্তন করুন:

জিএমভি এমএল কিট
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
মুখ শনাক্তকরণ বিকল্পগুলির NSDictionary MLKFaceDetectorOptions
GMVDetectorFaceFastMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeFast
GMVDetectorFaceAccurateMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeAccurate
GMVDetectorFaceSelfieMode Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceLandmarkType MLKFaceDetectorOptions.landmarkMode
GMVDetectorFaceLandmarkNone Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeNone
GMVDetectorFaceLandmarkAll Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeAll
GMVDetectorFaceLandmarkContour Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceClassificationType MLKFaceDetectorOptions.classificationMode
GMVDetectorFaceClassificationNone Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeNone
GMVDetectorFaceClassificationAll Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeAll
GMVDetectorFaceTrackingEnabled MLKFaceDetectorOptions.trackingEnabled
GMVDetectorProminentFaceOnly Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceMinSize MLKFaceDetectorOptions.minFaceSize

বারকোড ডিটেক্টর

এই উদাহরণে দেখানো অনুযায়ী প্রারম্ভিকীকরণটি পুনরায় কোড করুন:

জিএমভি

NSDictionary *options = @{
    GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 |
                                  GMVDetectorBarcodeFormatQRCode)
};
GMVDetector *barcodeDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];

এমএল কিট

MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init];
options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode;
MLKBarcodeScanner *barcodeScanner =
    [MLKBarcodeScanner barcodeScannerWithOptions:options];

GMVDetector দুটি ভিন্ন ডিটেকশন এপিআই রয়েছে। উভয়ই সিনক্রোনাস অপারেশন:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector পরিবর্তে MLKBarcodeScanner ব্যবহার করুন। ইনফারেন্স এপিআই সিনক্রোনাসলি বা অ্যাসিনক্রোনাসলি কল করা যেতে পারে।

সিঙ্ক্রোনাস

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

অ্যাসিঙ্ক্রোনাস

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

নিম্নলিখিত ক্লাস, মেথড এবং নামগুলো পরিবর্তন করুন:

জিএমভি এমএল কিট
GMVDetectorImageOrientation MLKVisionImage.orientation
বারকোড ডিটেক্টর বিকল্পগুলির NSDictionary MLKBarcodeScannerOptions
GMVDetectorBarcodeFormats MLKBarcodeScannerOptions.formats
GMVBarcodeFeature MLKBarcode
GMVBarcodeFeatureAddress MLKBarcodeAddress
GMVBarcodeFeatureCalendarEvent MLKBarcodeCalendarEvent
GMVBarcodeFeatureContactInfo MLKBarcodeContactInfo
GMVBarcodeFeatureDriverLicense MLKBarcodeDriverLicense
GMVBarcodeFeatureEmail MLKBarcodeEmail
GMVBarcodeFeatureGeoPoint MLKBarcodeGeoPoint
GMVBarcodeFeaturePersonName MLKBarcodePersonName
GMVBarcodeFeaturePhone MLKBarcodePhone
GMVBarcodeFeatureSMS MLKBarcodeSMS
GMVBarcodeFeatureURLBookmark MLKBarcodeURLBookmark
GMVBarcodeFeatureWiFi MLKBarcodeWiFi

পাঠ্য শনাক্তকরণ

এই উদাহরণে দেখানো অনুযায়ী প্রারম্ভিকীকরণটি পুনরায় কোড করুন:

জিএমভি

GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];

এমএল কিট

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector দুটি ভিন্ন ডিটেকশন এপিআই রয়েছে। উভয়ই সিনক্রোনাস অপারেশন:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector পরিবর্তে MLKTextRecognizer ব্যবহার করুন। ইনফারেন্স এপিআই সিনক্রোনাসলি বা অ্যাসিনক্রোনাসলি কল করা যেতে পারে।

সিঙ্ক্রোনাস

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

অ্যাসিঙ্ক্রোনাস

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

নিম্নলিখিত ক্লাস, মেথড এবং নামগুলো পরিবর্তন করুন:

জিএমভি এমএল কিট
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

সাহায্য পাওয়া

যদি কোনো সমস্যায় পড়েন, তাহলে আমাদের কমিউনিটি পেজটি দেখুন, যেখানে আমাদের সাথে যোগাযোগের মাধ্যমগুলো উল্লেখ করা আছে।