เอกสารนี้ครอบคลุมถึงขั้นตอนที่คุณต้องทำเพื่อย้ายข้อมูลโปรเจ็กต์ Google Mobile Vision (GMV) ไปยัง ML Kit บน iOS
ข้อกำหนดเบื้องต้น
ก่อนที่จะเริ่มย้ายข้อมูลโค้ด โปรดตรวจสอบว่าคุณมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้
- ML Kit รองรับ Xcode 13.2.1 หรือใหม่กว่า
- ML Kit รองรับ iOS เวอร์ชัน 10 หรือใหม่กว่า
- ML Kit ไม่รองรับสถาปัตยกรรม 32 บิต (i386 และ armv7) ML Kit รองรับสถาปัตยกรรม 64 บิต (x86_64 และ arm64)
อัปเดต CocoaPod
อัปเดตทรัพยากร Dependency สำหรับ CocoaPods ของ ML Kit บน iOS ใน Podfile ของแอป โดยทำดังนี้
API | พ็อด GMV | พ็อด ML Kit |
---|---|---|
การสแกนบาร์โค้ด | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
การตรวจจับใบหน้า | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
การรู้จำข้อความ | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
การเปลี่ยนแปลง API โดยรวม
การเปลี่ยนแปลงเหล่านี้จะมีผลกับ API ทั้งหมด
- API การอนุมานของ GMV จะใช้ข้อมูล
UIImage
หรือCMSampleBufferRef
เป็นอินพุต ML Kit จะรวมอุปกรณ์ดังกล่าวไว้ในMLKVisionImage
และป้อนข้อมูลนั้นเป็นอินพุต - GMV ใช้
NSDictionary
เพื่อส่งผ่านตัวเลือกตัวตรวจจับต่างๆ ML Kit ใช้คลาสตัวเลือกเฉพาะเพื่อวัตถุประสงค์ดังกล่าว - GMV จะส่งประเภทตัวตรวจจับไปยังคลาส
GMVDetector
เดี่ยวเมื่อสร้างตัวตรวจจับ ML Kit ใช้คลาสเฉพาะเพื่อสร้างอินสแตนซ์ตัวตรวจจับ เครื่องสแกน และตัวจดจำแยกกัน - API ของ GMV รองรับการตรวจจับแบบซิงโครนัสเท่านั้น API การอนุมานของ ML Kit อาจเรียกได้ว่าแบบซิงโครนัสและอะซิงโครนัส
- GMV ขยายระยะเวลา
AVCaptureVideoDataOutput
และมีเฟรมเวิร์กมัลติตัวตรวจจับสำหรับดำเนินการตรวจจับหลายรายการพร้อมกัน ทั้งนี้ ML Kit ไม่มีกลไกดังกล่าว แต่นักพัฒนาซอฟต์แวร์สามารถใช้ฟังก์ชันการทำงานเดียวกันนี้ได้หากต้องการ
การเปลี่ยนแปลงเฉพาะ API
ส่วนนี้จะอธิบายคลาสและวิธีการที่เกี่ยวข้องกับ GMV และ ML Kit สำหรับ Vision API แต่ละรายการ รวมถึงแสดงวิธีเริ่มต้นใช้งาน API
FaceDetector
เขียนโค้ดการเริ่มต้นใหม่ดังที่แสดงในตัวอย่างนี้
GMV
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
ML Kit
MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init]; options.performanceMode = MLKFaceDetectorPerformanceModeAccurate; options.classificationMode = MLKFaceDetectorClassificationModeAll; options.landmarkMode = MLKFaceDetectorLandmarkModeAll; MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];
GMVDetector
มี 2 รายการ
API การตรวจจับต่างๆ การดำเนินการทั้ง 2 รายการเป็นการดำเนินการแบบซิงโครนัส ดังนี้
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
แทนที่ GMVDetector
ด้วย MLKFaceDetector
โดย Inference API อาจเรียกแบบซิงโครนัสหรืออะซิงโครนัสได้
พร้อมกัน
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
อะซิงโครนัส
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
เปลี่ยนคลาส เมธอด และชื่อต่อไปนี้
BarcodeDetector
เขียนโค้ดการเริ่มต้นใหม่ดังที่แสดงในตัวอย่างนี้
GMV
NSDictionary *options = @{ GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 | GMVDetectorBarcodeFormatQRCode) }; GMVDetector *barcodeDetector = [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
ML Kit
MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init]; options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode; MLKBarcodeScanner *barcodeScanner = [MLKBarcodeScanner barcodeScannerWithOptions:options];
GMVDetector
มี API การตรวจจับ 2 แบบที่แตกต่างกัน การดำเนินการทั้ง 2 รายการเป็นการดำเนินการแบบซิงโครนัส ดังนี้
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
แทนที่ GMVDetector
ด้วย
MLKBarcodeScanner
โดย Inference API อาจเรียกแบบซิงโครนัสหรืออะซิงโครนัสได้
พร้อมกัน
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
อะซิงโครนัส
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
เปลี่ยนคลาส เมธอด และชื่อต่อไปนี้
TextRecognition
เขียนโค้ดการเริ่มต้นใหม่ดังที่แสดงในตัวอย่างนี้
GMV
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
ML Kit
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
มี 2 รายการ
API การตรวจจับต่างๆ การดำเนินการทั้ง 2 รายการเป็นการดำเนินการแบบซิงโครนัส ดังนี้
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
แทนที่ GMVDetector
ด้วย
MLKTextRecognizer
โดย Inference API อาจเรียกแบบซิงโครนัสหรืออะซิงโครนัสได้
พร้อมกัน
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
อะซิงโครนัส
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
เปลี่ยนคลาส เมธอด และชื่อต่อไปนี้
GMV | ML Kit |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
การขอความช่วยเหลือ
หากพบปัญหา โปรดไปที่หน้าชุมชน ซึ่งระบุช่องทางต่างๆ ที่สามารถติดต่อเราได้