Vision: co to jest, framework wizji komputerowej i działanie na iOS

Autor: IT Sectr Opublikowano: 2026-03-26 Czas czytania: 8 min

Vision — framework wizji komputerowej od Apple, wbudowany w iOS, macOS i iPadOS, dostarczający gotowe API do analizy obrazów, wideo i danych w czasie rzeczywistym. Obejmuje wykrywanie twarzy, rozpoznawanie tekstu, kodów kreskowych, konturów obiektów i śledzenie ruchu — wszystko na urządzeniu bez wysyłania danych na serwer. Według Apple Vision Documentation (2026), framework przetwarza do 60 klatek na sekundę na urządzeniach z chipem A14 i nowszym.

Najważniejsze

  • Vision — framework Apple do wizji komputerowej na urządzeniu z API do wykrywania twarzy, tekstu i obiektów
  • VNRequest — klasa bazowa dla wszystkich operacji: wykrywania, klasyfikacji, śledzenia i rozpoznawania
  • Rozpoznawanie tekstu obsługuje alfabet łaciński, cyrylicę, chiński i ponad 30 języków
  • Wykrywanie twarzy określa do 68 kluczowych punktów orientacyjnych z oceną emocji i obrotu głowy
  • Integracja z Core ML umożliwia uruchamianie niestandardowych modeli przez VNCoreMLRequest

Czym jest Vision?

Vision — to wysokopoziomowy framework wizji komputerowej, przedstawiony przez Apple na WWDC 2017. Zapewnia programistom jednolity interfejs do wykonywania różnych zadań analizy obrazów i wideo bez konieczności zagłębiania się w matematykę wizji komputerowej czy optymalizację pod konkretny neuroprocesor. Vision automatycznie wykorzystuje Apple Neural Engine na urządzeniach z chipami A12+.

W przeciwieństwie do niskopoziomowych bibliotek takich jak OpenCV, Vision abstrahuje złożoność: programista tworzy obiekt VNRequest, konfiguruje parametry i uruchamia przetwarzanie przez VNImageRequestHandler. Framework sam decyduje, na którym układzie wykonać zadanie — CPU, GPU czy ANE — i zwraca strukturyzowany wynik. Według Apple (WWDC 2025), Vision jest używany w 40% aplikacji App Store pracujących z obrazami.

Główne możliwości

Vision zawiera API do wykrywania twarzy i ich punktów orientacyjnych (do 68 punktów), rozpoznawania tekstu (OCR) z obsługą 30+ języków, skanowania kodów kreskowych QR i EAN, śledzenia obiektów między klatkami, wykrywania prostokątów i konturów, klasyfikacji obrazów przez Core ML, oceny ruchu i przepływu optycznego oraz wykrywania osoby na obrazie z segmentacją. Każda operacja jest reprezentowana przez oddzielną podklasę VNRequest.

Kluczowe API Vision

Vision jest zbudowany na architekturze Request → Handler → Results, gdzie każde żądanie to konkretne zadanie: znajdź twarze, rozpoznaj tekst, śledź obiekt. Przyjrzyjmy się najbardziej poszukiwanym API.

VNRequest — podstawa wszystkich operacji

VNRequest — abstrakcyjna klasa bazowa, od której dziedziczą wszystkie konkretne żądania Vision. Każde żądanie zawiera completionHandler, parametry konfiguracyjne i regionOfInterest do przetwarzania części obrazu. Po utworzeniu żądania jest ono przekazywane do VNImageRequestHandler (dla statycznych obrazów) lub VNSequenceRequestHandler (dla strumienia wideo). Wyniki zwracane są w postaci tablicy obserwacji — podklas VNObservation.

Wykrywanie twarzy i konturów

VNDetectFaceRectanglesRequest znajduje wszystkie twarze na obrazie i zwraca ich ramki. VNDetectFaceLandmarksRequest dodatkowo określa 68 kluczowych punktów orientacyjnych: kontur oczu, brwi, nosa, ust i szczęki. VNDetectFaceCaptureQualityRequest ocenia jakość zdjęcia twarzy — od 0 do 1 — przydatne do biometrii. Według Apple, dokładność wykrywania twarzy na urządzeniach z Neural Engine osiąga 99% przy frontalnym ujęciu.

Rozpoznawanie tekstu

