paint-brush
Appleren Vision Framework-ekin hastea: garatzaileen ikuspegia arabera@threadmaster
Historia berria

Appleren Vision Framework-ekin hastea: garatzaileen ikuspegia

arabera Boris Dobretsov5m2025/02/19
Read on Terminal Reader

Luzeegia; Irakurri

Apple-ren Vision framework-a iOS 11-n sartu zen. Garatzaileei ikus-entzunezko edukia aztertzeko eta ondorengo prozesamenduak behar bezala egiteko aukera ematen die. Artikulu honetan Vision kode adibideekin erabiltzeko eszenatoki nagusiak ikusiko ditugu.
featured image - Appleren Vision Framework-ekin hastea: garatzaileen ikuspegia
Boris Dobretsov HackerNoon profile picture
0-item
1-item

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 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 }


  1. Sortu VNRecognizeTextRequest bat testua ezagutzeko.


  2. Jaso testua ezagutzeko eskaeraren emaitzak VNRecognizedTextObservation objektuen array gisa.


VNRecognizedTextObservation objektuak honako hauek ditu:

  • Aitortutako testuen array bat (V NRecognizedText().string )
  • Ezagutzeko zehaztasuna ( VNRecognizedText().confidence )
  • Irudian aitortutako testuaren koordenatuak ( VNRecognizedText().boundingBox )


  1. Sortu irudiak prozesatzeko eskaera eta bidali testua ezagutzeko eskaera.


  2. Adibidea: identifikazio fiskaleko zenbakia eta pasaporte zenbakia aitortzea dokumentuak ezagutzeko zure SDK garatzen duzunean

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 }


  1. Sortu VNDetectFaceRectanglesRequest bat irudi batean aurpegiak ezagutzeko.


  2. Jaso testua ezagutzeko eskaeraren emaitzak VNFaceObservation objektuen array gisa.


VNFaceObservation objektuak honako hauek ditu:

  1. VNFaceObservation().boundingBox aurpegi aitortuaren koordenatuak.


  2. Sortu irudiak prozesatzeko eskaera eta bidali aurpegia ezagutzeko eskaera.


  3. Adibidea: Bankuetan, KYC onboarding bat dago, non pasaportearekin argazki bat atera behar duzun; horrela, benetako pertsona baten aurpegia dela baieztatu dezakezu.


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 }


  1. Sortu VNDetectBarcodesRequest aitortzeko.


  2. Lortu VNBarcodeObservation objektu-matrize eskaeraren emaitzak.


VNBarcodeObservation objektuak propietate asko ditu, besteak beste:

  1. VNFaceObservation().payloadStringValue - barra-kodearen edo QR-kodearen katearen balioa.


  2. Sortu irudiak prozesatzeko eskaera eta bidali aurpegia ezagutzeko eskaera.


  3. Adibidez: QR eskanerra ordaintzeko QR kodeak irakurtzeko.


Vision-en 3 kontsulta mota nagusiak landu ditugu tresna indartsu honekin hasten laguntzeko.