भिजन फ्रेमवर्क एप्पलले २०१७ मा WWDC मा iOS ११ को भागको रूपमा प्रस्तुत गरेको थियो। यसको सुरुवातले मेसिन भिजन र छवि विश्लेषणको विकासमा एक महत्वपूर्ण मोड लियो, जसले विकासकर्ताहरूलाई दृश्य सामग्री विश्लेषण गर्न र आवश्यकता अनुसार पछिको प्रशोधन गर्न नेटिभ उपकरणहरू प्रदान गर्यो।
२०१७ मा, भिजनले प्रस्तुत गर्यो:
आफ्नो सुरुवातदेखि नै, एप्पलले भिजन फ्रेमवर्कलाई निरन्तर बढाएको छ, जसले गर्दा यो आधुनिक आवश्यकताहरू पूरा गर्न विकसित भएको सुनिश्चित गर्दैछ। २०२४ को अन्त्यसम्ममा, iOS १८ को रिलीजसँगै, भिजनले अब निम्न प्रस्तावहरू प्रदान गर्दछ:
भिजन फ्रेमवर्कको आगमनसँगै, विकासकर्ताहरूले तेस्रो-पक्ष समाधानहरूमा भर नपरिकन, उन्नत छवि र भिडियो विश्लेषण कार्यहरू नेटिभ रूपमा गर्ने क्षमता प्राप्त गरे। यी क्षमताहरूमा कागजातहरू स्क्यान गर्ने, पाठ पहिचान गर्ने, अनुहार र पोजहरू पहिचान गर्ने, डुप्लिकेट छविहरू पत्ता लगाउने, र व्यापार सञ्चालनलाई सुव्यवस्थित गर्ने विभिन्न प्रक्रियाहरूलाई स्वचालित गर्ने समावेश छ।
यस लेखमा, हामी कोड उदाहरणहरू सहित भिजन प्रयोग गर्ने मुख्य परिदृश्यहरू हेर्नेछौं जसले तपाईंलाई यसको साथ कसरी काम गर्ने भनेर बुझ्न, यो गाह्रो छैन भनेर बुझ्न र तपाईंको अनुप्रयोगहरूमा यसलाई व्यवहारमा लागू गर्न सुरु गर्न मद्दत गर्नेछ।
भिजनमा एउटा अमूर्त वर्ग VNRequest छ जसले भिजनमा डेटा अनुरोध संरचनाहरू परिभाषित गर्दछ, र डिसेन्डेन्ट वर्गहरूले छविसँग विशिष्ट कार्यहरू गर्न विशिष्ट अनुरोधहरू लागू गर्दछ।
सबै उपवर्गहरूले VNRequest वर्गबाट प्रारम्भिककर्ता प्राप्त गर्छन्।
public init(completionHandler: VNRequestCompletionHandler? = nil)
जसले अनुरोध प्रशोधनको नतिजा फर्काउँछ। यो स्पष्ट पार्नु महत्त्वपूर्ण छ कि अनुरोधको नतिजा अनुरोध पठाइएको लाइनमा नै फर्काइनेछ।
जहाँ VNRequestCompletionHandler एक प्रकार्य हो।
public typealias VNRequestCompletionHandler = (VNRequest, (any Error)?) -> Void
जसले अनुरोधको नतिजा सहितको VNRequest फर्काउँछ वा यदि कुनै प्रणाली त्रुटि, गलत छवि, आदिका कारण अनुरोध कार्यान्वयन नभएको खण्डमा त्रुटि फर्काउँछ।
अमूर्त VNRequest वर्गको VNRecognizeTextRequest वर्ग छविहरूमा पाठ पहिचान अनुरोधहरू ह्यान्डल गर्न डिजाइन गरिएको हो।
पाठ पहिचानको लागि अनुरोध कार्यान्वयन गर्ने उदाहरण:
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 वस्तुहरूको एरेको रूपमा पाठ पहिचान अनुरोधको नतिजा प्राप्त गर्नुहोस्।
VNRecognizedTextObservation वस्तुमा समावेश छ:
छवि प्रशोधनको लागि अनुरोध सिर्जना गर्नुहोस्, र पाठ पहिचानको लागि अनुरोध पठाउनुहोस्।
उदाहरण: कागजात पहिचानको लागि आफ्नै 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 अनबोर्डिङ हुन्छ जहाँ तपाईंले आफ्नो राहदानीसँग फोटो खिच्नुपर्छ; यस तरिकाले, तपाईंले यो वास्तविक व्यक्तिको अनुहार हो भनेर पुष्टि गर्न सक्नुहुन्छ।
यो वर्गले छविबाट बारकोड र 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 स्क्यानर।
यस शक्तिशाली उपकरणको साथ सुरु गर्न मद्दतको लागि हामीले भिजनमा ३ मुख्य प्रकारका प्रश्नहरू समेटेका छौं।