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:
Bere debutetik, Applek Vision esparrua etengabe hobetu du, baldintza modernoak betetzeko eboluzionatzen duela ziurtatuz. 2024 amaieran, iOS 18 kaleratuta, Vision-ek orain eskaintzen du:
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.
Vision-ek VNRequest klase abstraktu bat du, Vision-en datuak eskatzeko egiturak definitzen dituena, eta ondorengo klaseek eskaera zehatzak ezartzen dituzte irudi batekin zeregin zehatzak egiteko.
Azpiklase guztiek VNRequest klaseko hasieratzailea heredatzen dute.
public init(completionHandler: VNRequestCompletionHandler? = nil)
Eskaera prozesatzeko emaitza itzultzen duena. Garrantzitsua da argitzea eskaeraren emaitza eskaera bidali zen ilara berean itzuliko dela.
Non VNRequestCompletionHandler typealias bat den.
public typealias VNRequestCompletionHandler = (VNRequest, (any Error)?) -> Void
Horrek VNRequest bat itzultzen du eskaeraren emaitzekin edo Errore bat, eskaera exekutatu ez bada sistemaren erroreren batengatik, irudi okerrengatik, etab.
VNRequest klase abstraktuko VNRecognizeTextRequest klasea irudietan testua ezagutzeko eskaerak kudeatzeko diseinatuta dago.
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 VNRecognizeTextRequest bat testua ezagutzeko.
Jaso testua ezagutzeko eskaeraren emaitzak VNRecognizedTextObservation objektuen array gisa.
VNRecognizedTextObservation objektuak honako hauek ditu:
Sortu irudiak prozesatzeko eskaera eta bidali testua ezagutzeko eskaera.
Adibidea: identifikazio fiskaleko zenbakia eta pasaporte zenbakia aitortzea dokumentuak ezagutzeko zure SDK garatzen duzunean
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 VNDetectFaceRectanglesRequest bat irudi batean aurpegiak ezagutzeko.
Jaso testua ezagutzeko eskaeraren emaitzak VNFaceObservation objektuen array gisa.
VNFaceObservation objektuak honako hauek ditu:
VNFaceObservation().boundingBox aurpegi aitortuaren koordenatuak.
Sortu irudiak prozesatzeko eskaera eta bidali aurpegia ezagutzeko eskaera.
Adibidea: Bankuetan, KYC onboarding bat dago, non pasaportearekin argazki bat atera behar duzun; horrela, benetako pertsona baten aurpegia dela baieztatu dezakezu.
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 VNDetectBarcodesRequest aitortzeko.
Lortu VNBarcodeObservation objektu-matrize eskaeraren emaitzak.
VNBarcodeObservation objektuak propietate asko ditu, besteak beste:
VNFaceObservation().payloadStringValue - barra-kodearen edo QR-kodearen katearen balioa.
Sortu irudiak prozesatzeko eskaera eta bidali aurpegia ezagutzeko eskaera.
Adibidez: QR eskanerra ordaintzeko QR kodeak irakurtzeko.
Vision-en 3 kontsulta mota nagusiak landu ditugu tresna indartsu honekin hasten laguntzeko.