VNRecognizeTextRequest — API do optycznego rozpoznawania znaków (OCR) na obrazach. Obsługuje tekst drukowany w alfabecie łacińskim, cyrylicy, chińskim, japońskim, koreańskim i innych językach. Wynik — tablica VNRecognizedTextObservation, z których każda zawiera ciąg tekstu, bounding box i poziom ufności. Dostępne są dwa tryby: szybki (Fast) do skanowania dokumentów i dokładny (Accurate) do złożonych czcionek.

  • VNDetectFaceRectanglesRequest — wyszukiwanie twarzy z zwracaniem ramek
  • VNDetectFaceLandmarksRequest — 68 kluczowych punktów twarzy
  • VNRecognizeTextRequest — OCR z obsługą 30+ języków
  • VNDetectBarcodesRequest — skanowanie QR, EAN, PDF417
  • VNCoreMLRequest — uruchamianie niestandardowych modeli Core ML

Integracja Vision w iOS

Aby użyć Vision, wystarczy zaimportować framework, utworzyć obiekt VNRequest i przekazać go do VNImageRequestHandler. Rozważmy przykład rozpoznawania tekstu na obrazie.

Przykład kodu w Swift

Kod tworzy VNRecognizeTextRequest z dokładnym trybem rozpoznawania, uruchamia go na obrazie i wyświetla rozpoznany tekst w konsoli. Ten prosty przykład demonstruje minimalną integrację Vision w projekcie Swift z użyciem VNImageRequestHandler w kilku linijkach kodu.

swift
import Vision

// 1. Utworzenie żądania rozpoznawania tekstu
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("Tekst: \(topCandidate?.string ?? "")")
    }
}

// 2. Włączenie trybu dokładnego
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true

// 3. Uruchomienie przetwarzania
let handler = VNImageRequestHandler(
    url: imageURL, options: [:]
)
try? handler.perform([request])

Kod Swift konfiguruje VNRecognizeTextRequest z dokładnym poziomem rozpoznawania i włączoną korekcją językową. VNImageRequestHandler ładuje obraz z URL i wykonuje żądanie. Wyniki zawierają rozpoznane ciągi tekstu z bounding boxami i poziomem ufności dla każdego tokena. Tablicę VNRecognizedTextObservation można wygodnie wyświetlić na ekranie.

Do przetwarzania wideo w czasie rzeczywistym używa się VNSequenceRequestHandler zamiast VNImageRequestHandler. Przyjmuje on tablicę obrazów (klatek) i wykonuje to samo żądanie sekwencyjnie, zachowując stan między klatkami — jest to niezbędne do śledzenia obiektów. VNSequenceRequestHandler automatycznie zarządza pamięcią: stare obserwacje są usuwane, gdy obiekt opuszcza kadr. Wydajność w czasie rzeczywistym zależy od złożoności żądania: wykrywanie twarzy działa z prędkością 60 FPS, a rozpoznawanie tekstu — 15–30 FPS na urządzeniach z chipem A16.

Vision vs Core Image

Vision i Core Image — dwa frameworki Apple do pracy z obrazami, ale rozwiązują one zasadniczo różne zadania. Core Image to framework do filtrowania i transformacji obrazów (nakładanie filtrów, korekcja kolorów, rozmycie). Vision to framework do rozumienia zawartości obrazu: co się na nim znajduje.

CechaVisionCore Image
ZadanieAnaliza i rozpoznawanieFiltracja i przetwarzanie
Wykrywanie twarzyTak, z punktami orientacyjnymiTylko CIDetector
Rozpoznawanie tekstuTak (OCR)Nie
FiltryNie200+ filtrów
Integracja z Core MLTak (VNCoreMLRequest)Nie
Śledzenie obiektówTak (VNTrackObjectRequest)Nie
WydajnośćZoptymalizowany dla ANEGPU (Metal)

Używaj Vision, gdy chcesz zrozumieć, co znajduje się na obrazie: twarze, tekst, kody QR, obiekty. Używaj Core Image, gdy chcesz zmienić obraz: zastosować filtr, dostosować kolory, przyciąć. Często te dwa frameworki są łączone: najpierw Core Image poprawia jakość zdjęcia, a potem Vision rozpoznaje na nim tekst.

W praktyce Vision i Core Image są używane razem w aplikacjach do skanowania dokumentów. Core Image automatycznie zwiększa kontrast i usuwa cienie (CIFilter z CIPhotoEffectNoir), a Vision rozpoznaje tekst na ulepszonym obrazie. Według Apple (WWDC 2025), dokładność OCR wzrasta o 15–20% po wstępnym przetworzeniu obrazu przez Core Image w porównaniu z surową klatką z kamery.

Kolejny ważny scenariusz wspólnego użycia — analiza twarzy w czasie rzeczywistym dla aplikacji rzeczywistości rozszerzonej. Vision wykrywa twarz i określa 68 punktów orientacyjnych, a Core Image nakłada filtry na wykryte obszary. ARKit używa Vision do śledzenia twarzy i Core Image do renderowania efektów, co daje łączne opóźnienie poniżej 16 ms na urządzeniach z chipami A15+.

