Как я создавал мобильное приложение: разбор медицинских анализов с ИИ в вашем кармане
От OCR и PDF до персонального ассистента — как работает мобильное приложение, для кого и как оно создано
Хочу рассказать про Healtify — мобильное приложение, которое я разработал, чтобы медицинские анализы стали понятнее и полезнее. Это не просто трекер, а инструмент с искусственным интеллектом, который читает результаты анализов, объясняет их и даёт рекомендации. Идея родилась из личной проблемы: медицинские анализы часто выглядят как набор цифр без смысла. Я решил это исправить. Вот как всё работает и что получилось.
Проблема: анализы — это хаос
Однажды я получил результаты анализов от лаборатории: гемоглобин 134+, эритроциты 5.20+, гематокрит 39.5+. Цифры есть, а понимания — нет. Без врача или часов в интернете разобраться почти невозможно.
Лаборатории выдают таблицы или PDF-файлы, но не объясняют, что с этим делать. Сколько раз вы тоже смотрели на листок с анализами и чувствовали себя потерянными? Интернет либо путает противоречивыми данными, либо пугает несуществующими диагнозами. Мне захотелось сделать инструмент, который сам всё считает, структурирует и объясняет.
Решение: OCR, JSON и нейросети
Я разбил задачу на этапы. Вот как это работает.
1. Чтение анализов с любого носителя
Сначала нужно было научить приложение "видеть" текст — с фото, сканов или PDF. Для
Тогда я подключил Sharp — библиотеку для обработки изображений. Она увеличивает размер фото, повышает контраст, убирает шум и усиливает резкость. Пример: на мятом листе глюкоза "5.8 ммоль/л" без Sharp читалась с ошибками в 15% символов, а с Sharp — с точностью 95%. Теперь даже кривые снимки распознаются.
2. Превращение хаоса в порядок: данные в JSON
После распознавания текста нужно было привести данные в порядок. Лабораторные бланки — это хаос: показатели, единицы измерения и нормы перемешаны. Я написал кастомный парсер, который разбирает текст и превращает его в структурированный JSON. Например, из строки "Глюкоза 5.8 ммоль/л (3.3-5.5)" получается:
{ "indicator": "Глюкоза", "value": 5.8, "unit": "ммоль/л", "reference_range": { "min": 3.3, "max": 5.5 } }.
3. Нейросети для выводов
Дальше — самое интересное. ИИ не просто проверяет, в норме ли показатели, а анализирует их в комплексе. Например, сахар 5.8 при норме до 5.5. Обычный инструмент сказал бы: "Повышен, идите к врачу". А мой смотрит шире: проверяет другие показатели (гликированный гемоглобин, триглицериды) и объясняет: "Сахар немного выше нормы, возможно, из-за еды. Если это стабильно, проверьте углеводный обмен". Такой подход делает анализ осмысленным.
4. Глубокий анализ одним нажатием
Есть функция "Think" — нажимаешь, и нейросеть выдаёт развёрнутый отчёт. Почему показатели отклонились? Что это значит? Что делать? Пример: гемоглобин 110 г/л при норме от 120. Вместо "у вас анемия" вы получите:
— Причины: "Возможен дефицит железа, B12 или скрытое кровотечение".
— Последствия: "Меньше кислорода в тканях, отсюда усталость".
— Рекомендации: "Сдайте ферритин, добавьте в рацион печень или шпинат".
Это как полноценная консультация, только быстрее.
5. ИИ-ассистент: ответы на вопросы
Встроил чат с ИИ, чтобы можно было уточнить детали. Спрашиваешь: "Почему холестерин высокий?" или "Лейкоциты 8.5 — это страшно?". Модель обучена на медицинских данных и отвечает без лишней воды. Это не замена врачу, но помогает понять базу и подготовиться к консультации.
Технический хардкор: что под капотом
Для тех, кому интересны детали: 1. OCR: Tesseract.js для текста с любых бланков. Обработка изображений: Sharp для подготовки фото. 2. Парсинг: Собственный алгоритм для JSON. 3. Нейросеть: Модель на базе GPT для анализа и рекомендаций. 4. Фронтенд: React Native для кроссплатформенности. 5. Бэкенд: Next.js с API для обработки запросов.
Итог
Это попытка сделать медицинские анализы понятными без врача под боком. Пока проект развивается, доступен только в RuStore. Что бы вы добавили? Какие функции пригодились бы? Делитесь мыслями — это помогает двигаться дальше.