Vision — Apple的计算机视觉框架,内置于iOS、macOS和iPadOS,提供用于分析图像、视频和实时数据的现成API。它涵盖人脸检测、文本识别、条形码、物体轮廓和运动跟踪——全部在设备上完成,无需将数据发送到服务器。根据Apple Vision Documentation (2026),该框架在搭载A14及更新芯片的设备上每秒可处理多达60帧。
要点
Vision — 是Apple在WWDC 2017上推出的高级计算机视觉框架。它为开发者提供统一的接口来执行各种图像和视频分析任务,无需深入了解计算机视觉数学或针对特定神经处理器进行优化。Vision在搭载A12+芯片的设备上自动使用Apple Neural Engine。
与OpenCV等低级库不同,Vision抽象了复杂性:开发者创建VNRequest对象,配置参数,并通过VNImageRequestHandler启动处理。框架自行决定在哪个计算单元上执行任务——CPU、GPU还是ANE——并返回结构化结果。据Apple(WWDC 2025)称,Vision被用于App Store中40%处理图像的应用。
Vision包括用于检测人脸及其特征点(多达68个点)、文本识别(OCR)支持30+语言、扫描QR和EAN条形码、跟踪帧间物体、检测矩形和轮廓、通过Core ML进行图像分类、评估运动和光流以及通过分割检测图像中人物的API。每个操作都由VNRequest的独立子类表示。
Vision基于Request → Handler → Results架构构建,其中每个请求都是一个特定任务:查找人脸、识别文本、跟踪物体。让我们看看最常用的API。
VNRequest — 是一个抽象基类,所有具体的Vision请求都继承自它。每个请求包含completionHandler、配置参数和用于处理部分图像的regionOfInterest。创建后,请求被传递给VNImageRequestHandler(用于静态图像)或VNSequenceRequestHandler(用于视频流)。结果以观察数组的形式返回——即VNObservation的子类。
VNDetectFaceRectanglesRequest查找图像中的所有人脸并返回其边框。VNDetectFaceLandmarksRequest额外确定68个关键特征点:眼睛、眉毛、鼻子、嘴唇和下颌的轮廓。VNDetectFaceCaptureQualityRequest评估人脸照片的质量——从0到1——对生物识别很有用。据Apple称,在配备Neural Engine的设备上,正面角度的人脸检测精度达到99%。
VNRecognizeTextRequest — 用于图像上光学字符识别(OCR)的API。支持拉丁文、西里尔文、中文、日文、韩文等语言的印刷文本。结果 — VNRecognizedTextObservation数组,每个包含文本字符串、边界框和置信度水平。两种模式可用:快速(Fast)用于文档扫描和精确(Accurate)用于复杂字体。
要使用Vision,只需导入框架,创建VNRequest对象并将其传递给VNImageRequestHandler。让我们看看图像上文本识别的示例。
代码创建具有精确识别模式的VNRecognizeTextRequest,在图像上运行它,并将识别出的文本输出到控制台。这个简单的示例演示了在Swift项目中使用VNImageRequestHandler在几行代码中实现Vision的最小集成。
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加载图像并执行请求。结果包含带有边界框和每个令牌置信度级别的识别文本字符串。VNRecognizedTextObservation数组可以方便地显示在屏幕上。
对于实时视频处理,使用VNSequenceRequestHandler代替VNImageRequestHandler。它接收图像(帧)数组并按顺序执行相同的请求,保持帧间的状态——这对于物体跟踪是必要的。VNSequenceRequestHandler自动管理内存:当物体离开帧时,旧观察结果被删除。实时性能取决于请求的复杂性:人脸检测在60 FPS下工作,而文本识别在搭载A16芯片的设备上以15–30 FPS的速度运行。
Vision和Core Image——两个Apple用于处理图像的框架,但它们解决根本不同的任务。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自动增加对比度并去除阴影(使用CIPhotoEffectNoir的CIFilter),而Vision在增强后的图像上识别文本。据Apple(WWDC 2025)称,与相机原始帧相比,通过Core Image进行图像预处理后,OCR精度提高了15–20%。
另一个重要的联合使用场景——用于增强现实应用的实时人脸分析。Vision检测人脸并确定68个特征点,而Core Image在检测到的区域上应用滤镜。ARKit使用Vision进行人脸跟踪,使用Core Image进行效果渲染,在搭载A15+芯片的设备上总延迟低于16毫秒。
在SwiftUI开发中集成Vision时,使用Representable协议,将AVCaptureSession和VNImageRequestHandler包装进UIViewRepresentable。摄像头通过PreviewView显示,每个帧通过AVCaptureVideoDataOutputSampleBufferDelegate传递给VisionRequestHandler。这种架构方法保持了SwiftUI的反应性,并将Vision分析结果作为@Published属性获取,以便即时更新界面。
Vision广泛应用于各类iOS应用:从文档扫描器到增强现实应用。让我们看三个典型场景。
VNDetectDocumentSegmentationRequest(从iOS 17+可用)自动检测图像中文档的边界,校正透视并返回拉直的图像。与VNRecognizeTextRequest结合,可获得完整的OCR扫描器,能够识别收据、名片和书页。据Apple称,文档分割在搭载A15芯片的设备上需要30–80毫秒。
VNTrackObjectRequest实时跟踪选定物体在视频流帧间的移动。开发者在第一帧指定物体的边界框,Vision自动计算其在后续帧中的新位置。跟踪应用于视频分析应用、AR游戏和监控系统。在A16芯片上,物体移动速度高达每帧30像素时,跟踪精度为95%。
VNDetectRectanglesRequest查找图像中的矩形区域:屏幕、纸张、标牌、文档。API返回带有透视校正的角坐标。将矩形与VNDetectContoursRequest结合,可以提取物体的精确轮廓——对增强现实应用和图形编辑器很有用。VNDetectContoursRequest返回轮廓的控制点数组,可转换为UIBezierPath进行绘制。
常见问题
iOS 11+用于基础API,iOS 13+用于文本识别(VNRecognizeTextRequest),iOS 17+用于文档分割。Vision也可在macOS 10.13+和iPadOS 13+上使用。
可以,Vision通过VNSequenceRequestHandler和AVFoundation处理视频流。该框架在使用快速请求时,在搭载A14+芯片的设备上支持高达60 FPS。
Vision — Apple的原生框架,自动针对ANE和GPU进行优化。OpenCV — 跨平台库,功能更广泛但需要手动优化,且不支持Neural Engine。
通过VNCoreMLRequest:创建Core ML模型,初始化VNCoreMLModel,将其传递给VNCoreMLRequest并通过VNImageRequestHandler运行。Xcode会自动为模型生成Swift类。
间接支持 — VNDetectFaceLandmarksRequest确定人脸关键点的位置,VNDetectFaceExpressionsRequest(iOS 17+)通过闭眼评估微笑和眨眼。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。