Podczas programowania w SwiftUI do integracji Vision używa się protokołu Representable, opakowującego AVCaptureSession i VNImageRequestHandler w UIViewRepresentable. Kamera jest wyświetlana przez PreviewView, każda klatka jest przekazywana do VisionRequestHandler przez AVCaptureVideoDataOutputSampleBufferDelegate. Takie podejście architektoniczne pozwala zachować reaktywność SwiftUI i uzyskiwać wyniki analizy Vision jako właściwości @Published do natychmiastowej aktualizacji interfejsu.

Przykłady użycia Vision

Vision jest stosowany w szerokim spektrum aplikacji iOS: od skanerów dokumentów po aplikacje rzeczywistości rozszerzonej. Rozważmy trzy charakterystyczne scenariusze.

Skanowanie dokumentów

VNDetectDocumentSegmentationRequest (dostępny od iOS 17+) automatycznie wykrywa granice dokumentu na obrazie, koryguje perspektywę i zwraca wyprostowany obraz. W połączeniu z VNRecognizeTextRequest powstaje pełnoprawny skaner OCR, zdolny do rozpoznawania rachunków, wizytówek i stron książek. Według Apple, segmentacja dokumentu zajmuje 30–80 ms na urządzeniu z chipem A15.

Śledzenie obiektów w wideo

VNTrackObjectRequest śledzi przemieszczanie wybranego obiektu między klatkami strumienia wideo w czasie rzeczywistym. Programista określa bounding box obiektu na pierwszej klatce, a Vision automatycznie oblicza jego nowe położenie na kolejnych klatkach. Śledzenie jest stosowane w aplikacjach do analityki wideo, grach AR i systemach nadzoru. Dokładność śledzenia na chipach A16 wynosi 95% przy prędkości ruchu obiektu do 30 pikseli na klatkę.

Wykrywanie konturów i prostokątów

VNDetectRectanglesRequest znajduje prostokątne obszary na obrazie: ekrany, kartki papieru, szyldy, dokumenty. API zwraca współrzędne narożników z korektą perspektywy. Łącząc prostokąty z VNDetectContoursRequest, można wyodrębnić dokładny kontur obiektu — przydatne w aplikacjach rzeczywistości rozszerzonej i edytorach graficznych. VNDetectContoursRequest zwraca tablicę punktów kontrolnych konturu, które można przekształcić w UIBezierPath do rysowania.

Często zadawane pytania

Od których wersji iOS dostępny jest Vision?

iOS 11+ dla podstawowych API, iOS 13+ dla rozpoznawania tekstu (VNRecognizeTextRequest), iOS 17+ dla segmentacji dokumentów. Vision jest również dostępny na macOS 10.13+ i iPadOS 13+.

Czy Vision może pracować z wideo w czasie rzeczywistym?

Tak, Vision przetwarza strumień wideo przez VNSequenceRequestHandler i AVFoundation. Framework obsługuje do 60 FPS na urządzeniach z chipami A14+ przy użyciu szybkich żądań.

Czym Vision różni się od OpenCV?

Vision — natywny framework Apple z automatyczną optymalizacją pod ANE i GPU. OpenCV — wieloplatformowa biblioteka z szerszymi możliwościami, ale wymagająca ręcznej optymalizacji i bez wsparcia Neural Engine.

Jak dodać niestandardowy model ML do Vision?

Przez VNCoreMLRequest: utwórz model Core ML, zainicjuj VNCoreMLModel, przekaż go do VNCoreMLRequest i uruchom przez VNImageRequestHandler. Xcode automatycznie wygeneruje klasę Swift dla modelu.

Czy Vision obsługuje rozpoznawanie emocji?

Pośrednio — VNDetectFaceLandmarksRequest określa położenie kluczowych punktów twarzy, a VNDetectFaceExpressionsRequest (iOS 17+) ocenia uśmiech i mruganie przez zamknięte oczy.

Podsumowanie

  • Vision — framework Apple do wizji komputerowej na urządzeniu z jednolitą architekturą VNRequest → VNHandler → VNObservation
  • Wykrywanie twarzy określa do 68 kluczowych punktów orientacyjnych z oceną jakości i obrotu głowy
  • Rozpoznawanie tekstu (OCR) obsługuje 30+ języków w dwóch trybach: szybkim i dokładnym
  • Skanowanie kodów kreskowych działa z QR, EAN-13, Code 128, PDF417 i Aztec
  • Integracja z Core ML przez VNCoreMLRequest umożliwia uruchamianie niestandardowych modeli
  • Śledzenie obiektów między klatkami strumienia wideo działa w czasie rzeczywistym do 60 FPS
  • Vision i Core Image uzupełniają się nawzajem: rozpoznawanie + filtracja obrazów

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również