Vision é um framework de visão computacional da Apple, incorporado no iOS, macOS e iPadOS, fornecendo APIs prontas para analisar imagens, vídeo e dados em tempo real. Abrange deteção facial, reconhecimento de texto, códigos de barras, contornos de objetos e rastreamento de movimento — tudo no dispositivo sem enviar dados para o servidor. De acordo com a Apple Vision Documentation (2026), o framework processa até 60 quadros por segundo em dispositivos com chip A14 e posteriores.
Principais conclusões
Vision é um framework de alto nível de visão computacional apresentado pela Apple na WWDC 2017. Fornece aos desenvolvedores uma interface unificada para realizar várias tarefas de análise de imagens e vídeo sem precisar mergulhar na matemática da visão computacional ou otimizar para processadores neuronais específicos. Vision usa automaticamente o Neural Engine da Apple em dispositivos com chips A12+.
Ao contrário de bibliotecas de baixo nível como OpenCV, Vision abstrai a complexidade: o desenvolvedor cria um objeto VNRequest, configura parâmetros e executa o processamento através do VNImageRequestHandler. O framework decide qual unidade de computação usar — CPU, GPU ou ANE — e retorna resultados estruturados. De acordo com a Apple (WWDC 2025), a Vision é usada em 40% das aplicações da App Store que trabalham com imagens.
Vision inclui APIs para deteção facial e de marcos (até 68 pontos), reconhecimento de texto (OCR) com suporte para mais de 30 idiomas, digitalização de códigos de barras QR e EAN, rastreamento de objetos entre quadros, deteção de retângulos e contornos, classificação de imagens através do Core ML, estimativa de movimento e fluxo ótico, e deteção de pessoas com segmentação. Cada operação é representada por uma subclasse separada de VNRequest.
Vision é construída na arquitetura Request → Handler → Results, onde cada pedido é uma tarefa específica: encontrar rostos, reconhecer texto, rastrear um objeto. Vamos ver as APIs mais usadas.
VNRequest é uma classe base abstrata da qual todos os pedidos concretos da Vision herdam. Cada pedido tem um completionHandler, parâmetros de configuração e um regionOfInterest para processar parte de uma imagem. Após criar um pedido, ele é passado para VNImageRequestHandler (para imagens estáticas) ou VNSequenceRequestHandler (para fluxos de vídeo). Os resultados são devolvidos como uma matriz de observações — subclasses de VNObservation.
VNDetectFaceRectanglesRequest encontra todos os rostos numa imagem e devolve os seus retângulos delimitadores. VNDetectFaceLandmarksRequest adicionalmente identifica 68 marcos chave: contorno dos olhos, sobrancelhas, nariz, lábios e mandíbula. VNDetectFaceCaptureQualityRequest avalia a qualidade da captura facial — de 0 a 1 — útil para biometria. Segundo a Apple, a precisão da deteção facial em dispositivos com Neural Engine atinge 99% em ângulos frontais.
VNRecognizeTextRequest é a API para reconhecimento ótico de caracteres (OCR) em imagens. Suporta texto impresso em latim, cirílico, chinês, japonês, coreano e outros idiomas. O resultado é uma matriz de objetos VNRecognizedTextObservation, cada um contendo uma string de texto, retângulo delimitador e nível de confiança. Dois modos estão disponíveis: Rápido (Fast) para digitalizar documentos e Preciso (Accurate) para fontes complexas.
Para usar Vision, basta importar o framework, criar um objeto VNRequest e passá-lo para VNImageRequestHandler. Vamos ver um exemplo de reconhecimento de texto numa imagem.
O código cria um VNRecognizeTextRequest com modo de reconhecimento preciso, executa-o numa imagem e mostra o texto reconhecido na consola. Este exemplo simples demonstra a integração mínima da Vision num projeto Swift usando VNImageRequestHandler em apenas algumas linhas de código.
import Vision
// 1. Criar um pedido de reconhecimento de texto
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("Texto: \(topCandidate?.string ?? "")")
}
}
// 2. Ativar o modo preciso
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
// 3. Executar o handler
let handler = VNImageRequestHandler(
url: imageURL, options: [:]
)
try? handler.perform([request])
O código Swift configura um VNRecognizeTextRequest com nível de reconhecimento preciso e correção de idioma ativada. VNImageRequestHandler carrega a imagem a partir de um URL e executa o pedido. Os resultados contêm strings de texto reconhecidas com retângulos delimitadores e pontuações de confiança para cada token. A matriz VNRecognizedTextObservation pode ser convenientemente exibida no ecrã.
Para processamento de vídeo em tempo real, use VNSequenceRequestHandler em vez de VNImageRequestHandler. Ele aceita uma matriz de imagens (quadros) e executa o mesmo pedido sequencialmente, mantendo o estado entre quadros — essencial para o rastreamento de objetos. VNSequenceRequestHandler gere automaticamente a memória: as observações antigas são removidas quando um objeto sai do quadro. O desempenho em tempo real depende da complexidade do pedido: a deteção facial funciona a 60 FPS, enquanto o reconhecimento de texto funciona a 15–30 FPS em dispositivos com chip A16.
Vision e Core Image são dois frameworks da Apple para trabalhar com imagens, mas resolvem tarefas fundamentalmente diferentes. Core Image é um framework para filtrar e transformar imagens (aplicar filtros, correção de cor, desfocar). Vision é um framework para compreender o conteúdo da imagem: o que está representado nela.
| Característica | Vision | Core Image |
|---|---|---|
| Tarefa | Análise e reconhecimento | Filtragem e processamento |
| Deteção facial | Sim, com marcos | Apenas CIDetector |
| Reconhecimento de texto | Sim (OCR) | Não |
| Filtros | Não | Mais de 200 filtros |
| Integração Core ML | Sim (VNCoreMLRequest) | Não |
| Rastreamento de objetos | Sim (VNTrackObjectRequest) | Não |
| Desempenho | Otimizado para ANE | GPU (Metal) |
Use Vision quando precisar de compreender o que está numa imagem: rostos, texto, códigos QR, objetos. Use Core Image quando precisar de modificar uma imagem: aplicar um filtro, ajustar cores, cortar. Frequentemente estes dois frameworks são combinados: primeiro Core Image melhora a qualidade da imagem, depois Vision reconhece o texto nela.
Na prática, Vision e Core Image são usados juntos em aplicações de digitalização de documentos. Core Image aumenta automaticamente o contraste e remove sombras (CIFilter com CIPhotoEffectNoir), enquanto Vision reconhece o texto na imagem melhorada. De acordo com a Apple (WWDC 2025), a precisão do OCR aumenta 15–20% ao pré-processar imagens através do Core Image em comparação com quadros brutos da câmara.
Outro caso de uso importante para uso combinado é a análise facial em tempo real para aplicações de realidade aumentada. Vision deteta o rosto e identifica 68 marcos, enquanto Core Image aplica filtros às regiões detetadas. O ARKit usa Vision para rastreamento facial e Core Image para renderização de efeitos, resultando numa latência total inferior a 16 ms em dispositivos com chips A15+.
Ao desenvolver em SwiftUI para integração da Vision, o protocolo Representable é usado, envolvendo AVCaptureSession e VNImageRequestHandler em UIViewRepresentable. A câmara é exibida através de PreviewView, cada quadro é passado para VisionRequestHandler através de AVCaptureVideoDataOutputSampleBufferDelegate. Esta abordagem arquitetónica preserva a reatividade do SwiftUI e entrega os resultados da análise da Vision como propriedades @Published para atualizações imediatas da interface.
Vision é usada numa vasta gama de aplicações iOS: desde digitalizadores de documentos a aplicações de realidade aumentada. Vamos ver três cenários típicos.
VNDetectDocumentSegmentationRequest (disponível desde iOS 17+) deteta automaticamente os limites do documento numa imagem, corrige a perspetiva e devolve uma imagem endireitada. Combinado com VNRecognizeTextRequest, cria um digitalizador OCR completo capaz de reconhecer faturas, cartões de visita e páginas de livros. Segundo a Apple, a segmentação de documentos leva 30–80 ms num dispositivo com chip A15.
VNTrackObjectRequest rastreia o movimento de um objeto selecionado entre quadros de vídeo em tempo real. O desenvolvedor especifica o retângulo delimitador do objeto no primeiro quadro, e a Vision calcula automaticamente a sua nova posição nos quadros seguintes. O rastreamento é usado em aplicações de videoanálise, jogos de realidade aumentada e sistemas de vigilância. A precisão do rastreamento em chips A16 é de 95% a velocidades de movimento do objeto até 30 píxeis por quadro.
VNDetectRectanglesRequest encontra áreas retangulares numa imagem: ecrãs, folhas de papel, sinais, documentos. A API devolve coordenadas dos cantos com correção de perspetiva. Combinando retângulos com VNDetectContoursRequest, é possível extrair contornos precisos de objetos — útil para aplicações de realidade aumentada e editores gráficos. VNDetectContoursRequest devolve uma matriz de pontos de controlo do contorno que podem ser convertidos para UIBezierPath para renderização.
Perguntas frequentes
iOS 11+ para APIs básicas, iOS 13+ para reconhecimento de texto (VNRecognizeTextRequest), iOS 17+ para segmentação de documentos. A Vision também está disponível no macOS 10.13+ e iPadOS 13+.
Sim, a Vision processa fluxos de vídeo através de VNSequenceRequestHandler e AVFoundation. O framework suporta até 60 FPS em dispositivos com chips A14+ ao usar pedidos rápidos.
Vision — framework nativo da Apple com otimização automática para ANE e GPU. OpenCV — biblioteca multiplataforma com capacidades mais amplas, mas requer otimização manual e não tem suporte para Neural Engine.
Através de VNCoreMLRequest: crie um modelo Core ML, inicialize VNCoreMLModel, passe-o para VNCoreMLRequest e execute-o através de VNImageRequestHandler. O Xcode gerará automaticamente uma classe Swift para o modelo.
Indiretamente — VNDetectFaceLandmarksRequest determina a posição dos pontos chave do rosto, e VNDetectFaceExpressionsRequest (iOS 17+) avalia sorrisos e piscadelas através de olhos fechados.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também