필첵 스캔은 무엇을 하는 기능인가
필첵 앱이 10월 4일 App Store에 공개됐고 Google Play에도 올라와 있습니다. 이 연재는 앱의 기능을 한 편에 하나씩 봅니다. 첫 편은 모든 기록의 출발점인 스캔입니다.
필첵은 내가 먹는 약의 정보와 복용 시간, 조제 기록을 한곳에서 보는 서비스입니다. 이 모든 화면은 약이 기록돼 있어야 의미가 있습니다. 약 이름을 하나씩 타이핑하는 대신 손에 든 종이를 카메라로 비춰 기록하게 하는 것이 스캔입니다.
스캔 화면의 대상은 셋입니다. 처방전, 약봉투, 낱알입니다. 이 글은 앞의 둘을 다룹니다. 약봉투는 QR로, 처방전은 사진으로 기록합니다. 낱알은 알약 사진으로 비슷한 약 후보를 찾는 별도 기능입니다.
웹(www.pillcheck.co.kr)의 사진 등록은 앞선 글 「필첵 OCR」에서 다뤘습니다. 이번 글의 새 이야기는 앱입니다. 앱에서는 사진이 폰을 떠나기 전에 폰 안에서 한 단계를 더 거칩니다.
앱에서 쓰는 순서

