스파르타 코딩
[3주차] 키즈카페 조회 & 예약 사이트 만들기 (영수증 스캔, 카페 정보 크롤링)
스타르타
2024. 12. 20. 13:29
반응형
1. [내가 구현한 기능]
영수증 스캔 및 리뷰 연동
- OCR 기술을 이용해 영수증 이미지에서 텍스트를 추출하고, 이를 리뷰 작성 과정에 연동
- 리뷰와 리뷰 이미지 데이터를 데이터베이스에 저장하며 유효한 영수증 인증 과정을 포함
카페 정보 조회 및 크롤링 시스템
- 네이버 API를 통해 기본 카페 정보를 수집하고, 부족하거나 상세한 데이터는 크롤링 시스템으로 보완
- 수집된 데이터를 정제하여 데이터베이스에 저장하고 사용자에게 최신 정보를 제공
2. [주요 로직]
영수증 스캔 로직
- 이미지 업로드 처리: MockMultipartFile 또는 실제 파일을 업로드받아 서버에 저장
- OCR 처리: Tesseract OCR 라이브러리를 활용해 텍스트를 추출
- 영수증 유효성 검증: 추출된 텍스트에서 키워드(날짜, 상호명, 금액)를 분석해 실제 영수증 여부를 판단
- 리뷰 데이터 연동: 검증된 데이터를 리뷰 및 리뷰 이미지와 연결하여 데이터베이스에 저장
카페 정보 조회 로직
- 네이버 API 통합: 카페 이름, 주소, 카테고리 등 기본 정보를 API 호출로 수집
- 크롤링 보완: Puppeteer와 같은 크롤링 도구를 이용해 상세 정보(운영 시간, 메뉴, 전화번호)를 추가로 확보
- 데이터 정제 및 저장: 중복 및 누락 데이터를 정리하고 데이터베이스에 저장
3. [배경]
영수증 스캔
- 목적: 리뷰의 신뢰성을 보장하기 위해 영수증 인증을 요구
- 필요성: 리뷰 조작 방지와 사용자 신뢰 확보
카페 정보 조회
- 목적: 사용자에게 전국 카페 정보를 제공하여 편리성을 높임
- 필요성: 최신 정보를 자동으로 업데이트할 수 있는 효율적 시스템 구축
4. [요구사항]
영수증 스캔
- 사용자가 업로드한 영수증 이미지를 OCR로 처리하여 텍스트 데이터를 추출
- 영수증 데이터를 검증하여 유효한 경우에만 리뷰 등록 가능
- 리뷰 데이터와 이미지 파일을 리뷰 엔티티와 연동
카페 정보 조회
- 네이버 API와 크롤링을 통해 수집한 카페 정보를 통합
- 데이터베이스에 저장하여 빠르게 사용자에게 제공
5. [선택지]
영수증 스캔
- 오픈소스 OCR 라이브러리
- Tesseract: 무료, 커스터마이징 가능
- 장점: 초기 비용 절감, 로컬에서의 데이터 처리 가능
- 단점: 한글 인식률이 낮아 추가 전처리 필요
- 상용 OCR API
- Google Vision API, AWS Textract
- 장점: 높은 정확도, 다양한 언어 지원
- 단점: 사용 비용 발생
카페 정보 조회
- 네이버 API 단독 사용
- 장점: 안정적이고 정확한 데이터 제공
- 단점: 상세 정보 부족
- 크롤링 시스템 병행
- 장점: 세부 정보 확보 가능
- 단점: 크롤링 속도 및 차단 문제 발생 가능
6. [의사결정/사유]
영수증 스캔
- Tesseract OCR로 구현을 시작해 비용을 절감하고, 필요한 경우 상용 API로 확장 가능성을 열어둠
- 로컬 환경에서의 테스트가 용이하고, 초기 개발 속도가 빨랐음
카페 정보 조회
- 네이버 API를 우선 사용해 기본 데이터를 확보한 뒤 크롤링으로 부족한 데이터를 보완
- API와 크롤링의 조합으로 초기 구축 비용을 최소화하면서 상세한 데이터를 제공
7. [회고]
기술의 장단점
- 영수증 스캔
- 장점: Tesseract는 무료로 사용 가능하며 커스터마이징이 용이함
- 단점: 한글 인식률이 낮아 전처리(이미지 선명화, 노이즈 제거)가 필요함
- 카페 정보 조회
- 장점: 네이버 API로 기본 정보를 안정적으로 제공받아 빠르게 시스템 구축 가능
- 단점: 크롤링은 속도 및 법적 문제가 있을 수 있으며, 크롤링 로직이 복잡해짐
다시 시도한다면?
- 영수증 스캔
- 상용 API를 바로 도입해 한글 인식률 문제를 해결하고, 데이터 검증 로직을 강화할 것
- 대규모 데이터가 필요하면 하이브리드 방식(Tesseract + 상용 API)을 사용
- 카페 정보 조회
- 크롤링 대신 API 연계를 확장하거나, 데이터 제공 업체와의 파트너십을 통해 안정적인 데이터를 확보
- 크롤링 과정에서 발생하는 문제를 최소화하기 위해 분산 처리나 캐싱 도입
반응형