ក្របខ័ណ្ឌ Vision ត្រូវបានណែនាំដោយ Apple ក្នុងឆ្នាំ 2017 នៅ WWDC ដែលជាផ្នែកមួយនៃប្រព័ន្ធប្រតិបត្តិការ iOS 11 ។ ការបើកដំណើរការរបស់វាបានសម្គាល់ចំណុចរបត់មួយក្នុងការវិវត្តន៍នៃចក្ខុវិស័យម៉ាស៊ីន និងការវិភាគរូបភាព ដោយផ្តល់ឱ្យអ្នកអភិវឌ្ឍន៍នូវឧបករណ៍ដើមដើម្បីវិភាគមាតិកាដែលមើលឃើញ និងដំណើរការជាបន្តបន្ទាប់តាមតម្រូវការ។
នៅឆ្នាំ ២០១៧ ចក្ខុវិស័យបានណែនាំ៖
ចាប់តាំងពីការបង្ហាញខ្លួនលើកដំបូង Apple បានបន្តពង្រឹងក្របខ័ណ្ឌ Vision ដោយធានាថាវាវិវឌ្ឍទៅតាមតម្រូវការទំនើប។ នៅចុងឆ្នាំ 2024 ជាមួយនឹងការចេញផ្សាយ iOS 18 ឥឡូវនេះ Vision ផ្តល់ជូន៖
ជាមួយនឹងការមកដល់នៃក្របខ័ណ្ឌ Vision អ្នកអភិវឌ្ឍន៍ទទួលបានសមត្ថភាពក្នុងការអនុវត្តភារកិច្ចវិភាគរូបភាព និងវីដេអូកម្រិតខ្ពស់ពីដើម ដោយមិនពឹងផ្អែកលើដំណោះស្រាយភាគីទីបី។ សមត្ថភាពទាំងនេះរួមមានការស្កែនឯកសារ សម្គាល់អត្ថបទ កំណត់អត្តសញ្ញាណមុខ និងទីតាំង រកឃើញរូបភាពស្ទួន និងដំណើរការស្វ័យប្រវត្តិកម្មផ្សេងៗដែលសម្រួលប្រតិបត្តិការអាជីវកម្ម។
នៅក្នុងអត្ថបទនេះ យើងនឹងពិនិត្យមើលសេណារីយ៉ូសំខាន់ៗនៃការប្រើប្រាស់ Vision ជាមួយនឹងឧទាហរណ៍កូដដែលនឹងជួយអ្នកឱ្យយល់ពីរបៀបធ្វើការជាមួយវា យល់ថាវាមិនពិបាកទេ ហើយចាប់ផ្តើមអនុវត្តវានៅក្នុងការអនុវត្តនៅក្នុងកម្មវិធីរបស់អ្នក។
Vision មាន VNRequest ថ្នាក់អរូបីដែលកំណត់រចនាសម្ព័ន្ធសំណើទិន្នន័យនៅក្នុង Vision ហើយថ្នាក់បន្តបន្ទាប់អនុវត្តសំណើជាក់លាក់ដើម្បីអនុវត្តកិច្ចការជាក់លាក់ជាមួយរូបភាព។
ថ្នាក់រងទាំងអស់ទទួលមរតកកម្មវិធីចាប់ផ្តើមពីថ្នាក់ VNRequest ។
public init(completionHandler: VNRequestCompletionHandler? = nil)
ដែលត្រឡប់លទ្ធផលនៃការដំណើរការសំណើ។ វាចាំបាច់ក្នុងការបញ្ជាក់ឱ្យច្បាស់ថាលទ្ធផលនៃសំណើនឹងត្រូវបានបញ្ជូនត្រឡប់មកវិញក្នុងជួរដូចគ្នាដែលសំណើត្រូវបានផ្ញើ។
កន្លែងដែល VNRequestCompletionHandler គឺជាប្រភេទវាយអក្សរ។
public typealias VNRequestCompletionHandler = (VNRequest, (any Error)?) -> Void
ដែលផ្តល់លទ្ធផល VNRequest ជាមួយនឹងលទ្ធផលនៃសំណើ ឬកំហុស ប្រសិនបើសំណើមិនត្រូវបានប្រតិបត្តិដោយសារបញ្ហាប្រព័ន្ធមួយចំនួន រូបភាពមិនត្រឹមត្រូវ។ល។
ថ្នាក់ VNRecognizeTextRequest ពីថ្នាក់ VNRequest អរូបីត្រូវបានរចនាឡើងដើម្បីដោះស្រាយសំណើការទទួលស្គាល់អត្ថបទក្នុងរូបភាព។
ឧទាហរណ៍នៃការអនុវត្តសំណើសម្រាប់ការទទួលស្គាល់អត្ថបទ៖
import Vision import UIKit func recognizeText(from image: UIImage) { guard let cgImage = image.cgImage else { return } let request = VNRecognizeTextRequest { request, error in // 1 guard let observations = request.results as? [VNRecognizedTextObservation] else { return } // 2 for observation in observations { if let topCandidate = observation.topCandidates(1).first { print("Recognized text: \(topCandidate.string)") print("Text boundingBox: \(observation.boundingBox)") print("Accuracy: \(topCandidate.confidence)") } } } request.recognitionLevel = .accurate request.usesLanguageCorrection = true let handler = VNImageRequestHandler(cgImage: cgImage, options: [:]) // 3 try? handler.perform([request]) // 3 }
បង្កើត VNRecognizeTextRequest សម្រាប់ការទទួលស្គាល់អត្ថបទ។
ទទួលលទ្ធផលនៃសំណើការទទួលស្គាល់អត្ថបទជាអារេនៃវត្ថុ VNRecognizedTextObservation ។
វត្ថុ VNRrecognizedTextObservation មាន៖
បង្កើតសំណើសម្រាប់ដំណើរការរូបភាព និងផ្ញើសំណើសម្រាប់ការទទួលស្គាល់អត្ថបទ។
ឧទាហរណ៍៖ ការទទួលស្គាល់លេខអត្តសញ្ញាណពន្ធ និងលេខលិខិតឆ្លងដែន នៅពេលបង្កើត SDK ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការទទួលស្គាល់ឯកសារ
ថ្នាក់នេះរកឃើញមុខនៅក្នុងរូបភាពមួយ ហើយត្រឡប់កូអរដោនេរបស់ពួកគេ។
ឧទាហរណ៍នៃការអនុវត្តសំណើសម្គាល់មុខ៖
import Vision import UIKit func detectFaces(from image: UIImage) { guard let cgImage = image.cgImage else { return } let request = VNDetectFaceRectanglesRequest { request, error in // 1 guard let results = request.results as? [VNFaceObservation] else { return } // 2 for face in results { print("Face detected: \(face.boundingBox)") } } let handler = VNImageRequestHandler(cgImage: cgImage, options: [:]) // 3 try? handler.perform([request]) // 3 }
បង្កើត VNDetectFaceRectanglesRequest សម្រាប់ការសម្គាល់មុខនៅក្នុងរូបភាពមួយ។
ទទួលលទ្ធផលនៃសំណើការទទួលស្គាល់អត្ថបទជាអារេនៃវត្ថុ VNFaceObservation ។
វត្ថុ VNFaceObservation មាន៖
កូអរដោនេនៃមុខ VNFaceObservation().boundingBox ដែលទទួលស្គាល់។
បង្កើតសំណើសម្រាប់ដំណើរការរូបភាព និងផ្ញើសំណើសម្រាប់ការសម្គាល់មុខ។
ឧទាហរណ៍៖ នៅក្នុងធនាគារ មាន KYC onboarding ដែលអ្នកត្រូវថតរូបជាមួយលិខិតឆ្លងដែនរបស់អ្នក។ វិធីនេះ អ្នកអាចបញ្ជាក់បានថា នេះជាមុខមនុស្សពិត។
ថ្នាក់នេះស្គាល់ និងអានបាកូដ និងកូដ QR ពីរូបភាព។
ឧទាហរណ៍នៃការអនុវត្តសំណើសម្រាប់ការទទួលស្គាល់ និងអានលេខកូដ និង QR កូដ៖
import Vision import UIKit func detectBarcodes(from image: UIImage) { guard let cgImage = image.cgImage else { return } let request = VNDetectBarcodesRequest { request, error in // 1 guard let results = request.results as? [VNBarcodeObservation] else { return } // 2 for qrcode in results { print("qr code was found: \(qrcode.payloadStringValue ?? "not data")") } } let handler = VNImageRequestHandler(cgImage: cgImage, options: [:]) // 3 try? handler.perform([request]) // 3 }
បង្កើត VNDetectBarcodesRequest សម្រាប់ការទទួលស្គាល់។
ទទួលបានលទ្ធផលនៃសំណើអារេវត្ថុ VNBarcodeObservation ។
វត្ថុ VNBarcodeObservation មានលក្ខណៈសម្បត្តិជាច្រើន រួមទាំង៖
VNFaceObservation().payloadStringValue - តម្លៃខ្សែអក្សរនៃបាកូដ ឬកូដ QR ។
បង្កើតសំណើសម្រាប់ដំណើរការរូបភាព និងផ្ញើសំណើសម្រាប់ការសម្គាល់មុខ។
ឧទាហរណ៍៖ ម៉ាស៊ីនស្កេន QR សម្រាប់អានលេខកូដ QR សម្រាប់ការទូទាត់។
យើងបានគ្របដណ្តប់សំណួរ 3 ប្រភេទសំខាន់ៗនៅក្នុង Vision ដើម្បីជួយអ្នកចាប់ផ្តើមជាមួយឧបករណ៍ដ៏មានឥទ្ធិពលនេះ។