Vision framework-a Apple-k 2017an aurkeztu zuen WWDC-n iOS 11-en barruan. Bere abiarazteak inflexio-puntua izan zuen ikusmen automatikoaren eta irudien analisiaren bilakaeran, garatzaileei jatorrizko tresnak eskainiz ikusizko edukia aztertzeko eta ondorengo prozesamenduak behar bezala egiteko. 2017an, Vision-ek aurkeztu zuen: Testu-ezagutza Aurpegi-ezagutza Forma angeluzuzenak hautematea Barra-kodeak eta QR kodeak hautematea Bere debutetik, Applek Vision esparrua etengabe hobetu du, baldintza modernoak betetzeko eboluzionatzen duela ziurtatuz. 2024 amaieran, iOS 18 kaleratuta, Vision-ek orain eskaintzen du: Testuak hautemateko zehaztasuna hobetu da hizkuntza kopuru handiarekin batera Aurpegiak eta haien ezaugarriak hautematea Mugimenduak aztertzeko gaitasuna Jarrerak ezagutzeko gaitasuna, eskuen posizioa eta giza gorputzaren funtsezko puntuak barne Bideoan objektuak jarraitzeko laguntza CoreML-rekin integrazio hobetua ikaskuntza automatikoko eredu pertsonalizatuekin lan egiteko Integrazio sakona erlazionatutako esparruekin, hala nola AVKit, ARKit Vision framework-aren etorrerarekin, garatzaileek irudi eta bideo-analisi-lan aurreratuak modu natiboki egiteko gaitasuna lortu zuten, hirugarrenen soluzioetan fidatu gabe. Gaitasun hauek dokumentuak eskaneatzea, testua antzematea, aurpegiak eta jarrerak identifikatzea, irudi bikoiztuak detektatzea eta negozio-eragiketak errazten dituzten hainbat prozesu automatizatzea dira. Artikulu honetan, Vision erabiltzeko agertoki nagusiak ikusiko ditugu kode-adibideekin, nola lan egin ulertzen lagunduko dizutena, ez dela zaila ulertzen eta zure aplikazioetan praktikan aplikatzen hasteko. VNReskatzea Vision-ek klase abstraktu bat du, Vision-en datuak eskatzeko egiturak definitzen dituena, eta ondorengo klaseek eskaera zehatzak ezartzen dituzte irudi batekin zeregin zehatzak egiteko. VNRequest Azpiklase guztiek klaseko hasieratzailea heredatzen dute. VNRequest public init(completionHandler: VNRequestCompletionHandler? = nil) Eskaera prozesatzeko emaitza itzultzen duena. Garrantzitsua da argitzea eskaeraren emaitza eskaera bidali zen ilara berean itzuliko dela. Non typealias bat den. VNRequestCompletionHandler public typealias VNRequestCompletionHandler = (VNRequest, (any Error)?) -> Void Horrek bat itzultzen du eskaeraren emaitzekin edo Errore bat, eskaera exekutatu ez bada sistemaren erroreren batengatik, irudi okerrengatik, etab. VNRequest klase abstraktuko klasea irudietan testua ezagutzeko eskaerak kudeatzeko diseinatuta dago. VNRequest VNRecognizeTextRequest Testuak ezagutzeko eskaera bat ezartzearen adibidea: 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 } Sortu bat testua ezagutzeko. VNRecognizeTextRequest Jaso testua ezagutzeko eskaeraren emaitzak VNRecognizedTextObservation objektuen array gisa. objektuak honako hauek ditu: VNRecognizedTextObservation Aitortutako testuen array bat (V ) NRecognizedText().string Ezagutzeko zehaztasuna ( ) VNRecognizedText().confidence Irudian aitortutako testuaren koordenatuak ( ) VNRecognizedText().boundingBox Sortu irudiak prozesatzeko eskaera eta bidali testua ezagutzeko eskaera. identifikazio fiskaleko zenbakia eta pasaporte zenbakia aitortzea dokumentuak ezagutzeko zure SDK garatzen duzunean Adibidea: VNDetectFaceRectanglesRequest Klase honek irudi batean aurpegiak aurkitzen ditu eta haien koordenatuak itzultzen ditu. Aurpegiak ezagutzeko eskaera bat ezartzearen adibidea: 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 } Sortu bat irudi batean aurpegiak ezagutzeko. VNDetectFaceRectanglesRequest Jaso testua ezagutzeko eskaeraren emaitzak objektuen array gisa. VNFaceObservation objektuak honako hauek ditu: VNFaceObservation VNFaceObservation().boundingBox aurpegi aitortuaren koordenatuak. Sortu irudiak prozesatzeko eskaera eta bidali aurpegia ezagutzeko eskaera. Bankuetan, KYC onboarding bat dago, non pasaportearekin argazki bat atera behar duzun; horrela, benetako pertsona baten aurpegia dela baieztatu dezakezu. Adibidea: VNDetectBarcodesRequest Klase honek irudi batetik barra-kodeak eta QR kodeak ezagutzen eta irakurtzen ditu. Barra-kode bat eta QR kodea ezagutzeko eta irakurtzeko eskaera ezartzearen adibidea: 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 } Sortu aitortzeko. VNDetectBarcodesRequest Lortu objektu-matrize eskaeraren emaitzak. VNBarcodeObservation objektuak propietate asko ditu, besteak beste: VNBarcodeObservation - barra-kodearen edo QR-kodearen katearen balioa. VNFaceObservation().payloadStringValue Sortu irudiak prozesatzeko eskaera eta bidali aurpegia ezagutzeko eskaera. QR eskanerra ordaintzeko QR kodeak irakurtzeko. Adibidez: Vision-en 3 kontsulta mota nagusiak landu ditugu tresna indartsu honekin hasten laguntzeko.