시각장애인을 위한 의약품 및 알약 조회 모바일 어플리케이션 구현
Copyright ⓒ 2023 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
초록
약사법에 따르면 의약품은 용기나 포장에 제품명, 사용기한, 용량 등의 사항을 기재해 올바르고 안전하게 사용할 수 있도록 해야 한다. 그러나 그러한 사항들이 점자로 표기된 경우는 극히 드물며 표시내용마저 부실하여 시각 장애가 있는 사람들은 의약품 정보를 정확하게 알고 복용하기 어렵다. 본 논문에서는 시각장애인이 음성 가이드를 기반으로 의약품을 편리하게 조회할 수 있도록 통합 서비스를 제공하는 모바일 어플리케이션을 구현한다. 용기 촬영, 낱알 촬영, 음성 인식, 처방전 촬영, 약 봉투 촬영과 같이 다양한 방법을 통해 의약품 조회가 가능하도록 하였으며, 낱알 조회에서는 CNN (Convolutional Neural Networks)을 기반으로 한 알약 인식 모델을 구축하였다. 결과적으로 시각장애인은 단순한 UI와 최소한의 입력을 통해 쉽게 의약품 정보를 얻을 수 있으며 이를 통해 시각장애인의 의약품 오용을 줄일 수 있을 것이다.
Abstract
According to the Pharmaceutical Affairs Act, medicines should be used correctly and safely by stating the product name, expiration date, and dosage on the container or packaging. However, such matters are rarely marked in braille, and the labeling is poor, making it difficult for visually impaired people to accurately know and take medication information. In this paper, we implement a mobile application that provides integrated services so that blind people can conveniently inquire about medicines based on voice guides. Medicines inquiry is possible through various methods such as container recognition, pill recognition, speech recognition, prescription recognition, and drug envelope recognition, and a CNN-based pill recognition model was also developed. Using our implementation, blind people can easily obtain medicines information through simple UI and minimal input, which will reduce drug misuse by blind people.
Keywords:
Search for medication, Visual impairments, Pill recognition, Voice guide, Mobile application키워드:
의약품 검색, 시각 장애, 알약 인식, 음성 가이드, 모바일 어플리케이션Ⅰ. 서 론
보건복지부의 장애인 등록 현황 자료에 따르면 2021년 기준으로 등록된 시각장애인 수는 251,620명으로 전체 장애인 수의 약 9.5%에 해당한다[1]. 시각장애인은 시각으로 얻을 수 있는 정보에 제약이 있어 시각 외의 감각 정보인 촉각과 청각을 이용해 정보를 얻는다. 의약품은 건강과 생명에 직·간접적인 영향을 미치기 때문에 제대로 알고 복용해야 하지만 상비약 포장, 처방된 약 봉투, 알약은 생김새가 비슷한 것들이 많아 시각장애인이 모양을 만져보는 것만으로 이들을 구별하기가 어렵다.
특히 의약품 용기의 경우 의약품에 대한 주요 내용을 점자 표시하도록 정부에서 권고하고 있으나 대다수 의약품에서 점자 표기가 이뤄지지 않고 있다. 그 이유는 점자 표기는 의무가 아닌 권고 사항인 데다가 포장 변경에 따른 제약사의 실질적인 비용 부담이 발생하기 때문이다. 식품의약품안전처에 따르면 2020년 전체 의약품 중 점자를 표기한 의약품은 0.2%에 불과했으며[2] 점자 표기된 의약품은 그마저 점자 규격, 표시 항목, 위치 등이 제각각으로 점자 표시의 실효성이 떨어진다[3]. 2021년 약사법이 개정됨에 따라 2024년부터 의약품 점자 표기가 의무화될 예정이지만 안전상비의약품 및 지정된 일부 품목이라는 점에서 한계가 있으며 앞서 언급한 점자 표기의 실효성 문제로 인해 의약품 정보 접근성이 확연히 높아질 것을 기대하기 어렵다.
시각장애인은 의약품 구별뿐만 아니라 복약 정보에서도 제약받는다. 시각장애인을 위한 복약지도 방법 사용 여부를 조사한 선행 연구에 따르면 약사에게 복약지도를 받는 것 자체가 쉽지 않으며[4] 시각장애인은 말로 전달되는 복약지도에 의존할 수밖에 없기 때문에 전문가에게 복약지도를 받아도 구두로 전한 내용을 기억하지 못할 경우 의약품을 오남용할 우려가 있다[5]. 처방된 약 봉투에 아침, 점심, 저녁이라고 기재된 것 또한 구분할 수 없어 알약 개수를 세어 외워두고 있지 않는 한 오남용 위험에 노출될 가능성이 높다[5].
따라서 시각장애인은 의약품 정보를 조회할 수 있는 다른 수단을 이용해야 한다. 본 논문에서는 이러한 수단 중 어플리케이션에 초점을 맞춘다. 기존에 의약품 조회 기능을 제공하는 서비스들은 시각장애인이 이용하기 어려운 세 가지 문제가 있다. 구체적인 분석은 다음 장인 Ⅱ장에서 다루므로 문제만 나열하고자 한다. 첫째, 정보 입력이 빈번하게 일어난다. 둘째, 시각장애인만을 위한 서비스가 아니므로 레이아웃 구조가 복잡하다. 셋째, 의약품을 조회하는 방법이 제한적이다.
본 연구에서는 이러한 문제점들을 개선하기 위해 단순한 레이아웃과 알약 촬영, 용기 촬영, 음성 검색, 처방전 촬영, 약 봉투 촬영 등 다양한 방법으로 시각장애인에게 의약품 정보를 제공해주는 ‘필라로이드’ 어플리케이션을 구현한다.
본 논문의 순서는 다음과 같다. 먼저 Ⅱ장에서는 시각장애인을 고려하여 의약품 정보를 제공하는 기존 어플리케이션들과 그 한계들을 살펴본다. Ⅲ장에서는 제안하는 필라로이드 모바일 어플리케이션의 목표와 구성을 설명하며, Ⅳ장에서 구현한 서비스들의 기능을 평가한다. 이를 바탕으로 Ⅴ장에서 결론으로 마무리한다.
Ⅱ. 관련 연구
2-1 의약품 검색 어플리케이션 사례
본 절에서는 기존의 의약품 검색 기능을 제공하는 어플리케이션을 소개한다. 또한 해당 어플리케이션들이 제공하는 의약품 검색 기능을 사용자들이 이용하는 데 느끼는 불편함과 관련된 단점에 대해 분석한다.
실로암 헬스모아[6]는 시각장애인을 위한 의약품 정보 조회 서비스를 제공하는 모바일 어플리케이션이다. 헬스모아는 단순하게 텍스트를 입력하는 방법으로 의약품을 검색할 수 있을 뿐만 아니라 의약품의 바코드 및 QR코드 (Quick Response Code) 촬영, 내장된 마이크를 이용하여 의약품명을 음성으로 검색하는 방법을 활용하여 다양한 방법으로 시각장애인이 의약품 정보를 검색할 수 있는 특징이 있다.
실로암 헬스모아는 휴대폰 카메라를 이용한 의약품 혹은 처방전 촬영으로 의약품 검색 기능을 제공한다. 하지만 검색을 위해 촬영을 할 때 촬영에 대한 어떠한 음성 가이드를 제공하지 않는다. 의약품 촬영 각도 및 위치를 시각장애인이 파악하기 어렵기에 실제로 애플리케이션을 이용 시에는 의약품을 조회할 수 있는 확률이 현저히 낮아져 정보를 조회하는 것에 불편함이 있다. 또한 시각장애인을 주된 서비스 대상으로 설정하였지만, 서비스 이용을 위한 터치 및 입력 횟수가 너무 많으며 음성 가이드 없이 3줄 이상의 텍스트를 출력함으로써 정보 접근성이 떨어진다. 따라서 본 논문에서 제안하는 필라로이드는 의약품을 촬영으로 검색할 때는 손 위치에 따른 실시간 가이드를 제공함으로써 촬영 시에 약품이 찍히지 않는 확률을 줄인다. 또한 필라로이드에서는 화면의 기능 이름과 설명 등을 자동으로 음성 가이드 제공함으로써 최소화된 입력으로 검색할 수 있다.
의약품 검색[7]은 약학정보원에서 의약품 정보 서비스를 제공하는 어플리케이션이다. 의약품을 제품명 혹은 관련 정보를 입력하여 조회할 수 있을 뿐만 아니라 제형 및 색상 등의 모양을 입력 혹은 선택하여 의약품 정보를 조회할 수 있다. 하지만 시각장애인을 대상층으로 하는 서비스가 아니기 때문에 다소 복잡한 레이아웃 배치로 되어 있어 정보를 조회하는 데 어려움이 있다. 또한 의약품을 검색하는 방법으로는 오로지 텍스트 입력만 가능하므로 불편함이 있다. 그뿐만 아니라 어플리케이션에서는 의약품 정보 조회만 가능하며 즐겨찾기와 알림 등 사용자 개인의 맞춤 서비스가 없기 때문에 추가적인 어플리케이션을 사용함으로써 일정 및 정보를 관리해야 한다는 단점이 있다. 따라서 필라로이드에서는 촬영과 음성 인식 등의 방법을 활용하여 정보를 조회할 수 있도록 하며, 검색된 의약품 정보가 출력되는 화면에서 하나의 버튼을 이용하여 알림 및 즐겨찾기 서비스 기능을 이용할 수 있다.
커넥트디아이[8]는 의약품 정보를 검색할 수 있으며 비대면의 채팅 상담으로 약사와의 상담 서비스를 제공하는 모바일 어플리케이션이다. 커넥트디아이는 하나의 텍스트 입력 필드에 의약품명 혹은 증상 등을 입력함으로써 의약품에 대한 정보를 검색할 수 있어 최소한의 입력 횟수로 검색할 수 있다는 특징이 있다. 또한 관심 의약품을 선택할 수 있어서 개인마다 의약품과 주사제 총 2개의 카테고리로 나누어 개별적으로 조회할 수 있는 장점이 존재한다. 하지만 메인 화면에서 의약품 검색, 뉴스, 채널 등 한 화면에 너무 많은 정보를 담고 있어 시각장애인이 한 번에 원하는 기능을 찾을 수 있는 효율성이 떨어진다. 따라서 필라로이드에서는 메뉴에서의 레이아웃을 가로 혹은 세로 방향으로 최대 2개의 버튼만을 배치함으로써 효율성과 편의성을 높이고자 한다.
Ⅲ. 시스템 설계
3-1 필라로이드의 차별점
시각장애인이 의약품을 검색하여 정보를 조회하는 이유는 단지 의약품의 효능을 검색하기 위함도 있겠지만, 현재 복용해야 하는 의약품이 무엇인지 식별하거나 복용 방법에 대해 검색하기 위함도 있다. 하지만 현재는 시각장애인이 모바일 어플리케이션을 이용하여 의약품을 조회하기에는 너무 많은 입력을 요구하기에 효율성이 떨어진다. 그뿐만 아니라 알약 그 자체를 식별하여 정보를 조회하는 기능은 없기 때문에 의약품의 용기가 없거나 용기에 바코드가 없을 시에는 조회가 불가능하다는 문제점이 있다. 이를 해결 및 보완하기 위해 필라로이드에서는 의약품의 용기뿐만 아니라 알약 인식 기능을 제공함으로써 의약품 정보 조회 방법의 다양성을 확보한다. 또한 조회 방법과 관련해 설명이 필요한 화면에서는 자동으로 음성 가이드를 제공함으로써 시각 장애 사용자의 불편함을 최소화하고자 한다.
마지막으로 필라로이드에서는 약국 봉투를 촬영하여 글자 인식을 통해 봉투에 적혀있는 내용을 음성으로 출력함으로써 의약품과 관련한 기능을 통합하여 제공한다. 또한 별도의 기능으로 의약품 즐겨찾기 기능과 푸시 알림을 이용한 복약 알림 서비스를 통해 사용자 개인이 원하는 정보만을 관리할 수 있게 하며 별도의 앱 실행 없이 의약품과 관련한 서비스를 제공받을 수 있도록 한다.
표 1은 앞서 언급한 어플리케이션들의 단점과 이를 보완한 필라로이드의 차별점에 대해 정리한 표이다. 실로암 헬스모아와 커넥트디아이와 같은 모바일 어플리케이션과 달리 시각장애인을 주 대상으로 편리성을 보완하며 정보 접근성을 향상하기 위해 통합적으로 서비스를 제공하는 것이 필라로이드의 차별점이라고 할 수 있다.
3-2 시스템 목표
시각장애인용 의약품 검색 모바일 어플리케이션인 필라로이드는 의약품에 대한 시각장애인들의 정보 접근성 향상과 편리한 사용 방법을 제공하는 데 목적을 둔다. 이를 위한 세부 방향은 다음과 같다. 먼저 필라로이드의 모든 안내는 음성으로 제공한다. 촬영이나 음성 인식 시 상황에 따른 안내를 음성으로 제공하며, 텍스트 및 버튼의 정보를 사용자에게 음성으로 제공할 수 있도록 클릭 방식을 두 가지로 나눈다. 사용자는 컴포넌트를 한 번 클릭함으로써 텍스트 또는 버튼의 정보를 음성으로 확인할 수 있으며 더블클릭으로 본래의 선택 기능을 수행할 수 있다. 둘째로, 필라로이드의 모든 입력 과정에서 정보 입력을 최소화한다. 특히 주 기능인 5가지 조회 기능은 촬영 또는 의약품 이름만을 음성 인식함으로써 복잡한 입력 과정을 거치지 않도록 하였다. 마지막으로 불필요한 기능을 배제하여 서비스를 간소화한다. 이를 위해 즐겨찾기, 복용 알림 기능을 제외한 나머지 기능들은 로그인하지 않고도 이용할 수 있도록 하였다.
3-3 시스템 구성
필라로이드의 전체 시스템 구성은 그림 1과 같다. 애플리케이션에서 시각장애인에게 텍스트를 음성으로 들려주도록 TTS (Text To Speech) 기술[9]을 사용한다. 낱알 촬영 시 실시간으로 손을 인식하기 위해 TensorFlow Lite[10]를 이용하며, 용기 촬영과 처방전 촬영, 약 봉투 촬영에서 사진 속 텍스트 및 바코드를 인식하기 위해 구글에서 제공하는 ML kit 라이브러리[11]를 이용한다. 또한 필라로이드는 복용 알림을 설정한 의약품과 사용자가 설정한 식사 시간을 토대로 복용할 시각을 계산하여 푸쉬 알림 기능을 제공한다. 이를 위해 Firebase에서 제공하는 FCM (Firebase Cloud Messaging)[12]을 이용한다.
필라로이드의 기본 서버는 Spring Boot[13]로 구현하였다. Spring Boot 서버는 모바일 애플리케이션과 직접 소통하는 서버로, 데이터베이스와 연동되어 클라이언트의 요청을 처리한다. 알약 검색을 제외한 나머지 요청은 자체적으로 처리하며 알약 검색에 대한 요청일 경우 딥러닝 서버에게 이미지를 전달하여 의약품 식별을 요청한다. 필라로이드는 카카오 로그인으로 회원 관리가 이루어지는데, 이때 JWT (JSON Web Token)[14]를 사용하였다.
데이터베이스는 MySQL을 이용하여 구축하였다. 필라로이드 데이터베이스는 7개의 테이블로 구성되어 있으며 각 테이블은 다음과 같다. 의약품의 전반적인 정보를 저장하는 medicine 테이블과 의약품 성상을 저장하는 appearance 테이블, 사용자 계정을 저장하는 user 테이블, 의약품 즐겨찾기를 저장하는 favorites 테이블, 세 끼 식사 시간을 저장하는 mealtime 테이블, 복용 알림 내용을 저장하는 alarm 테이블, 복용 푸쉬 알림 할 시각을 저장하는 alarmtime 테이블이다. medicine과 appearance 테이블에 저장되는 의약품 정보는 식품의약품안전처와 네이버 의약품 사전[15]에서 제공하는 정보를 이용하였다.
딥러닝 서버는 파이썬 웹 프레임워크인 Flask를 이용하여 구축하였다. PyTorch 객체 검출 모델인 YOLOv5 (You Only Look Once) 를 통해 서버로 전달받은 사진 속에 알약이 존재하는지 확인하고 검출된 알약 부분만 남긴다.
본 논문에서는 알약 검출에 특화되도록 기존 YOLOv5 모델에 약 2만여 개의 알약 이미지를 추가 학습시켰다. 알약을 분류하기 위해 TensorFlow와 Keras 기반의 CNN 학습 모델을 구축하였으며, 잘라낸 알약 이미지로 모델에서 예측 결과를 얻는다.
Ⅳ. 시스템 세부 구현
그림 2(a)와 같이 메인 화면에서는 네 가지 버튼을 보여준다. 의약품을 검색하는 방법은 총 5가지로 포장 용기 촬영, 낱알 촬영, 음성 인식, 처방전 촬영, 약국 봉투 촬영이다. 메인 화면의 첫 번째 버튼인 ‘의약품 촬영으로 검색’에서 포장 용기 또는 낱알로 검색하는 방법을 선택할 수 있으며, 세 번째 버튼인 ‘문서로 검색’에서 처방전 또는 약국 봉투로 검색하는 방법을 선택할 수 있다.
4-1 낱알 촬영을 통한 검색 기능
본 논문의 알약 학습 데이터 셋은 의약품안전나라에서 제공한 공개 데이터 셋[18]과 알약을 직접 다양한 조도, 각도, 거리에서 촬영한 데이터 셋으로 구성하였다. 공개 데이터 셋의 알약 종류는 24,306개로 매우 방대하다. 따라서 네이버 의약품 사전에서 각 의약품의 rating 값을 크롤링하여 5개 이상인 것만 선별하였다. rating 값이란 네이버 의약품 사전을 이용하는 사용자가 ‘유익해요’, ‘더 알고 싶어요’, ‘담아갈게요’, ‘수정해주세요’에 체크한 숫자를 합산한 값으로, 숫자가 많을수록 해당 의약품에 많은 관심을 가진다는 것을 의미한다. 즉, rating 값이 0~4개인 것을 제외함으로써 모든 알약에서 사용자가 관심을 두는 알약으로 범위를 좁혔다. 선별 결과로 최종 학습시킬 알약은 3,091종이며 각각의 이미지는 데이터 증강 과정을 거쳤다. 데이터 증강은 기존 데이터에 각종 노이즈를 주어 이미지 데이터의 양을 늘리는 기법이다. 본 논문에서는 밝기 조절, 회전, 반전을 알약 이미지에 적용하여 최종적으로 3,091종에 대해 약 12만 장의 이미지 데이터 셋을 구축하였다.
본 논문에서는 알약 딥러닝 예측 모델로 CNN을 사용하였다. 알약 예측 모델로 사용한 CNN 계층은 1개의 입력 계층과 7개의 은닉 계층, 1개의 출력 계층으로 구성하였고, 7개의 은닉 계층은 각각 4개의 합성곱 계층과 3개의 풀링 계층으로 구성하였다. 합성곱 계층은 활성화 함수로 ReLU를 사용했으며, 출력 계층은 다중 클래스 분류를 위해 softmax 함수를 사용하였다.
표 2는 100장의 알약 사진으로 학습 모델을 평가한 결과이다. 평가 사진은 학습으로 쓰이지 않은 공개 데이터 셋 일부와 직접 본 저자들이 손 위에 알약을 놓고 찍은 사진으로 구성하였다.
총 100개의 사진 중 알약을 잘못 예측한 경우는 9개로 전체적인 정확도는 91%로 나타났다.
한편, 각 알약 클래스에 대한 예측 확률은 불확실성을 추정할 수 있도록 해준다. 예를 들어, 하나의 확률값이 다른 확률값에 비해 월등히 높다는 것은 모델이 결과를 확신하고 있음을 의미한다. 반대로 확률값이 서로 비슷하다는 것은 불확실성이 높고 그 결과를 신뢰할 수 없음을 의미한다. 따라서 임곗값을 정하여 가장 높은 예측 확률이 임곗값보다 낮다면 그 판단을 신뢰할 수 없으므로 제외되어야 한다. 표 2는 최적의 임곗값을 정하기 위해 75%, 70%, 65%의 기준으로 예측 성공 여부를 분류한 결과를 보여준다.
예측값이 최적이 되기 위해선 예측 실패는 적게 검출하되 예측 성공은 많이 검출하는 값으로 해야 한다. 예측 확률이 75%인 경우 70%일 때보다 예측에 성공한 것을 4개 덜 검출했으며 65%인 경우 70%일 때보다 예측에 실패한 것을 1개 더 검출했다. 따라서 임곗값으로 70%가 적절하며 가장 큰 예측 확률이 70%를 넘기지 못한다면 예측 결과를 반환하지 않도록 한다.
낱알 검색 기능을 시작하면 후면 카메라가 켜졌음을 알리고 알약을 손바닥 위에 올리라는 내용의 음성 안내를 내보낸다. 앱은 카메라로 촬영 중인 실시간 영상에서 손을 감지하기 위해 TensorFlow Lite를 통한 분석을 수행한다. 적정 거리와 위치에서 손이 감지되지 않았다면 “손이 감지되지 않습니다. 손을 포착할 수 있도록 카메라를 더 멀리 이동해주세요.”라는 가이드를 제공한 후 다시 분석을 진행한다. 손이 올바른 곳에서 잘 감지되었을 경우 Spring Boot 서버로 촬영 사진을 전송하며, 서버가 인식한 알약 정보를 앱에 나타낸다. 알약 정보는 그림 2(b)와 같이 효능 및 효과, 용법 및 용량, 주의사항, 외형, 성분, 보관법으로 나누어 보여준다. Spring Boot 서버는 요청과 함께 받은 사진을 Flask 서버로 전송하여 의약품 품목 일련번호 목록을 얻는다. 가장 높은 예측값에 해당하는 알약 품목 일련번호로 데이터베이스에서 의약품 정보를 찾고 앱에 반환한다.
Flask 서버에서는 전송받은 이미지에서 알약이 존재하는지 확인한 후 모델을 통해 알약 예측 데이터를 얻는다. 사진에서 알약이 존재하는지 판별하기 위해 YOLOv5를 이용하였다.
이미지 라벨링 도구인 labelImg[19]를 이용하여 알약 데이터 셋을 YOLOv5에서 사용할 학습데이터로 변환하였다. YOLOv5에서 검출된 알약 이미지는 CNN 모델의 입력 데이터로 사용되며 모델을 실행시켜 알약 예측 결과를 얻는다. 예측 확률이 높은 상위 5개의 품목 일련번호와 예측값을 Spring Boot 서버에게 반환한다. 그림 3은 이에 대한 구조도를 나타낸다.
4-2 낱알 촬영 외 의약품 검색 기능
기능 시작 시 의약품 포장 용기 촬영을 위해 후면 카메라가 켜지고 카메라가 켜졌다는 것을 사용자에게 음성으로 안내한다. 사용자가 후면 카메라에 의약품 포장 용기를 가져다 대면 안드로이드는 구글 ML kit 라이브러리를 통해 실시간 영상에서 바코드 감지를 시도한다. 바코드가 감지되지 않았다면 TTS 기능을 통해 “바코드가 인식되지 않았습니다. 천천히 상하좌우로 움직여주세요”라는 안내 음성을 제공한 후 다시 바코드 감지를 시도한다. 바코드 감지에 성공할 경우 바코드 번호를 서버로 넘겨 관련된 의약품 정보를 얻는다. 의약품 정보는 낱알 촬영으로 검색 시 보여주는 결과 화면(그림 2(b))과 동일하다.
서버에서는 전달받은 바코드 번호가 medicine 테이블에 있는지에 따라 처리 과정이 나뉜다. medicine 테이블에 바코드 정보가 존재하면 DB에서 관련된 의약품 정보를 찾아 클라이언트에게 바로 반환한다. 그렇지 않다면 직접 다음과 같이 크롤링하여 해당 바코드 번호로 된 의약품이 있는지 확인한다. 관련된 의약품이 있다고 판단하는 기준은 구글에 바코드 번호를 검색했을 때 ‘의약품안전나라’[16]에서 제공하는 의약품 페이지가 노출되고, 그 의약품 페이지에 완전히 일치하는 바코드 번호가 존재하는지로 하였다. 크롤링으로 찾은 의약품 페이지에서 품목 일련번호와 제품명을 추출하고 DB에 있는 의약품일 경우 조회된 정보를 클라이언트에게 반환한다.
그림 2(c)가 보이고 있는 의약품 음성으로 검색 화면에서는 먼저 검색 방법에 대한 음성 가이드를 안드로이드의 TTS 기능을 이용해 자동으로 실행한다. 이후 음성 인식은 음량 버튼을 활용하여 동작한다. 음량 위 버튼을 누르면 띵 똥 소리와 함께 음성 인식을 시작한다. 이후 의약품명을 사용자가 말하고 다시 음량 위 버튼을 누르면 음성 인식이 종료된다. 만약 음성 인식 중일 때 음량 아래 버튼을 누르면 음성 인식을 중지할 수 있다. 만약 음성 인식 종료 후에 다시 녹음하고 싶다면 다시 음량 위 버튼을 누름으로써 동일한 방식으로 의약품명을 말할 수 있다. 화면 하단에는 결과 확인 버튼이 있다. 버튼의 위치는 버튼을 한번 클릭 시에 “버튼. 결과 확인하기”라고 음성으로 안내함으로써 사용자가 버튼을 찾지 못하는 상황을 방지하였다. 따라서 음성 인식 종료 후에 사용자가 버튼의 위치를 찾아 클릭하게 하면 음성 인식된 키워드를 TTS로 출력하며, 의약품명을 서버로 전달한다.
전달된 의약품명은 서버에서 medicine 테이블의 의약품명(name) 값 중 음성으로 검색한 의약품명 키워드를 포함하는 의약품 목록을 반환한다. 반환된 결과인 의약품명들은 안드로이드 화면에서 리스트의 형식(그림 2(d))으로 보여준다. 이때 검색된 의약품명 목록은 자동으로 하나씩 음성으로 출력된다. 검색된 결과 중 하나를 선택할 때는 화면에 해당 부분을 더블클릭하거나 음성으로 출력 도중 해당하는 의약품이 들렸을 때 음량 위 버튼을 누르면 된다. 전달된 의약품 번호의 값으로 medicine 테이블에서 조회해 의약품 정보를 화면으로 출력한다. 출력 화면은 낱알 촬영으로 검색 시 보여주는 결과 화면(그림 2(b))과 동일하다.
필라로이드는 처방전 촬영을 통한 의약품 정보 조회도 지원한다. 처방전을 카메라로 촬영한 후에 처방전에 적힌 텍스트를 ML kit를 통해 인식한다. 일반적인 처방전의 양식을 고려하여 인식된 텍스트 중 ‘의약품의 명칭’이 적힌 위치부터 ‘주사제 처방내역’ 혹은 ‘이하 여백’ 텍스트의 위치 사이에 인식된 의약품명을 추출한다. 1개 이상의 의약품명이 추출되면 서버에 해당 명칭들을 전달하여 medicine 테이블에서 해당 명칭으로 시작하거나 동일한 의약품을 찾아 반환한다. 이때 하나의 의약품명에 여러 개의 결과가 반환되면 그중 괄호를 제외했을 때의 의약품명이 정확히 일치하는 의약품을 우선으로 하며, 이외에는 의약품명의 사전 순서 중 가장 빠른 하나의 의약품 정보를 응답 결과로 반환한다. 반환된 의약품 정보는 의약품명, 외형 정보, 용법 및 용량, 그리고 효능 및 효과이며, 어플리케이션 화면에 검색된 의약품명을 음성 가이드로 안내함과 동시에 그림 2(e)와 같이 화면에 정보를 차례대로 출력된다. 출력된 결과에서 3개의 카테고리의 영역을 각각 클릭할 시에는 해당 카테고리의 의약품 정보를 음성으로 출력한다. 또한 의약품의 결과가 2개 이상일 때는 화면 결과 출력 부분을 가로로 스와이프 가능하게 함으로써 다음 의약품의 정보를 확인할 수 있다.
시각장애인이 복용하고자 하는 약이 맞는지 확인하고 싶을 때 약 봉투 촬영을 통해 약 봉투 내용 조회가 가능하다. 후면 카메라가 켜지면 시각장애인은 음량 위 버튼을 통해 약 봉투를 촬영할 수 있다. ML Kit 텍스트 인식 라이브러리를 통해 약 봉투에 적힌 텍스트들을 인식하는데 여기서 약 봉투는 약포지와 조제약 봉투, 2가지를 말한다. 약포지에서는 약국 이름과 아침, 점심, 저녁으로 주로 표기되는 복용 시기를 추출한다. 조제약 봉투에서는 약국 이름, 제조 일자, 약제 분류와 보이스아이 코드 여부를 추출한다. 보이스아이 코드란 조제약 봉투에 기입된 직사각형 코드로, ‘보이스아이’ 어플리케이션[17]에서 이를 스캔하면 복약 정보 및 의약품 정보를 음성으로 확인할 수 있다. 보이스아이 코드 여부는 코드 밑에 적히는 ‘음성 복약지도’ 텍스트 인식 여부로 판단한다. 추출된 텍스트 정보를 종합하여 TTS 음성 가이드로 제공한다.
4-3 부가기능
필라로이드는 서비스 이용 방법과 촬영 안내 가이드, 화면에 표시되는 텍스트 등을 음성으로 안내한다. 처음 필라로이드 실행 시에는 앱 사용 설명을 안내하는 초기화면이 보임과 동시에 음성 가이드 또한 실행된다. 이후 앱을 다시 실행 시에는 초기 가이드 화면은 보이지 않게 하였다. 또한 필라로이드에서 표시되는 모든 텍스트, 이미지, 버튼 등의 요소를 한번 터치하면 텍스트 혹은 관련 설명을 음성으로 먼저 안내하도록 구현하였다.
음성 가이드는 마이페이지 화면(그림 4(a))에서 음량과 속도 조절이 가능하다. 마이페이지에서 설정하는 가이드 음량은 앱을 실행시켰을 때 설정할 미디어 음량을 말한다. 기본 가이드 음량은 8로 설정되며, 0부터 15까지 설정할 수 있다. 또한 보이스 속도는 필라로이드에서 제공하는 음성 가이드 속도를 말하며 기본값으로는 1.0배속이다. 속도는 0.5배속부터 1.5배속까지 0.25의 간격으로 총 5구간에서 선택 가능하다. 이와 같이 가이드 음량 및 속도 조절이 가능하도록 구현함으로써 개인의 취향에 맞게 필라로이드를 사용할 수 있다.
의약품을 조회했을 때 보이는 결과 화면에서 오른쪽 상단에 위치한 별 이미지 아이콘을 클릭하면 즐겨찾기 등록 및 삭제를 할 수 있다. 즐겨찾기로 설정된 의약품은 그림 4(b)에 해당하는 마이페이지 내의 즐겨찾기 목록에서 확인할 수 있다. 이를 통해 관심 있거나 조회 필요성이 있는 의약품을 즐겨찾기 아이콘 클릭 한번으로 사용자가 자유롭게 설정할 수 있어 정보 조회에 대한 시간을 절약할 수 있다.
즐겨찾기 목록에서는 의약품명을 리스트로 출력하며, 조회하고자 하는 의약품명을 선택하면 처방전을 제외한 의약품 조회에 대한 결과 화면(그림 2(b))과 동일한 화면으로 효능, 용법, 주의사항, 외형, 성분, 보관법의 정보를 출력하도록 구현하였다.
의약품 복용 알림 설정을 위해 의약품 조회 결과 화면의 가장 오른쪽 상단에 위치한 종 이미지 아이콘을 클릭하면 알림 생성 다이얼로그가 띄워진다. 이후 다이얼로그에 레이블과 복용 기간을 입력한 후 확인 버튼을 클릭해 알림 생성이 가능하다. 이때 레이블은 의약품명으로 기본값이 설정되어 있으며, 복용 기간은 기본값으로 5일로 설정하여 사용자의 입력을 최소화할 수 있도록 구현하였다. 레이블은 최대 30자까지 가능하며 복용 기간은 최대 3개월까지 가능하다.
알림 생성을 위해서는 먼저 마이페이지의 알림 화면(그림 4(c))에서 사용자의 알림 시간대를 설정해야 한다. 그림 4(d)에서 볼 수 있듯이 설정값으로는 아침, 점심, 저녁 3개의 식사 시간이 있다. 각각의 식사 시간은 시간 단위로는 1시간씩, 분 단위로는 10분씩 볼륨 버튼을 통해 조절할 수 있도록 구현하였다. 각각의 식사 시간을 입력한 후에 저장 버튼을 클릭하면 alarmtime 테이블에 저장된다. 이후에 알림 생성 시, 설정한 알림 시간대에 맞춰 실제 의약품의 용법 용량을 고려해 사용자의 의약품 복용 알림 시간을 계산한 값이 alarm 테이블에 저장된다.
alarm 테이블에 저장된 알림은 Firebase에서 제공하는 Firebase Cloud Messaging을 이용하여 푸시 알림을 통해 제공된다. 서버에서 알림이 설정된 시간에 “필라로이드 의약품 복용 알람”의 이름과 함께 “타이레놀 복용 시간입니다. 타이레놀은 1알 복용하시면 됩니다.” 같은 내용으로 푸시 알림을 전달하여 사용자는 모바일에서 확인할 수 있다.
Ⅴ. 결 론
본 논문에서는 시각장애인이 효율적이며 편리하게 의약품 정보를 조회할 수 있도록 촬영과 음성 인식의 방법을 제공하는 필라로이드를 구현하였다. 시각장애인을 주 대상으로 하므로 기존의 의약품 정보 조회 서비스를 제공하는 다른 어플리케이션과는 달리 정보 입력 횟수를 최소화하며, 레이아웃을 한 화면에 하나의 정보만을 담을 수 있도록 단순하게 배치하였다. 또한 의약품을 텍스트 입력만이 아닌 음성과 촬영의 방법을 활용하여 정보를 조회할 수 있도록 구현하였다.
필라로이드 시스템은 기본적으로 안드로이드 스튜디오를 개발 환경으로 하여 모바일 어플리케이션 형태로 구현하였으며, 서버 구축을 위해 Spring Boot를 활용하였다. 또한 MySQL을 활용하여 회원, 의약품, 알림 등의 테이블이 포함된 데이터베이스를 구축하였다. 딥러닝 서버는 Flask를 이용하여 구축하였으며, YOLOv5를 활용하여 사진 속 알약을 찾고 학습시킨 CNN 모델을 이용해 알약을 인식하도록 구현하였다.
필라로이드의 주요 기능은 의약품 용기 혹은 낱알 촬영으로 의약품 조회하기, 음성 인식으로 의약품 정보 조회하기, 처방전 촬영을 통한 의약품 목록 조회하기, 약 봉투 촬영으로 봉투에 적힌 내용 조회하기이다. 사용자는 이와 같은 방법으로 의약품의 정보를 음성으로 안내받거나 추가로 정보를 조회할 수 있다. 의약품의 용기 혹은 낱알을 촬영하거나 음성 인식으로 의약품을 검색할 때는 효능, 용법, 주의사항, 외형, 성분, 보관법의 6가지 정보를 출력한다. 반면 처방전으로 검색할 때는 외형, 용법, 효능의 3가지 정보를 보여준다.
낱알 촬영으로 의약품 검색하기의 경우에는 촬영 중에 낱알을 들고 있는 사용자의 손을 인식하여 그에 대한 정보를 음성 가이드로 제공한다. 손 인식 모델을 구현함으로써 사용자가 알약 촬영 시에 알약이 부재한 상황을 최소화하도록 하였다. 또한 모델을 이용해 손이 적절한 위치와 거리에서 인식되었을 경우에는 화면 캡처 이미지로 알약에 해당하는 의약품 정보를 조회하여 화면에 출력한다.
필라로이드에서 제공하는 의약품 정보 조회 기능이 시각장애인에게 편의성을 제공하며 정보 접근성을 향상시킨다는 점은 분명하다. 하지만 알약 인식 모델의 정확성이 90퍼센트를 넘기지 못하기 때문에 사용자의 의약품 오복용에 대한 위험성이 0%는 아니라는 한계점이 있다. 현재 알약을 직접 촬영한 데이터 셋이 공개 데이터 셋보다 현저히 적기 때문에 실제로 손 위에서 찍었을 때 인식률이 높지 않다는 점에서, 알약을 더 많이 보유한 후 데이터의 양을 늘려 학습한다면 정확도를 높일 수 있을 것이라고 기대한다. 또한, 추후에 알약에 적힌 미세 텍스트를 인식하는 등 알약 인식 모델을 수정 및 개선해 모델의 정확도를 높이는 연구를 진행함으로써 더욱 사용도가 높은 서비스로 발전시킬 예정이다.
Acknowledgments
이 성과는 정부(과학기술정보통신부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임(No.2022R1F1A1063408). 이 성과는 정부(과학기술정보통신부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임(No. NRF2022H1D8A303739411). 본 연구는 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학지원사업의 연구결과로 수행되었음(2022-0-01087).
References
- Statistics Korea. A Statistics of the Number of Registered Persons with Disabilities [Internet]. Available: https://kosis.kr/statHtml/statHtml.do?orgId=117&tblId=DT_11761_N001&conn_path=I2
- ChosunBiz. "This is Coke Is it Sprite? Braille notation that rings twice for the blind [Internet]. Available: https://biz.chosun.com/topics/topics_social/2022/06/15/FX3JYYBMP5AMRGYRG35GR4YXYQ
- Korea Consumer Agency. A Survey on Braille Labeling of Medicines [Internet]. Available: https://www.kca.go.kr/home/sub.do?menukey=4002&mode=view&no=1002868211
- B. H. Lee and Y. J. Lee, “Evaluation of medication use and pharmacy services for visually impaired persons: Perspectives from both visually impaired and community pharmacists,” Disability and Health Journal, Vol. 12, No. 1, pp. 79-86, January 2019. [https://doi.org/10.1016/j.dhjo.2018.07.012]
- H. J. Koo, S. M. Jang, J. M. Oh, N. Y. Han, and E. A, Han, “Qualitative Study for Medication Use among Visually Impaired in Korea,” Korean Journal of Clinical Pharmacy, Vol. 26, No. 1, pp. 178-185, September 2017. [https://doi.org/10.24304/kjcp.2017.27.3.178]
- Google Play. Siloam Center for the blind [Internet]. Available: https://play.google.com/store/apps/details?id=com.siloam.healthmore&hl=en_US&gl=US
- Google Play. Korea pharmaceutical information center [Internet]. Available: https://play.google.com/store/apps/details?id=kr.health.dikmobile&hl=en_US&gl=US
- Google Play. Connectdi [Internet]. Available: https://play.google.com/store/apps/details?id=com.connectdi.onesglobal&hl=en_US&gl=US
- Text to Speech [Internet]. Available: https://cloud.google.com/text-to-speech?hl=en
- Tensorflow Lite [Internet]. Available: https://www.tensorflow.org/lite?hl=en
- ML Kit [Internet]. Available: https://developers.google.com/ml-kit?hl=en
- Firebase Cloud Messaging [Internet]. Available: https://firebase.google.com/docs/cloud-messaging?hl=en
- Spring Boot [Internet]. Available: https://spring.io/projects/spring-boot
- JWT [Internet]. Available: https://jwt.io/
- Naver Dictionary. Pharmaceutical Dictionary [Internet]. Available: https://terms.naver.com/medicineSearch.naver
- Nedrug [Internet]. Available: https://nedrug.mfds.go.kr/index
- Google Play. Voiceye [Internet]. Available: https://play.google.com/store/apps/details?id=com.voiceye.reader.access&hl=en_US&gl=US
- Pill Identification Dataset [Internet]. Available: https://nedrug.mfds.go.kr/pbp/CCBGA01/getItem?totalPages=4&limit=10&page=2&&openDataInfoSeq=11&hl=en#none
- GitHub. labelImg [Internet]. Available: https://github.com/heartexlabs/labelImg
저자소개
2018년~현 재 : 숙명여자대학교 IT공학전공(학사)
※관심분야 : 서버, 데이터베이스, 모바일
2018년~현 재 : 숙명여자대학교 IT공학전공(학사)
※관심분야 : 모바일 시스템, 웹 시스템 등
1990년 : 서울대학교 컴퓨터공학과(학사)
1992년 : 서울대학교 컴퓨터공학과 대학원(석사)
1996년 : 서울대학교 컴퓨터공학과 대학원(박사)
1996년~1998년: 현대전자 정보시스템사업본부 과장
1999년~1999년: 현대정보기술 책임연구원
1999년~2002년: 한림대학교 정보통신공학부 조교수
2002년~2003년: 광운대학교 컴퓨터공학부 조교수
2003년~2004년: 아이닉스 소프트(주) 개발이사
2004년~현 재: 숙명여자대학교 IT공학전공교수
2008년: 뉴욕주립대 스토니브룩 Research Scholar
2012년~2013년: 숙명여자대학교 지식정보처장
2012년~2018년: NAVER 주식회사 사외이사
2014년~2019년: 한국정보과학회 컴퓨팅의 실제 논문지 편집위원장
2020년: 한국정보과학회 총무부회장
2020년~2022년: 숙명여자대학교 공과대학장
2022년~현 재: 숙명여자대학교 소프트웨어중심대학사업단장
※ 관심분야 : Mobile System Software, Storage Systems, Computational Finance, Cluster Computing, Parallel and Distributed Operating Systems, and Embedded System Software