pile·
AI / ML·AWS KoreaAWS Korea Tech·

Amazon Bedrock Vision LLM과 Amazon OpenSearch Service를 활용한 농약 제품 이미지 인식 시스템 구축기

경농(주)이 스마트팜 앱 '파밍노트'에서 농약 제품 이미지를 촬영하면 자동으로 제품 정보를 찾아주는 AI 인식 시스템을 구축한 과정을 다룬다. 약 4,000종의 유사한 농약 제품명을 흐릿한 사진·오타·디자인 폰트에서도 정확히 식별하기 위해 Vision LLM + TypoCorrector + 계층적 Fallback 검색 + LLM Reranker 4단계 파이프라인을 설계했다.

핵심 포인트
  • Vision LLM(Claude Haiku 4.5)으로 라벨에서 텍스트를 추출하되, temperature 0.0, max_tokens 500 압축 JSON 전략으로 응답 속도를 줄였다.
  • OCR 오타는 RapidFuzz WRatio 스코어러(제품명 임계값 75, 제조사 80)로 보정 후 신뢰도를 0.2 상향 조정해 검색에 반영했다.
  • OpenSearch에서 exact match(boost 100) → prefix/suffix wildcard(boost 40~45) → 등록번호(boost 80) 순의 계층적 쿼리로 약 30개 후보를 추출한다.
  • 벡터 검색(Amazon Titan Embedding v2)을 테스트했지만 고유명사 미세 차이가 벡터 공간에서 구분되지 않아 키워드 검색+wildcard 방식을 최종 채택했다.
  • 외부 OCR 엔진(Upstage, EasyOCR, Tesseract) 앙상블을 검토했으나 비용·레이턴시 문제로 제외, Vision LLM 단독 + 프롬프트 튜닝으로 대체했다.
상세 정리
  • 배경: 경농 파밍노트 앱에서 고령 농민이 농약 제품을 스마트폰으로 촬영하면 정보를 자동 조회하는 AI렌즈 기능 구현이 목표였다.
  • 난제: 흐릿한 사진, 회전, 캘리그라피 디자인 폰트, 비슷한 이름(가네마이트 vs 카네마이트) 구분이 핵심 과제였다.
  • Vision LLM 설정: Claude Haiku 4.5, temperature 0.0, max_tokens 500. 응답을 압축 JSON으로 받아 서버에서 표준 형식으로 변환, 각 필드별 신뢰도(0.0~1.0) 함께 반환.
  • 이미지 상태 분류: CLEAR / ROTATED / MULTIPLE / NOT_FOUND 4가지로 진단하여 CLEAR가 아닌 경우 재촬영 안내.
  • 디자인 폰트 극복: 프롬프트에 "제품명은 라벨에서 가장 크고 눈에 띄는 텍스트"를 명시하는 것만으로 모델이 시각적 레이아웃을 파악하게 됐다.
  • 등록번호 구분: 형식 숫자-[살충|제초|살균]-숫자 명시 + 위험물 코드(H5, H8)와의 혼동 방지 지침을 프롬프트에 직접 기술.
  • TypoCorrector: 서버 시작 시 전체 제품명 4,000개·제조사 200개를 메모리에 캐싱, RapidFuzz WRatio로 1~2글자 오류 보정. 보정 후 해당 필드 신뢰도 0.2 상향.
  • 검색 쿼리 설계: 제품명으로 exact match, 앞/뒤 절반 prefix/suffix wildcard, 등록번호, 제조사, 품목명 등 6~7개 쿼리를 bool should로 조합. wildcard boost 공식은 50 - (제품명길이 - prefix길이) x 5.
  • Wildcard 성능: Leading wildcard는 인덱스 전체 스캔이지만 4,000종 규모에서 체감 지연 없음, 재현율 확보 우선.
  • LLM Reranker: OpenSearch에서 exact match 발견 시 후보 1~2개로 압축, 원본 이미지와 함께 멀티모달 재검증. 제형·용량 미세 차이까지 구분.
  • ETL 파이프라인: 등록번호/제조사/용도/등급의 한국어 표기 변형을 미리 생성해 인덱싱. Nori Tokenizer + 동의어 확장 적용. Blue-Green 배포로 서비스 중단 없이 인덱스 갱신.
  • 모델 선택: Haiku 4.5(응답 1~3초)를 Sonnet 4.5(3~8초)보다 선택. 개별 모델 정확도에 의존하지 않는 다중 보완 구조이기 때문.
  • 운영 콘솔: Next.js 15 기반 Mega Dev Console에서 Text-to-SQL/DSL, AI 메타데이터 자동 생성, 자연어 Cron 스케줄링, OCR 실험실 기능 제공.
  • 결과: 1~2글자 오타는 TypoCorrector + Fallback으로 대부분 보정, 평균 5초 내외 응답 속도 달성. 오인식이 심한 극단 케이스는 미해결 과제로 남음.
왜 읽나Vision LLM 단독 사용 대신 OCR 오타 보정 + 계층적 키워드 검색 + LLM Reranker를 조합해 실용적인 정확도를 확보한 구체적 설계와 파라미터가 담겨있어, 유사한 이미지 인식·검색 시스템을 구축하는 AI/백엔드 엔지니어에게 유용하다.
AWS Korea
AWS Korea Tech 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·인프랩 (인프런)인프런 (인프랩)·

    학습 에이전트 — AI 두뇌 구축하기

    인프런이 강의 학습 에이전트를 구축하며 겪은 기술 스택 선정, 컨텍스트·도구 설계, LLM-as-a-Judge 품질 개선, 비용 최적화 전략을 다룬다. LLM SSE 스트리밍 처리를 위해 Spring MVC + Virtual Thread + Spring AI를 선택하고, 명시적 프롬프트 캐싱으로 입력 토큰을 90% 절감하는 과정까지 실전 경험이 담겨 있다.

    #ai-agent#llm#llm-as-a-judge+2
  2. AI / ML·네이버 D2네이버 D2·

    AI 에이전트 회사 차리기: 설립부터 어디서든 동기화까지

    네이버 ENGINEERING DAY 2026 발표. Claude Code를 매일 쓰지만 매번 초기화되는 문제를 해결하기 위해 NaverMadCat이라는 다중 AI 에이전트 조직 프레임워크를 구축한 경험을 다룬다. 비서실장 역할의 에이전트가 10개 부서 에이전트를 조율하며, 어느 환경에서 접속해도 동일한 컨텍스트로 동작하도록 동기화 메커니즘을 구현했다.

    #claude-code#multi-agent#ai-agent+2
  3. AI / ML·vercel-blogVercel Blog·

    AI Gateway에서 실시간 음성 에이전트 구축하기

    Vercel AI Gateway가 음성·오디오 기능을 정식 지원한다. 실시간 대화 음성(Realtime Voice), 텍스트→음성(TTS), 음성→텍스트(STT) 세 가지를 기존 텍스트/이미지 모델과 동일한 라우팅·인증·모니터링 체계 위에서 사용할 수 있다. OpenAI gpt-realtime-2·Whisper와 xAI Grok 오디오 모델을 지원하며, AI SDK 7 베타로 제공된다.

    #llm-app#ai-sdk#realtime-voice+2