Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

hunworkid-collab/Book-Scanner

Repository files navigation

πŸ“š μ±…μž₯ μŠ€μΊλ„ˆ | BOOK SCANNER

"μ±…μž₯ 사진 ν•œ μž₯으둜 μ™„μ„±λ˜λŠ” λ‚˜λ§Œμ˜ 슀마트 μ„œμž¬"

이 ν”„λ‘œμ νŠΈλŠ” μ±…μž₯ 사진을 찍으면 AIκ°€ 책등을 μΈμ‹ν•˜μ—¬ μžλ™μœΌλ‘œ λ„μ„œ 정보λ₯Ό μ •λ¦¬ν•΄μ£ΌλŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€.
Google Gemini의 κ°•λ ₯ν•œ λΉ„μ „ 인식 λŠ₯λ ₯κ³Ό 넀이버 μ±… 검색 API, Google Books APIλ₯Ό κ²°ν•©ν•˜μ—¬ ν•œκ΅­ μ±…κ³Ό μ™Έκ΅­ μ±… λͺ¨λ‘ μ •ν™•ν•˜κ³  ν’λΆ€ν•œ λ„μ„œ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.


✨ μ£Όμš” κΈ°λŠ₯ (Key Features)

  1. πŸ“Έ AI 촬영 및 뢄석

    • μ±…μž₯이 λ‚˜μ˜¨ 사진을 μ—…λ‘œλ“œν•˜κ±°λ‚˜ λ°”λ‘œ μ΄¬μ˜ν•˜λ©΄, Google Gemini 2.0 Flash λͺ¨λΈμ΄ 이미지 λ‚΄μ˜ λͺ¨λ“  책등을 λΆ„μ„ν•˜μ—¬ 제λͺ©, μ €μž, μΆœνŒμ‚¬λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€.
  2. πŸ” μžλ™ 데이터 보정 (Auto Enrichment)

    • AIκ°€ 읽어낸 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 넀이버 μ±… 검색 API와 Google Books APIλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ‘°νšŒν•˜μ—¬ ISBN, 쀄거리, 좜판일, 정식 ν‘œμ§€ 이미지λ₯Ό μžλ™μœΌλ‘œ μ±„μ›Œ λ„£μŠ΅λ‹ˆλ‹€.
    • 넀이버 API μš°μ„  검색: ν•œκ΅­ μ±… ν‘œμ§€ 검색λ₯  λŒ€ν­ ν–₯상
    • 쀑볡 λ°©μ§€: ISBN λ˜λŠ” 제λͺ©+μ €μžλ‘œ 쀑볡 μ €μž₯ λ°©μ§€
  3. πŸ•΅οΈ κΌΌκΌΌν•˜κ²Œ λ‹€μ‹œ μ°ΎκΈ° (Deep Retry)

    • ν‘œμ§€λ‚˜ 정보가 λˆ„λ½λœ 책이 μžˆλ‹€λ©΄? "κΌΌκΌΌν•˜κ²Œ λ‹€μ‹œ μ°ΎκΈ°" λ²„νŠΌ ν•˜λ‚˜λ‘œ AIκ°€ 검색 쑰건을 μ™„ν™”ν•˜μ—¬(λΆ€μ œ 제거, ν‚€μ›Œλ“œ 검색 λ“±) μ§‘μš”ν•˜κ²Œ 정보λ₯Ό μ°Ύμ•„λƒ…λ‹ˆλ‹€.
  4. πŸ“Š μ—‘μ…€ 내보내기 (Excel Export)

    • μ •λ¦¬λœ λ‚˜λ§Œμ˜ μ„œμž¬ λͺ©λ‘μ„ 클릭 ν•œ 번으둜 .xlsx μ—‘μ…€ 파일둜 λ‹€μš΄λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. 🎨 감성적이고 직관적인 UI

    • ν•œ|영 λͺ¨λ“œ: ν•œκ΅­μ–΄/μ˜μ–΄ μ–Έμ–΄ μ „ν™˜ 지원
    • λ…μ„œ λͺ…μ–Έ: 뢄석 쀑 50개의 λ…μ„œ λͺ…언을 랜덀으둜 ν‘œμ‹œ
    • μΉ΄μš΄νŠΈλ‹€μš΄: 5초 μžλ™ 뢄석 μ‹œμž‘ κΈ°λŠ₯
    • Dynamic UX: 생동감 λ„˜μΉ˜λŠ” 뢄석 λ‘œλ”© 바와 λ°˜μ‘ν˜• λ””μžμΈμœΌλ‘œ 지루할 ν‹ˆ μ—†λŠ” μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ›  기술 μŠ€νƒ (Tech Stack)

이 ν”„λ‘œμ νŠΈλŠ” AWS EC2 ν™˜κ²½ μœ„μ˜ LAMP Stack 기반으둜 κ΅¬μΆ•λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Infrastructure & Backend

  • Server: AWS EC2 (Linux)
  • Web Server: Apache HTTP Server
  • Language: PHP 8.x
  • Database: MySQL (MariaDB)

Frontend

  • Core: HTML5, JavaScript (Vanilla ES6+)
  • Styling: Tailwind CSS (CDN 방식, No Build Tool)
  • Libraries: SheetJS (xlsx) for Excel export, FontAwesome for icons

AI & API

  • Vision AI: Google Gemini API (gemini-2.0-flash)
  • Data Source:
    • 넀이버 μ±… 검색 API (ν•œκ΅­ μ±… μš°μ„ )
    • Google Books API (μ™Έκ΅­ μ±…/폴백)

