Teddy는 운동 기록과 체성분 캡처 같은 이미지를 다룹니다. 이미지 안의 체중, 체지방률, 운동 종목과 횟수처럼 기록으로 옮길 정보가 있기 때문이에요.
문제는 이미지를 읽는 방법이 하나가 아니라는 점이었습니다. 이미지 속 글자와 숫자를 읽는 OCR이 있고 화면 전체 맥락을 해석하는 Vision 분석도 있습니다. 둘을 같은 방식으로 모든 이미지에 적용하는 흐름은 만들 수 있지만, 그러면 이미지가 들어올 때마다 더 무거운 분석 경로를 기본값으로 두게 됩니다.
그래서 Teddy의 이미지 처리는 OCR부터 시작하도록 구성했습니다. 먼저 이미지에서 텍스트와 수치를 읽고 체성분 캡처인지 운동 기록 캡처인지 분류하는 쪽을 보완했습니다. 이미지 종류가 다르면 화면에 담긴 정보의 형태도 다르니까요. 체성분 화면에서는 수치와 항목명이 중요하고 운동 기록 화면에서는 종목·세트·반복 같은 정보가 더 앞에 옵니다.
OCR로 읽을 수 있는 내용을 먼저 다루고, 그다음에도 판단이 필요한 경우에 Vision 분석을 붙이는 흐름입니다. 여기서 Vision은 자동으로 모든 이미지를 통과하는 기본 관문이 아니라, 수동 승인 흐름과 함께 들어갔습니다.
이 순서가 조금 돌아가는 것처럼 보일 수도 있어요. 하지만 이미지 분석은 텍스트 한 줄을 처리하는 일과는 다릅니다. 화면에 숫자가 많고 앱마다 배치도 다르고, 캡처 시점이나 잘린 영역도 제각각일 수 있습니다. OCR이 읽은 결과만으로 충분한지, 추가 해석이 필요한지를 같은 단계에서 판단하지 않도록 나눠둔 셈입니다.
정리하면 Teddy는 이미지 → OCR → 필요 시 Vision 검토라는 단계로 움직입니다. OCR 분류는 체성분과 운동 캡처에 맞게 다듬었고 Vision 분석은 수동 승인과 연결했습니다. 이후 이미지 처리에는 저비용 Vision 모드도 적용했습니다.
모든 이미지를 가장 강한 분석으로 바로 보내는 방식은 구현만 보면 간단합니다. 다만 건강 기록처럼 숫자와 날짜, 운동 맥락이 함께 남는 입력에서는 처리 순서 자체가 기록의 일부가 됩니다. 그래서 지금은 먼저 읽고, 필요하면 더 본다는 쪽으로 두었습니다.
완벽하게 자동으로 읽는다는 말보다는, 어떤 단계에서 어떤 해석을 맡길지 나눠둔 상태에 가깝습니다. 지금은 이 정도예요.