2023 드림랜드 해커톤에 참여하며 생각한 것들 (1)

한시온·2023년 8월 14일
1

이번 해커톤의 대주제는 "AI를 사용하여 사회적인 문제를 해결하는 서비스"로, 우리 팀은 알러지 및 특이식을 먹는 이들두려움을 해소하고자 했다. 사실 알레르기가 있는 사람들은 누구보다 자신이 무엇에 취약한지 잘 알고 있다. 그러나 일상에서 먹고 싶은 식품에 대한 원재료를 따지는 것은 여간 쉬운 일이 아니다. 식품위생법의 "식품등의 표시기준"에 의거, 시중의 모든 공산품에 대한 원재료는 표기하도록 되어 있지만 이를 찾아서 읽어보기가 매우 귀찮기 때문이다. 따라서 우리 팀은 휴대폰 카메라를 통해 식품을 식별하고 이에 대한 알레르기 정보를 직관적으로 확인할 수 있도록 서비스를 기획했다. 서비스 플로우는 다음과 같다.

  1. 사용자가 알레르기 유발 물질을 확인하고 싶은 식품을 카메라로 촬영한다.
  2. 촬영한 이미지를 OCR 기술을 사용해 이미지에서 품목명을 추출한다.
  3. 추출한 품목명을 파라미터로 두고 식품 정보 오픈 API에서 해당 품목명을 가진 식품 정보를 가져온다.
  4. 식품 정보에 포함된 알레르기 유발 물질을 확인하고 사용자의 알레르기 유발 물질과 비교하여 안심하고 먹을 수 있는 식품인지 아닌지 식별한다.

구조도

식품 이름을 어떻게 식별할 것인가?

OCR 기술로 식품 이미지에서 이름을 추출하여 식품 정보 오픈 API의 입력값으로 활용한다는 아이디어는 그럴듯하지만, 여기에는 여전히 문제가 있었다. 식품 이미지에서 추출한 수많은 텍스트 중에서 어떤 텍스트를 식품 이름으로 판별할 것인가? 하는 문제 말이다. 다음 고래밥 이미지를 보자. 이미지에서 추출하고자 하는 텍스트는 "고래밥 양념치킨맛" 정도지만, 표지에는 그 외에 여러 텍스트가 포함되어 있다. 고래밥 이미지를 인식했을 때 과연 과자 이름만 딱 나올까?

고래밥양념치킨맛

다음은 네이버 클라우드의 CLOVA OCR을 사용하여 고래밥 이미지에서 텍스트를 추출한 결과이다. 결과를 보면 "오리온", "재미로 먹고, 맛으로 먹는" 등 식품 이름과 직접적으로 관련이 없는 텍스트도 포함되어 있는 것을 확인할 수 있다. 이 점은 중요한데, 우리가 식품 정보에 대한 공공 데이터 API 에서 품목명으로 질의할 때는 이름이 정확해야 하기 때문이다. 만약 해당 고래밥 데이터의 품목명에 "오리온"과 같은 텍스트가 포함되어 있지 않다면, 의도한 데이터를 가져오지 못할 수 있다. 식품 이름만 추출하기 위한 대안으로 영역을 지정해 스캔할 수 있는 템플릿 빌더를 고려할 수 있지만, 식품별로 제품 이름을 표기하는 위치가 제각각이어서 이 또한 쉽지 않다. 정리하자면, OCR 기술로 식품 이미지에서 품목명을 추출하는 것은 다음과 같은 문제를 안고 있다.

  1. 추출된 텍스트 중 식품 이름을 어떻게 결정할 것인가?
  2. 식품 이름을 온전히 추출할 수 있는가? (예시 이미지에서는 "고래밥"에서 "래밥"만 인식하고 "고"는 인식하지 못했다.)

OCR인식결과

결론

우리 서비스는 주어진 식품 이미지에 대해 해당 품목이 무엇인지 파악하는 것이 매우 중요하다. 식품 정보를 받아올 때는 품목명을 기준으로 조회하기 때문에, OCR 기술이 이미지에서 품목명을 추출하는데 적합하다고 보였지만, 앞서 언급한 바와 같이 여러 문제점 때문에 적용하는 것은 실질적으로 어렵다는 생각이 들었다. 그래서 그 대안으로 생각한 것이, 식품 이미지에 대한 라벨을 생성해서 주어진 이미지의 품목명을 예측하는 모델을 도입하는 것이다. 이렇게 되면 추출된 텍스트 중 무엇을 품목명으로 결정한 것인지와 이름이 온전히 추출될 수 있는지를 고려하지 않아도 된다.

profile
가볍고 무겁게

0개의 댓글