Skip to content

[feat] Instagram 게시글 이미지 OCR fallback 기반 장소 추출 추가 #16

@KyungminPark-steck

Description

@KyungminPark-steck

📖 배경

현재 Instagram 게시글(/p/...)은 caption 기반 텍스트만으로 장소 후보를 추출하고 있습니다.
하지만 맛집/장소 정보가 caption이 아니라 게시글 이미지 carousel 안에 포함된 경우, 기존 흐름에서는 Qwen 추출 결과가 비거나 장소 후보를 찾지 못하는 문제가 있습니다.

🎯 목표

Instagram 게시글에서 caption-only 추출이 실패했을 때, 게시글 이미지를 크롤링하고 OCR로 텍스트를 추출한 뒤 기존 Qwen/Kakao 파이프라인으로 장소 후보를 추출할 수 있게 합니다.

🛠️ 구현 내용

  • Instagram 게시글 이미지 carousel URL 수집 로직 추가

    • 현재 shortcode의 media JSON payload를 우선 파싱
    • 게시글 이미지와 무관한 프로필/추천 썸네일 필터링
    • 이미지 수집 timeout, max image count, carousel 순회 제한 설정 추가
  • HF OCR client 추가

    • 기존 장소 추출용 HFExtractionClient와 분리된 HFOCRClient 추가
    • HF image-text-to-text 모델을 사용해 이미지 내 한글/영문 텍스트 추출
  • Processor fallback 연결

    • 기존처럼 caption-only Qwen 추출을 먼저 실행
    • 추출 결과가 없거나 places가 비어 있으면 Instagram post에 한해 이미지 OCR fallback 실행
    • caption + OCR text augmented content를 생성해 Qwen 추출 재실행
    • fallback 실행 시 사용된 augmented content를 최종 content_text로 저장
    • raw_metadata.instagram.ocr_fallback에 image count, OCR text count, timeout/error 정보 기록
  • 테스트 추가

    • 이미지 URL 수집, HF OCR payload/retry, processor fallback 단위 테스트 추가
    • Instagram OCR fallback live opt-in 테스트 추가
    • Kakao 검색까지 포함한 live 검증 리포트 생성

⚠️ 고려사항

  • Instagram DOM/JSON payload 구조는 변경될 수 있어, live opt-in 테스트로 주기적 확인이 필요합니다.
  • 이미지 OCR fallback은 caption-only 추출 실패 시에만 실행해 불필요한 크롤링/HF 비용을 줄입니다.

✅ 완료 조건

  • Instagram 게시글에서 caption-only Qwen 추출 결과가 없을 때 이미지 OCR fallback이 실행된다.
  • OCR 결과가 caption과 함께 augmented content로 구성되어 기존 Qwen 장소 추출에 사용된다.
  • 추출된 장소 후보가 기존 Kakao 검색 로직으로 enrich된다.
  • 관련 단위 테스트가 통과한다.
  • 제공된 Instagram 게시글 URL에 대해 live opt-in 테스트에서 이미지 OCR fallback과 장소 추출이 동작함을 확인한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    feat새로운 기능 추가

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions