Powrót do strony głównej

Aplikacja iOS do odczytywania ciśnienia z ciśnieniomierza: rozwój i OCR

Artykuł opisuje proces rozwoju aplikacji iOS do odczytywania wskazań ciśnienia z ciśnieniomierza za pomocą aparatu smartfona. Omówiono wybór stosu technologicznego, implementację OCR za pomocą Vision framework, lokalne przechowywanie danych i architekturę projektu. Aplikacja działa autonomicznie, bez zależności od usług chmurowych.

Rozwój aplikacji iOS: odczytywanie ciśnienia z ciśnieniomierza aparatem
Advertisement 728x90

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:

Google AdInline article slot
  • 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:

Google AdInline article slot
  • 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

Advertisement 728x90

Czytaj dalej