Vision — คือเฟรมเวิร์กคอมพิวเตอร์วิทัศน์ของ Apple ที่รวมอยู่ใน iOS, macOS และ iPadOS ซึ่งมี API พร้อมใช้สำหรับการวิเคราะห์ภาพ, วิดีโอ และแบบเรียลไทม์ ครอบคลุมการตรวจจับใบหน้า, การรู้จำข้อความ, บาร์โค้ด, รูปร่างของวัตถุ และการติดตามการเคลื่อนไหว — ทั้งหมดบนอุปกรณ์โดยไม่ต้องส่งข้อมูลไปยังเซิร์ฟเวอร์ ตาม Apple Vision Documentation (2026) เฟรมเวิร์กสามารถประมวลผลได้ถึง 60 เฟรมต่อวินาทีบนอุปกรณ์ที่มีชิป A14 ขึ้นไป
ประเด็นสำคัญ
Vision — คือเฟรมเวิร์กคอมพิวเตอร์วิทัศน์ระดับสูงที่ Apple เปิดตัวใน WWDC 2017 โดยมอบอินเทอร์เฟซแบบรวมสำหรับนักพัฒนาในการทำงานวิเคราะห์ภาพและวิดีโอต่าง ๆ โดยไม่ต้องเจาะลึกคณิตศาสตร์ของคอมพิวเตอร์วิทัศน์หรือการปรับแต่งให้เหมาะสมกับโปรเซสเซอร์ประสาทเฉพาะ Vision ใช้ Apple Neural Engine บนอุปกรณ์ที่มีชิป A12+ โดยอัตโนมัติ
แตกต่างจากไลบรารีระดับต่ำอย่าง OpenCV, Vision จะซับซ้อนให้เป็นนามธรรม: นักพัฒนาสร้างออบเจ็กต์ VNRequest, กำหนดค่าพารามิเตอร์ และเริ่มการประมวลผลผ่าน VNImageRequestHandler เฟรมเวิร์กจะตัดสินใจเองว่าจะทำงานบนหน่วยประมวลผลใด — CPU, GPU หรือ ANE — และส่งคืนผลลัพธ์ที่มีโครงสร้าง ตามข้อมูลของ Apple (WWDC 2025) Vision ถูกใช้ใน 40% ของแอปพลิเคชัน App Store ที่ทำงานกับภาพ
Vision ประกอบด้วย API สำหรับตรวจจับใบหน้าและจุดสำคัญ (สูงสุด 68 จุด), การรู้จำข้อความ (OCR) รองรับ 30+ ภาษา, การสแกนบาร์โค้ด QR และ EAN, การติดตามวัตถุระหว่างเฟรม, การตรวจจับสี่เหลี่ยมและรูปร่าง, การจำแนกภาพผ่าน Core ML, การประเมินการเคลื่อนไหวและ optical flow, และการตรวจจับมนุษย์ในภาพด้วยการแบ่งส่วน แต่ละการดำเนินการ แสดงโดยคลาสย่อยของ VNRequest ที่แยกต่างหาก
Vision สร้างขึ้นบนสถาปัตยกรรม Request → Handler → Results โดยแต่ละคำขอคืองานเฉพาะ: ค้นหาใบหน้า, รู้จำข้อความ, ติดตามวัตถุ มาดู API ที่ใช้บ่อยที่สุดกัน
VNRequest — คือคลาสพื้นฐานนามธรรมที่คำขอ Vision ทั้งหมดสืบทอดมา แต่ละคำขอประกอบด้วย completionHandler, พารามิเตอร์การกำหนดค่า และ regionOfInterest สำหรับประมวลผลส่วนหนึ่งของภาพ หลังจากสร้างคำขอแล้ว จะถูกส่งต่อไปยัง VNImageRequestHandler (สำหรับภาพนิ่ง) หรือ VNSequenceRequestHandler (สำหรับสตรีมวิดีโอ) ผลลัพธ์จะถูกส่งกลับเป็นอาร์เรย์ของการสังเกต — คลาสย่อยของ VNObservation
VNDetectFaceRectanglesRequest ค้นหาใบหน้าทั้งหมดในภาพและส่งคืนกรอบ bounding box VNDetectFaceLandmarksRequest จะระบุจุดสำคัญเพิ่มเติมอีก 68 จุด: รูปทรงของตา, คิ้ว, จมูก, ริมฝีปาก และกราม VNDetectFaceCaptureQualityRequest ประเมินคุณภาพของภาพใบหน้าตั้งแต่ 0 ถึง 1 — มีประโยชน์สำหรับไบโอเมตริกซ์ ตามข้อมูลของ Apple ความแม่นยำในการตรวจจับใบหน้าบนอุปกรณ์ที่มี Neural Engine สูงถึง 99% ในมุมมองตรง
VNRecognizeTextRequest — API สำหรับการรู้จำอักขระด้วยแสง (OCR) บนภาพ รองรับข้อความที่พิมพ์เป็นภาษาละติน, ซิริลลิก, จีน, ญี่ปุ่น, เกาหลี และภาษาอื่น ๆ ผลลัพธ์ — คืออาร์เรย์ของ VNRecognizedTextObservation ซึ่งแต่ละรายการประกอบด้วยสตริงข้อความ, bounding box และระดับความเชื่อมั่น มีสองโหมดให้เลือก: โหมดเร็ว (Fast) สำหรับสแกนเอกสาร และโหมดแม่นยำ (Accurate) สำหรับฟอนต์ที่ซับซ้อน
การใช้ Vision เพียงแค่ import เฟรมเวิร์ก, สร้างออบเจ็กต์ VNRequest และส่งต่อไปยัง VNImageRequestHandler มาดูตัวอย่างการรู้จำข้อความบนภาพกัน
โค้ดสร้าง VNRecognizeTextRequest ด้วยโหมดการรู้จำแบบแม่นยำ, รันบนภาพ และพิมพ์ข้อความที่รู้จำได้ไปยังคอนโซล ตัวอย่างง่าย ๆ นี้สาธิตการรวม Vision ขั้นต่ำในโปรเจกต์ Swift ด้วย VNImageRequestHandler ในโค้ดเพียงไม่กี่บรรทัด
import Vision
// 1. สร้างคำขอรู้จำข้อความ
let request = VNRecognizeTextRequest { request, error in
guard let observations = request.results
as? [VNRecognizedTextObservation]
else { return }
for observation in observations {
let topCandidate = observation
.topCandidates(1)
.first
print("ข้อความ: \(topCandidate?.string ?? "")")
}
}
// 2. เปิดใช้งานโหมดแม่นยำ
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. เริ่มการประมวลผล
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
โค้ด Swift กำหนดค่า VNRecognizeTextRequest ด้วยระดับการรู้จำแบบแม่นยำและเปิดการแก้ไขภาษา VNImageRequestHandler โหลดภาพจาก URL และดำเนินการตามคำขอ ผลลัพธ์ประกอบด้วยสตริงข้อความที่รู้จำได้พร้อม bounding boxes และคะแนนความเชื่อมั่นสำหรับแต่ละโทเคน อาร์เรย์ VNRecognizedTextObservation สามารถแสดงบนหน้าจอได้สะดวก
สำหรับการประมวลผลวิดีโอแบบเรียลไทม์ จะใช้ VNSequenceRequestHandler แทน VNImageRequestHandler โดยรับอาร์เรย์ของภาพ (เฟรม) และดำเนินการตามคำขอเดียวกันตามลำดับ โดยคงสถานะระหว่างเฟรม — ซึ่งจำเป็นสำหรับการติดตามวัตถุ VNSequenceRequestHandler จัดการหน่วยความจำโดยอัตโนมัติ: การสังเกตเก่าจะถูกลบเมื่อวัตถุออกจากเฟรม ประสิทธิภาพแบบเรียลไทม์ขึ้นอยู่กับความซับซ้อนของคำขอ: การตรวจจับใบหน้าทำงานที่ 60 FPS ในขณะที่การรู้จำข้อความทำงานที่ 15–30 FPS บนอุปกรณ์ที่มีชิป A16
Vision และ Core Image — คือสองเฟรมเวิร์กของ Apple สำหรับทำงานกับภาพ แต่แก้ปัญหา fundamentally ต่างกัน Core Image คือเฟรมเวิร์กสำหรับการกรองและแปลงภาพ (การใช้ฟิลเตอร์, การแก้ไขสี, การเบลอ) Vision คือเฟรมเวิร์กสำหรับทำความเข้าใจเนื้อหาของภาพ: สิ่งที่อยู่ในภาพ
| คุณลักษณะ | Vision | Core Image |
|---|---|---|
| งาน | การวิเคราะห์และการรู้จำ | การกรองและการประมวลผล |
| การตรวจจับใบหน้า | ใช่ พร้อมจุดสำคัญ | เฉพาะ CIDetector |
| การรู้จำข้อความ | ใช่ (OCR) | ไม่ |
| ฟิลเตอร์ | ไม่ | 200+ ฟิลเตอร์ |
| การทำงานร่วมกับ Core ML | ใช่ (VNCoreMLRequest) | ไม่ |
| การติดตามวัตถุ | ใช่ (VNTrackObjectRequest) | ไม่ |
| ประสิทธิภาพ | ปรับให้เหมาะกับ ANE | GPU (Metal) |
ใช้ Vision เมื่อคุณต้องการเข้าใจว่ามีอะไรอยู่ในภาพ: ใบหน้า, ข้อความ, QR โค้ด, วัตถุ ใช้ Core Image เมื่อคุณต้องการเปลี่ยนแปลงภาพ: ใช้ฟิลเตอร์, ปรับสี, ครอบตัด บ่อยครั้งที่เฟรมเวิร์กทั้งสองนี้ถูกรวมเข้าด้วยกัน: ก่อนอื่น Core Image ปรับปรุงคุณภาพของภาพ จากนั้น Vision รู้จำข้อความบนภาพนั้น
ในทางปฏิบัติ Vision และ Core Image ถูกใช้ร่วมกันในแอปพลิเคชันสแกนเอกสาร Core Image จะเพิ่มคอนทราสต์และลบเงาโดยอัตโนมัติ (CIFilter กับ CIPhotoEffectNoir) ในขณะที่ Vision รู้จำข้อความบนภาพที่ปรับปรุงแล้ว ตามข้อมูลของ Apple (WWDC 2025) ความแม่นยำของ OCR เพิ่มขึ้น 15–20% เมื่อประมวลผลภาพผ่าน Core Image ล่วงหน้าเมื่อเทียบกับเฟรมดิบจากกล้อง
อีกสถานการณ์สำคัญของการใช้งานร่วมกันคือ การวิเคราะห์ใบหน้าแบบเรียลไทม์ สำหรับแอปพลิเคชันความเป็นจริงเสริม Vision ตรวจจับใบหน้าและระบุจุดสำคัญ 68 จุด ในขณะที่ Core Image ใช้ฟิลเตอร์บนพื้นที่ที่ตรวจพบ ARKit ใช้ Vision สำหรับการติดตามใบหน้าและ Core Image สำหรับการเรนเดอร์เอฟเฟกต์ ซึ่งให้ความหน่วงรวมน้อยกว่า 16 ms บนอุปกรณ์ที่มีชิป A15+
สำหรับการรวม Vision ใน SwiftUI จะใช้โปรโตคอล Representable ที่ห่อ AVCaptureSession และ VNImageRequestHandler ใน UIViewRepresentable กล้องจะแสดงผ่าน PreviewView แต่ละเฟรมจะถูกส่งไปยัง VisionRequestHandler ผ่าน AVCaptureVideoDataOutputSampleBufferDelegate วิธีการทางสถาปัตยกรรมนี้ช่วยให้คง reactivity ของ SwiftUI และรับผลลัพธ์การวิเคราะห์ Vision เป็นคุณสมบัติ @Published สำหรับการอัปเดตอินเทอร์เฟซทันที
Vision ถูกใช้ในแอปพลิเคชัน iOS ที่หลากหลาย: ตั้งแต่เครื่องสแกนเอกสารไปจนถึงแอปพลิเคชันความเป็นจริงเสริม มาดูสามสถานการณ์ที่เป็นลักษณะเฉพาะ
VNDetectDocumentSegmentationRequest (ใช้ได้ตั้งแต่ iOS 17+) จะตรวจจับขอบเขตของเอกสารในภาพโดยอัตโนมัติ, ปรับแก้มุมมองเปอร์สเปคทีฟ และส่งคืนภาพที่ straightened เมื่อรวมกับ VNRecognizeTextRequest จะได้เครื่องสแกน OCR ที่สมบูรณ์ที่สามารถรู้จำใบเสร็จ, นามบัตร และหน้าหนังสือ ตามข้อมูลของ Apple การแบ่งส่วนเอกสารใช้เวลา 30–80 ms บนอุปกรณ์ที่มีชิป A15
VNTrackObjectRequest ติดตามการเคลื่อนที่ของวัตถุที่เลือกระหว่างเฟรมของสตรีมวิดีโอแบบเรียลไทม์ นักพัฒนาระบุ bounding box ของวัตถุบนเฟรมแรก และ Vision จะคำนวณตำแหน่งใหม่บนเฟรมถัดไปโดยอัตโนมัติ การติดตาม ใช้ในแอปพลิเคชันวิดีโอแอนะลิติกส์, เกม AR และระบบเฝ้าระวัง ความแม่นยำในการติดตามบนชิป A16 คือ 95% ที่ความเร็ววัตถุสูงสุด 30 พิกเซลต่อเฟรม
VNDetectRectanglesRequest ค้นหาพื้นที่สี่เหลี่ยมในภาพ: หน้าจอ, แผ่นกระดาษ, ป้าย, เอกสาร API ส่งคืนพิกัดมุมพร้อมการปรับแก้เปอร์สเปคทีฟ การรวมสี่เหลี่ยมกับ VNDetectContoursRequest ช่วยให้สามารถแยกรูปร่างที่แน่นอนของวัตถุได้ — มีประโยชน์สำหรับแอปพลิเคชันความเป็นจริงเสริมและโปรแกรมแก้ไขกราฟิก VNDetectContoursRequest ส่งคืนอาร์เรย์ของจุดควบคุมที่สามารถแปลงเป็น UIBezierPath สำหรับการวาด
คำถามที่พบบ่อย
iOS 11+ สำหรับ API พื้นฐาน, iOS 13+ สำหรับการรู้จำข้อความ (VNRecognizeTextRequest), iOS 17+ สำหรับการแบ่งส่วนเอกสาร Vision ยังใช้ได้บน macOS 10.13+ และ iPadOS 13+
ได้, Vision ประมวลผลสตรีมวิดีโอผ่าน VNSequenceRequestHandler และ AVFoundation เฟรมเวิร์กรองรับสูงสุด 60 FPS บนอุปกรณ์ที่มีชิป A14+ เมื่อใช้คำขอแบบเร็ว
Vision — คือเฟรมเวิร์กดั้งเดิมของ Apple ที่ปรับให้เหมาะกับ ANE และ GPU โดยอัตโนมัติ OpenCV — คือไลบรารีข้ามแพลตฟอร์มที่มีความสามารถกว้างกว่า แต่ต้องปรับแต่งด้วยตนเองและไม่รองรับ Neural Engine
ผ่าน VNCoreMLRequest: สร้างโมเดล Core ML, เริ่มต้น VNCoreMLModel, ส่งต่อไปยัง VNCoreMLRequest และรันผ่าน VNImageRequestHandler Xcode จะสร้างคลาส Swift ให้กับโมเดลโดยอัตโนมัติ
ทางอ้อม — VNDetectFaceLandmarksRequest ระบุตำแหน่งจุดสำคัญของใบหน้า ส่วน VNDetectFaceExpressionsRequest (iOS 17+) ประเมินการยิ้มและการขยิบตาผ่านการหลับตา
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