Tworzenie aplikacji na iOS do pomiaru ciśnienia za pomocą kamery: technologia i implementacja OCR
Opracowanie aplikacji na iOS, która odczytuje pomiary ciśnienia z ciśnieniomierza przy użyciu kamery smartfona, wymaga starannego wyboru stosu technologicznego i precyzyjnej implementacji OCR. To rozwiązanie umożliwia użytkownikom monitorowanie zdrowia bez zależności od usług chmurowych i zewnętrznych API, zapewniając pełną autonomię i bezpieczeństwo danych.
Wybór stosu technologicznego do rozwoju na iOS
Podczas tworzenia aplikacji do odczytu ciśnienia kluczowym aspektem był dobór technologii. Rozważano frameworki wieloplatformowe, takie jak React Native i Flutter, ale dla zadania wymagającego wysokiej precyzji OCR i bezpośredniego dostępu do kamery, podejście natywne okazało się lepsze. Główne kryteria wyboru obejmowały:
- Jakość OCR: natywny framework Vision od Apple zapewnia dokładne rozpoznawanie tekstu na urządzeniu.
- Dostęp do kamery: AVFoundation pozwala na bezpośrednie zarządzanie kamerą, co jest kluczowe dla przetwarzania wideo w czasie rzeczywistym.
- Lokalne przechowywanie danych: SwiftData dostarcza interfejs podobny do ORM bez konieczności pisania zapytań SQL.
Ostateczny stos obejmuje:
- SwiftUI do deklaratywnego budowania interfejsu.
- Vision framework do wykonania OCR za pomocą VNRecognizeTextRequest.
- SwiftData do zarządzania lokalną bazą danych.
- Swift Charts do wizualizacji wykresów dynamiki ciśnienia.
- AVFoundation do pracy z kamerą (implementacja w drugiej części projektu).
Architektura projektu i model danych
Projekt oparto na architekturze MVVM (Model-View-ViewModel), standardowej dla SwiftUI. To oddziela logikę aplikacji od interfejsu użytkownika, upraszczając testowanie i utrzymanie kodu. Model danych zaimplementowano przy użyciu adnotacji @Model w SwiftData, co automatycznie zapisuje obiekty do lokalnej bazy danych bez ręcznych migracji. Przykład struktury modelu:
@Model
class BloodPressureReading {
var systolic: Int
var diastolic: Int
var heartRate: Int
var timestamp: Date
}
Implementacja OCR i walidacja danych
OCR jest wykonywane za pomocą Vision framework, gdzie VNRecognizeTextRequest przetwarza obrazy z kamery. Główna trudność polega na filtrowaniu fałszywych wykryć spowodowanych blaskami, tłem lub obcymi napisami. W tym celu stosuje się postprocessing z rygorystycznymi ograniczeniami:
- Odrzucanie fizjologicznie niemożliwych wartości (np. ciśnienie powyżej 300 mmHg).
- Wykorzystanie algorytmów podobnych do NMS w detekcji obiektów do eliminacji duplikatów.
- Konfiguracja parametrów walidacji na podstawie danych testowych.
Interfejs i funkcjonalność aplikacji
Główny ekran aplikacji obejmuje:
- Wykres dynamiki ciśnienia skurczowego i rozkurczowego z ostatnich 7 dni, zbudowany przy użyciu Swift Charts.
- Kartę z ostatnim pomiarem, wyświetlającą wartości i wskaźnik kolorowy (np. zielony dla normy, czerwony dla podwyższonego ciśnienia).
- Przycisk do uruchomienia nowego odczytu przez kamerę.
Aplikacja działa w pełni offline, nie wymagając połączenia internetowego ani kont użytkowników, co gwarantuje prywatność danych.
Co ważne
- Natywny stos SwiftUI + Vision zapewnia wysoką precyzję OCR i wydajność na urządzeniach iOS.
- Lokalne przechowywanie danych z SwiftData eliminuje zależność od usług chmurowych i zwiększa bezpieczeństwo.
- Walidacja OCR jest krytyczna dla filtrowania fałszywych wykryć i zapewnienia wiarygodności odczytów.
- Architektura MVVM upraszcza rozwój i testowanie, oddzielając logikę i interfejs.
- Aplikacja wspiera autonomiczną pracę, co jest istotne w warunkach niestabilności usług zewnętrznych.
— Editorial Team
Brak komentarzy.