paint-brush
Apple's Vision Framework менен баштоо: Иштеп чыгуучунун көз карашы тарабынан@threadmaster
479 окуулар
479 окуулар

Apple's Vision Framework менен баштоо: Иштеп чыгуучунун көз карашы

тарабынан Boris Dobretsov5m2025/02/19
Read on Terminal Reader

өтө узун; Окуу

Apple компаниясынын Vision алкагы iOS 11де киргизилген. Ал иштеп чыгуучуларга визуалдык мазмунду талдоо жана зарыл болгон учурда кийинки иштетүүнү жүргүзүүгө мүмкүндүк берет. Бул макалада биз код мисалдары менен Vision колдонуунун негизги сценарийлерин карап чыгабыз.
featured image - Apple's Vision Framework менен баштоо: Иштеп чыгуучунун көз карашы
Boris Dobretsov HackerNoon profile picture
0-item
1-item

Vision алкагы Apple тарабынан 2017-жылы iOS 11дин бир бөлүгү катары WWDCде киргизилген. Анын ишке кириши машина көрүү жана сүрөттү талдоо эволюциясында бурулуш учур болуп, иштеп чыгуучуларга визуалдык мазмунду талдоо жана зарыл болгон учурда кийинки иштетүүнү жүргүзүү үчүн жергиликтүү куралдар менен камсыз кылууда.


2017-жылы, Vision киргизилген:

  • Текст таануу
  • Жүздү таануу
  • Төрт бурчтуу формаларды аныктоо
  • Штрихкод жана QR кодун таануу


Дебютунан бери Apple Vision алкактарын тынымсыз өркүндөтүп, анын заманбап талаптарга жооп беришин камсыз кылып келет. 2024-жылдын акырына карата, iOS 18 чыгаруу менен, Vision азыр сунуш кылат:

  • Көптөгөн тилдерди колдоо менен жакшыртылган текстти таануу тактыгы
  • Жүздөрдү жана алардын өзгөчөлүктөрүн аныктоо
  • Кыймылдарды талдоо жөндөмдүүлүгү
  • Позаларды, анын ичинде колдун абалын жана адамдын денесинин негизги пункттарын таануу жөндөмү
  • Видеодогу объекттерге көз салуу үчүн колдоо
  • Ыңгайлаштырылган машина үйрөнүү моделдери менен иштөө үчүн CoreML менен жакшыртылган интеграция
  • AVKit, ARKit сыяктуу тиешелүү алкактар менен терең интеграция


Vision алкагынын пайда болушу менен, иштеп чыгуучулар үчүнчү тараптын чечимдерине ишенбестен, өнүккөн сүрөт жана видео талдоо тапшырмаларын жергиликтүү түрдө аткаруу мүмкүнчүлүгүнө ээ болушту. Бул мүмкүнчүлүктөргө документтерди сканерлөө, текстти таануу, жүздөрдү жана позаларды аныктоо, кайталанма сүрөттөрдү табуу жана бизнес операцияларын иретке келтирүүчү ар кандай процесстерди автоматташтыруу кирет.


Бул макалада биз Visionди колдонуунун негизги сценарийлерин коддук мисалдар менен карап чыгабыз, алар сизге аны менен кантип иштөө керектигин түшүнүүгө, бул кыйын эмес экенин түшүнүүгө жана аны тиркемелериңизде практикада колдоно баштайбыз.

VNRequest

Vision'дун абстракттуу классы VNRequest бар, ал Vision'те берилиштерге суроо-талап структураларын аныктайт жана тукум класстар сүрөт менен конкреттүү тапшырмаларды аткаруу үчүн атайын суроо-талаптарды ишке ашырат.


Бардык субкласстар инициализаторду 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 }


  1. Текстти таануу үчүн VNRecognizeTextRequest түзүңүз.


  2. Текстти таануу сурамынын натыйжаларын VNRecognizedTextObservation объекттеринин массивдери катары кабыл алыңыз.


VNRecognizedTextObservation объекти төмөнкүлөрдү камтыйт:

  • Таанылган тексттердин массиви (V NRecognizedText().string )
  • Таануунун тактыгы ( VNRecognizedText().confidence )
  • Сүрөттөгү таанылган тексттин координаттары ( VNRecognizedText().boundingBox )


  1. Сүрөттү иштетүү үчүн суроо-талапты түзүп, текстти таануу өтүнүчүн жөнөтүңүз.


  2. Мисал: Документти таануу үчүн өзүңүздүн SDKңызды иштеп чыгууда салыктын идентификациялык номерин жана паспорттун номерин таануу

VNDetectFaceRectanglesRequest

Бул класс сүрөттөгү жүздөрдү таап, алардын координаттарын кайтарат.


Жүздү таануу өтүнүчүн ишке ашыруунун мисалы:

 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. Сүрөттө жүздү таануу үчүн VNDetectFaceRectanglesRequest түзүңүз.


  2. Текстти таануу сурамынын натыйжаларын VNFaceObservation объекттеринин массивдери катары кабыл алыңыз.


VNFaceObservation объекти төмөнкүлөрдү камтыйт:

  1. Таанылган беттин координаттары VNFaceObservation().boundingBox.


  2. Сүрөттү иштетүү үчүн сурам түзүңүз жана жүздү таануу өтүнүчүн жөнөтүңүз.


  3. Мисал: Банктарда паспортуңуз менен сүрөткө түшүүгө туура келген KYC onboarding бар; ушундай жол менен, бул чыныгы адамдын жүзү экенин тастыктай аласыз.


VNDetectBarcodesRequest

Бул класс сүрөттөн штрих-коддорду жана 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 }


  1. таануу үчүн VNDetectBarcodesRequest түзүү.


  2. VNBarcodeObservation объектинин массивинин сурамынын натыйжаларын алыңыз.


VNBarcodeObservation объекти көптөгөн касиеттерди камтыйт, анын ичинде:

  1. VNFaceObservation().payloadStringValue - штрих-коддун же QR коддун саптык мааниси.


  2. Сүрөттү иштетүү үчүн сурам түзүп, жүздү таануу өтүнүчүн жөнөтүңүз.


  3. Мисал: төлөө үчүн QR коддорун окуу үчүн QR сканери.


Бул күчтүү куралды колдонууну баштоого жардам берүү үчүн биз Vision'да сурамдардын 3 негизги түрүн карадык.