
Vision алкагы Apple тарабынан 2017-жылы iOS 11дин бир бөлүгү катары WWDCде киргизилген. Анын ишке кириши машина көрүү жана сүрөттү талдоо эволюциясында бурулуш учур болуп, иштеп чыгуучуларга визуалдык мазмунду талдоо жана зарыл болгон учурда кийинки иштетүүнү жүргүзүү үчүн жергиликтүү куралдар менен камсыз кылууда.
2017-жылы, Vision киргизилген:
Дебютунан бери Apple Vision алкактарын тынымсыз өркүндөтүп, анын заманбап талаптарга жооп беришин камсыз кылып келет. 2024-жылдын акырына карата, iOS 18 чыгаруу менен, Vision азыр сунуш кылат:
Vision алкагынын пайда болушу менен, иштеп чыгуучулар үчүнчү тараптын чечимдерине ишенбестен, өнүккөн сүрөт жана видео талдоо тапшырмаларын жергиликтүү түрдө аткаруу мүмкүнчүлүгүнө ээ болушту. Бул мүмкүнчүлүктөргө документтерди сканерлөө, текстти таануу, жүздөрдү жана позаларды аныктоо, кайталанма сүрөттөрдү табуу жана бизнес операцияларын иретке келтирүүчү ар кандай процесстерди автоматташтыруу кирет.
Бул макалада биз Visionди колдонуунун негизги сценарийлерин коддук мисалдар менен карап чыгабыз, алар сизге аны менен кантип иштөө керектигин түшүнүүгө, бул кыйын эмес экенин түшүнүүгө жана аны тиркемелериңизде практикада колдоно баштайбыз.
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 }
Текстти таануу үчүн 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 onboarding бар; ушундай жол менен, бул чыныгы адамдын жүзү экенин тастыктай аласыз.
Бул класс сүрөттөн штрих-коддорду жана 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 сканери.
Бул күчтүү куралды колдонууну баштоого жардам берүү үчүн биз Vision'да сурамдардын 3 негизги түрүн карадык.