첫째, 화면 맨 아래 메뉴에서 「스캔」을 누릅니다. 「촬영하기」 같은 버튼을 한 번 더 누를 필요 없이 카메라가 바로 켜집니다. 처음 한 번은 카메라 권한을 묻습니다.
둘째, 위쪽에서 처방전·약봉투·낱알 중 손에 든 것을 고릅니다. 카메라 화면을 좌우로 밀어도 옆 대상으로 넘어갑니다.
셋째, 약봉투라면 QR을 화면의 네모 안에 맞춥니다. 버튼을 누르지 않아도 QR을 알아보는 순간 조제 기록이 저장됩니다. QR은 네모 칸 무늬에 정보를 담은 코드로, 약봉투의 QR에는 그 조제 내역을 불러올 열쇠가 들어 있습니다. 기록을 저장하려면 로그인해야 합니다.
넷째, 처방전은 처방전 탭에서 셔터를 눌러 사진으로 찍습니다. 앱에서 처방전은 QR이 아니라 사진으로 기록합니다. 결과가 기록에 들어오면 읽힌 약 이름과 복용법을 확인하고, 틀린 곳은 고칩니다.
찍는 순간 폰 안에서 일어나는 일
셔터를 누르면 사진은 앱이 쓰는 임시 공간에만 생깁니다. 휴대폰 사진첩에 저장되지 않고, 일이 끝나면 앱이 지웁니다.
그다음 폰이 사진 속 글자를 직접 읽습니다. 문자 인식은 사진 속 글자를 컴퓨터가 다룰 수 있는 글자로 바꾸는 기술입니다. 필첵 앱은 이 기능을 앱 안에 갖고 있어서, 인터넷에 보내지 않고도 폰 안에서 글자와 그 위치를 알아낼 수 있습니다.
폰이 약품 표를 처음부터 끝까지 확실하게 읽어 낸 경우에는 사진을 보내지 않고 읽은 약 목록만 기록합니다. 이렇게 기록된 약은 미확정 상태로 들어가 사용자가 확인하기 전까지 확정된 약으로 쓰이지 않습니다. 다만 처방전 서식이 제각각이라 폰 혼자 표 전체를 확실히 읽는 경우는 아직 많지 않습니다.
그렇지 않으면 사진을 문자 인식 서버로 보내 더 정밀하게 읽습니다. 서버는 필첵이 운영하는 원격 컴퓨터입니다. 바로 이 단계 앞에서 폰이 개인정보를 가립니다.
처방전 사진은 무엇을 가리고 무엇을 남기나
가리는 것은 환자를 알아볼 수 있는 값입니다. 환자 이름 칸과 주민등록번호 칸, 다른 자리에 한 번 더 찍힌 환자 이름, 보호자처럼 다른 개인의 이름, 휴대폰 번호, 그리고 바코드입니다. 바코드는 굵기가 다른 막대나 점 무늬에 정보를 담은 코드인데, 겉으로는 무엇이 들었는지 알 수 없어서 찾는 대로 모두 칠합니다.
남기는 것은 약품 표와 병원 정보입니다. 서버가 읽어야 하는 것이 약 이름과 복용법이고, 병원·약국 정보는 개인을 가리키는 정보가 아니라고 정했기 때문입니다. 약국 상호와 병원 이름은 가리기 전의 원본에서 폰이 따로 읽어 넘기고, 필첵은 이것을 의료기관 목록과 맞춰 기록에 붙입니다. 환자나 약사의 이름은 이 경로로도 넘기지 않습니다.
칠하는 방식은 글자 단위가 아니라 칸 단위입니다. 폰은 '성명', '주민등록번호' 같은 이름표의 위치로 칸을 찾고 그 칸 전체를 검게 칠합니다. 글자를 읽어서 그 글자만 지우면, 잘못 읽힌 글자는 지워야 할 대상으로 잡히지 않고 그대로 남기 때문입니다.
칠한 뒤에는 결과 그림을 처음부터 다시 읽습니다. 환자 이름이 어딘가에 읽히거나 바코드가 남아 있으면 그 사진은 보내지 않습니다. 이 검사를 통과한 그림만 보냅니다. 보내는 것은 원본 사진이 아니라 칠한 뒤 새로 만든 그림이고, 화면에도 그 가린 사진이 그대로 떠서 무엇이 나가는지 볼 수 있습니다.
서버에 도착한 뒤의 일은 「필첵 OCR」에서 설명한 그대로입니다. 약 코드로 약품 정보를 찾아 붙이고, 읽지 못한 줄은 「모름」으로 남겨 사용자가 채우게 합니다. 사진은 문자 인식이 끝나면 서버에 저장하지 않습니다.
만들 때 내린 결정과 이유
첫째, 촬영은 휴대폰 기본 카메라 앱으로 넘기지 않고 앱 안 카메라에서 합니다. 기본 카메라로 찍으면 사진이 사진첩에 남고, 찍을 때마다 앱 밖을 다녀와야 합니다. 앱 안 카메라는 비추는 동안 QR을 계속 읽을 수 있어서 약봉투는 셔터 없이 끝납니다. 같은 화면에서 QR 인식과 셔터가 겹쳐 같은 봉투가 두 번 저장되는 일도 막아 두었습니다.
둘째, 실패하면 보내지 않습니다. 처방전으로 확실히 읽히지 않거나, 이름표가 붙은 환자 이름과 주민등록번호를 정확히 한 쌍 찾지 못하거나, 바코드 검사를 끝까지 하지 못하면 사진은 폰을 떠나지 않습니다. 화면에는 「사진을 안전하게 보낼 수 없어요. 다시 촬영하거나 직접 검색해 주세요.」라고 뜹니다. 덜 가려진 사진을 보내는 것보다 사용자가 한 번 더 찍는 쪽이 낫다고 봤습니다.
셋째, 약봉투 사진은 서버로 보내지 않습니다. 처방전은 정해진 서식이라 이름표 옆에 환자 정보가 있지만, 약봉투에는 환자 이름이 이름표 없이 여러 곳에 찍혀 있습니다. 시험해 보니 폰이 글자를 읽어 이름을 찾는 방식으로는 모든 자리를 가리지 못했습니다. 그래서 약봉투는 QR을 기본으로 두었습니다. QR이 없는 약봉투를 찍으면 폰 혼자 표 전체를 확실히 읽어 낸 경우에만 기록하고, 그렇지 못하면 QR을 비추거나 약을 직접 검색하라고 안내합니다.
넷째, 가리는 방식은 그 방식을 시험한 기록과 한 쌍으로 묶었습니다. 앱은 승인된 가림 방식과 그 시험 기록의 짝이 맞을 때만 사진을 보냅니다. 시험 기록에는 가리는 코드 파일마다 지문이 적혀 있습니다. 지문은 파일 내용으로 계산한 고유 번호라 글자 하나만 바뀌어도 달라집니다. 코드를 고칠 때마다 저절로 도는 검사인 자동 테스트가 이 지문을 지금 코드와 대조하므로, 가리는 코드를 고치면 시험을 다시 돌려 새 기록을 만들기 전까지 테스트가 실패를 알립니다. 코드를 손본 사람이 시험을 건너뛰지 못하게 구조로 막은 것입니다.
문서 사진을 다루는 일에서 가져갈 것
필첵 스캔에서 다른 일에도 옮길 수 있는 것은 셋입니다.
첫째, 보내기 전에 보내는 쪽에서 가립니다. 받는 쪽이 저장하지 않겠다고 약속하는 것과 애초에 받지 않게 하는 것은 다릅니다. 가릴 수 있는 것은 출발점에서 가리는 편이 확실합니다.
둘째, 지울 글자가 아니라 지울 칸을 찾습니다. 글자를 읽어서 지우면 잘못 읽힌 글자가 남습니다. 이름표처럼 위치가 정해진 기준으로 영역을 통째로 덮는 편이 안전합니다.
셋째, 가리지 못하면 보내지 않는 것을 기본값으로 둡니다. 오늘 해볼 일이 하나 있습니다. 처방전이나 계약서 사진을 AI 채팅이나 다른 서비스에 올리기 전에, 폰의 사진 편집에서 이름과 번호 칸을 먼저 칠하고 칠한 사진을 크게 확대해 글자가 비치지 않는지 확인해 보십시오. 확인이 안 되면 올리지 않습니다.
다음 편은 기록한 약을 눌렀을 때 열리는 약 검색과 약품 상세입니다.