πŸ“‚ ν”„λ‘œμ νŠΈ ꡬ쑰 (Structure)

/opt/bitnami/apache/htdocs/BOOKSCAN/
β”œβ”€β”€ index.html # 메인 UI (μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜)
β”œβ”€β”€ api_vision.php # 핡심 둜직: 이미지 μ—…λ‘œλ“œ -> Gemini 뢄석 -> 1μ°¨ DB μ €μž₯
β”œβ”€β”€ api_retry_enrich.php # 보정 둜직: λˆ„λ½λœ 정보 μž¬κ²€μƒ‰ 및 μ—…λ°μ΄νŠΈ
β”œβ”€β”€ api_books.php # 쑰회 둜직: DB에 μ €μž₯된 λ„μ„œ λͺ©λ‘ 쑰회 (JSON)
β”œβ”€β”€ api_reset.php # μ΄ˆκΈ°ν™” 둜직: λͺ¨λ“  데이터 μ‚­μ œ
β”œβ”€β”€ config.php # ν™˜κ²½ λ³€μˆ˜ 및 μ„€μ • 관리
β”œβ”€β”€ common.php # 곡톡 ν•¨μˆ˜ λͺ¨λ“ˆ (API μš”μ²­, λ‘œκΉ… λ“±)
β”œβ”€β”€ db_connect.php # λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° μ„€μ •
β”œβ”€β”€ init_db.sql # λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ
β”œβ”€β”€ .env # ν™˜κ²½ λ³€μˆ˜ (μ„œλ²„μ—λ§Œ 쑴재)
└── uploads/ # μ—…λ‘œλ“œλœ μ±…μž₯ 이미지 μ €μž₯μ†Œ

πŸš€ μ„€μΉ˜ 및 μ‹€ν–‰ (Setup)

1. ν™˜κ²½ μ„€μ •

PHP 8.x와 MySQL이 μ„€μΉ˜λœ μ›Ή μ„œλ²„(Apache/Nginx)κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

2. λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •

mysql -u root -p < init_db.sql

3. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

μ„œλ²„μ— .env νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€:

cp .env.example .env
nano .env # λ˜λŠ” μ›ν•˜λŠ” μ—λ””ν„°λ‘œ νŽΈμ§‘

.env.example νŒŒμΌμ„ μ°Έκ³ ν•˜μ—¬ μ‹€μ œ κ°’μœΌλ‘œ μˆ˜μ •ν•˜μ„Έμš”.

4. API ν‚€ λ°œκΈ‰

5. κΆŒν•œ μ„€μ •

chmod 755 uploads/
chmod 666 app.log debug_log.txt

6. 배포

./deploy.sh

πŸ“ 개발자 λ…ΈνŠΈ

μ„±λŠ₯ μ΅œμ ν™”

  • λŒ€μš©λŸ‰ 이미지 처리 μ‹œ μ„œλ²„ νƒ€μž„μ•„μ›ƒμ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ‘œμ§μ„ μ΅œμ ν™”
  • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ 비동기(fetch) 처리둜 UX κ°œμ„ 
  • 넀이버 API μš°μ„  κ²€μƒ‰μœΌλ‘œ ν•œκ΅­ μ±… 검색 속도 ν–₯상

λ³΄μ•ˆ

  • μ—…λ‘œλ“œλœ μ΄λ―Έμ§€λŠ” μœ λ‹ˆν¬ν•œ 파일λͺ…μœΌλ‘œ μ €μž₯
  • SQL Injection λ°©μ§€λ₯Ό μœ„ν•΄ PDO Prepared Statement μ‚¬μš©
  • 파일 μ—…λ‘œλ“œ 검증 (νƒ€μž…, 크기, MIME νƒ€μž…)
  • ν™˜κ²½ λ³€μˆ˜λ‘œ λ―Όκ°ν•œ 정보 관리

μ£Όμš” κΈ°λŠ₯

  • 쀑볡 λ°©μ§€: ISBN λ˜λŠ” 제λͺ©+μ €μžλ‘œ 쀑볡 μ €μž₯ λ°©μ§€
  • μ—λŸ¬ 처리: μƒμ„Έν•œ μ—λŸ¬ λ‘œκΉ… 및 μ‚¬μš©μž μΉœν™”μ  λ©”μ‹œμ§€
  • νŠΈλžœμž­μ…˜: 데이터 일관성 보μž₯
  • λ‘œκΉ… μ‹œμŠ€ν…œ: κ΅¬μ‘°ν™”λœ 둜그 레벨 관리

ν”„λ‘œμ νŠΈ ꡬ쑰

  • λͺ¨λ“ˆν™”: 곡톡 ν•¨μˆ˜λ₯Ό common.php둜 뢄리
  • μ„€μ • 관리: config.php둜 μ€‘μ•™ν™”λœ μ„€μ • 관리
  • 배포 μžλ™ν™”: deploy.sh 슀크립트둜 κ°„νŽΈν•œ 배포

πŸ“„ κ΄€λ ¨ λ¬Έμ„œ


개발자: Jinho Jung
λΌμ΄μ„ μŠ€: MIT
버전: 2.0

About

πŸ“š AI 기반 μ±…μž₯ μŠ€μΊλ„ˆ - μ±…μž₯ 사진 ν•œ μž₯으둜 μ™„μ„±λ˜λŠ” λ‚˜λ§Œμ˜ 슀마트 μ„œμž¬

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • HTML 62.5%
  • PHP 35.0%
  • Shell 2.5%

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /