일일 개발 로그 요약

1. 작업 분포

카테고리비중
GCP(Vertex AI/Imagen) 기능 구현45%████
다국어 번역 및 로컬라이제이션40%████
GLM 모델 테스트 및 환경설정15%

2. 집중 영역 / 시간 소모 포인트

생산적 작업

  • GCP 기반 영수증 인증 모듈 구축: gemini-2.5-flash를 활용하여 5~6초 만에 영수증 이미지에서 상호명, 금액, 주소를 정확히 파싱하는 데 성공함.
  • Imagen 3 활용 카드 생성: 정적 영수증 이미지 대신, 카테고리(카페, 음식 등)에 맞는 AI 생성 이미지를 배경으로 사용하는 공유 카드 시스템을 구현하여 디자인 퀄리티 향상.
  • 웹 공유 UI 구현: 모바일에서 인스타그램 스토리 공유를 위해 Web Share API를, PC용으로는 X/Threads 인텐트 링크를 적용한 실제 작동하는 버튼들을 배치.
  • 로컬라이제이션 전략 수립: 단순 번역을 넘어, “자국과의 차이”, “어색함”, “안심”을 포함하는 문화적 맥락을 번역 프롬프트에 반영하여 품질을 크게 개선함.

삽질/시간 소모 포인트

  • GLM 모델 선정 문제: glm-4.5가 추론 모델(Reasoning)이라 응답이 느리고 끊기는 문제 발생. glm-4.7은 레이트 리미트 걸려 사용 불가. 결국 GCP Vertex AI로 전환하여 해결.
  • GCP Vertex AI 설정: Model Garden에서 Gemini 활성화 절차와 API 버전(v1 vs v1beta1) 혼동으로 인한 404 에러 발생. gemini-2.5-flashv1beta1, Imagen은 v1 사용으로 해결.

3. 타임라인

시간대상내용
10:21🦦GLM 모델(glm-4.5)의 추론 모델 특성(속도 느림, 텍스트 잘림) 확인 및 한계 파악.
10:55🦦GCP Vertex AI와 Gemini Vision을 활용한 영수증 인증 및 SNS 공유 모듈 아키텍처 제안.
11:19🦦GCP 크레딧이 남아 있는 계정(epixailab@gmail.com) 확인 및 프로젝트 설정 준비.
13:48🦦gcp/receipt.py, gcp/share_card.py 모듈 구조 생성 및 API 엔드포인트 설계.
14:05🦦Vertex AI에서 gemini-2.5-flash(v1beta1) 모델 확인 완료 및 파싱 테스트 성공(5.4초 소요).
14:21🦦실제 영수증(카페토리) 이미지 업로드 테스트: 상호명, 금액, 주소 파싱 성공.
14:27🦦이모지 렌더링 문제로 인한 디자인 변경 결정. Imagen 3을 사용하여 AI가 배경 이미지를 생성하는 방식으로 로직 수정.
14:33🦦/receipt/ui 웹 페이지 구현 완료. 드래그 앤 드롭 업로드 및 Web Share API를 적용한 SNS 공유 버튼 배치.
15:03🦦ngrok을 사용하여 로컬 서버를 외부에 노출, 모바일 기기에서 Web Share API 테스트 가능하도록 설정.
17:54🦦햄스터_로컬리(Hamster_Locally) 프로젝트 기획. 한국어 마스터 데이터 + 다국어(JSON 캐시) 관리 방식 확정.
20:54🦦번역 방향성 수정: 단순 번역이 아닌, 자국 문화 관점에서의 ‘차이’, ‘어색함’, ‘안심’을 포함하는 로컬라이제이션 요청.
21:57🦦개선된 로컬라이제이션 프롬프트로 테스트 수행. EN/ZH/JA 각 언어에 맞는 문화적 맥락(발음 가이드, 심리적 저해 요소 해소 등)이 반영됨을 확인.

4. 해결한 문제와 인사이트

해결한 문제

  1. 영수증 인증 파이프라인 구축
    • 문제: 영수증 이미지에서 텍스트 추출 및 장소 매칭 구현 필요.
    • 해결: gcp/receipt.py에서 Vertex AI gemini-2.5-flash를 호출하여 JSON 형식으로 데이터 추출. 퍼지 매칭(Fuzzy Matching)으로 장소 검증 로직 구현.
  2. 동적인 공유 카드 생성
    • 문제: 정적인 영수증 이미지 사용 시 디자인 퀄리티 저하 및 이모지 렌더링 오류.
    • 해결: gcp/share_card.py를 수정하여 Imagen 3 모델로 카테고리별 배경 이미지를 생성하고, 그 위에 텍스트와 도장을 오버레이하는 방식으로 변경.
  3. 인스타그램 스토리 웹 공유
    • 문제: 웹 환경에서 인스타그램 스토리로 이미지 직접 공유는 공식적으로 막혀 있음.
    • 해결: 모바일 브라우저의 navigator.share (Web Share API)를 활용해 OS 공유 시트를 호출하여 네이티브 앱으로 전달하는 방식 우선 적용.
  4. 다국어 데이터 로컬라이제이션
    • 문제: 단순 기계 번역은 문맥(왜 이렇게 하는지, 자국과 뭐가 다른지)이 부족함.
    • 해결: 번역 프롬프트에 “자국 문화와의 차이”, “느낄 수 있는 어색함”, “한국에서는 괜찮다는 안심”이라는 3가지 요소를 강제하여 문화적 적응력을 높임.

인사이트

  • 모델 선택의 중요성: GLM의 추론 모델은 토큰 소모가 많고 느려, 챗봇용으로는 적합하지 않음. 빠르고 정확한 gemini-2.5-flash 같은 모델이 적합.
  • 프로토타이핑 속도: AI Studio API 키가 빠르지만, GCP 크레딧 활용을 위해 Vertex AI를 선택함. 설정이 복잡할 수 있으나 장기적인 확장성 고려.
  • 번역의 품질: “자국 기준”을 명시하는 프롬프트 엔지니어링이 번역 품질을 단순 번역에서 ‘실용적인 가이드’로 격상시킴.

5. 주요 코드 변경사항 (파일명 및 방향성)

  • src/data/gcp/receipt.py

    • 모델을 glm-4 계열에서 GCP gemini-2.5-flash (v1beta1 엔드포인트)로 변경.
    • parse_receipt 함수에서 이미지를 입력받아 상호명, 금액, 위치 힌트를 추출하도록 로직 구현.
  • src/data/gcp/share_card.py

    • generate_bg 함수에서 Imagen 3 (imagen-3.0-fast-generate-001) 모델을 호출하여 카테고리에 맞는 배경 이미지를 생성하도록 수정.
    • build_card 함수에서 이모지 사용을 중단하고 텍스트 레이블로 대체하여 폰트 렌더링 문제 해결.
  • src/data/api.py

    • /receipt/verify, /receipt/process, /receipt/ui 등의 엔드포인트를 추가하여 영수증 처리 및 공유 기능을 위한 API 생성.
    • Web Share API 로직이 포함된 HTML UI를 문자열로 임베드하여 라우터에서 직접 응답하도록 구성.
  • translator.py (Hamster_Locally 프로젝트)

    • 단순 번역 프롬프트를 “자국 문화 컨텍스트”가 포함된 로컬라이제이션 프롬프트로 수정.
    • _CULTURE_CONTEXT 딕셔너리를 통해 각 언어(EN, ZH, JA)별 자국 문화 표준(Norm)을 정의하고 프롬프트에 주입.

Supported by ai-log-sync & GLM-4.7