Skip to content

SW-HACKATHON-7/server-vision-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

17 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Chat OCR API V2

์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ฑ„ํŒ… ์Šคํฌ๋ฆฐ์ƒท OCR ๋ฐ ๋Œ€ํ™” ๋ถ„์„ API

๊ฐœ์š”

์นด์นด์˜คํ†ก ๋“ฑ์˜ ์ฑ„ํŒ… ์Šคํฌ๋ฆฐ์ƒท์„ ์—…๋กœ๋“œํ•˜๋ฉด OCR์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”์ถœํ•˜๊ณ , ์™ธ๋ถ€ AI API๋ฅผ ํ†ตํ•ด ๋Œ€ํ™” ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์žฅ์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์—…๋กœ๋“œํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„ ๋ณ‘ํ•ฉํ•˜๊ณ , ์ „์ฒด ๋Œ€ํ™” ํ๋ฆ„์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ๋‹ค์ค‘ ์Šคํฌ๋ฆฐ์ƒท ์—…๋กœ๋“œ ๋ฐ ์ž๋™ ๋ณ‘ํ•ฉ
  • ์ฑ„ํŒ… ๋งํ’์„  ๊ฐ์ง€ ๋ฐ OCR
  • ์™ธ๋ถ€ AI API ์—ฐ๋™์„ ํ†ตํ•œ ๋Œ€ํ™” ๋ถ„์„
  • ์Šคํฌ๋ฆฐ์ƒท ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ๊ฒ€์ƒ‰
  • ๋‹ค์Œ ๋Œ€ํ™” ์˜ˆ์ธก
  • ๋Œ€ํ™” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ”„๋ก์‹œ

API ๋ช…์„ธ

1. ์„ธ์…˜ ์ƒ์„ฑ

์ƒˆ๋กœ์šด ๋ถ„์„ ์„ธ์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Endpoint: POST /sessions

Request Body: ์—†์Œ

Response:

{
  "session_id": "2ea688cf-315f-4dcb-9580-59262fbe5888",
  "created_at": "2025-01-15T10:30:00.123456",
  "status": "processing"
}

2. ์Šคํฌ๋ฆฐ์ƒท ์—…๋กœ๋“œ

์ƒ์„ฑ๋œ ์„ธ์…˜์— ์Šคํฌ๋ฆฐ์ƒท์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ์—ฌ๋Ÿฌ ์žฅ ์—…๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Endpoint: POST /sessions/{session_id}/upload

Request:

  • Content-Type: multipart/form-data
  • Body:
    • file: ์ด๋ฏธ์ง€ ํŒŒ์ผ (JPG, PNG)

Response:

{
  "screenshot_id": "abc123-def456",
  "session_id": "2ea688cf-315f-4dcb-9580-59262fbe5888",
  "upload_order": 1,
  "processed": false,
  "message": "Screenshot uploaded successfully (order: 1)"
}

3. ์„ธ์…˜ ์ฒ˜๋ฆฌ

์—…๋กœ๋“œ๋œ ์Šคํฌ๋ฆฐ์ƒท๋“ค์„ OCR ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ณ‘ํ•ฉํ•œ ํ›„, ์™ธ๋ถ€ AI API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

Endpoint: POST /sessions/{session_id}/process

Query Parameters:

  • relationship (required): ๋Œ€ํ™” ์ƒ๋Œ€์™€์˜ ๊ด€๊ณ„ (์˜ˆ: "FRIEND", "SUPERIOR", "LOVER")
  • relationship_info (required): ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด (์˜ˆ: "2๋…„ ์ง€๊ธฐ", "ํšŒ์‚ฌ ์ƒ์‚ฌ")

Request:

POST /sessions/2ea688cf-315f-4dcb-9580-59262fbe5888/process?relationship=FRIEND&relationship_info=2๋…„%20์ง€๊ธฐ

Response:

{
  "session_id": "2ea688cf-315f-4dcb-9580-59262fbe5888",
  "status": "completed",
  "total_screenshots": 2,
  "total_messages": 22,
  "merge_info": {
    "merge_history": [
      {
        "step": 1,
        "overlap_found": true,
        "overlap_length": 5
      }
    ],
    "total_merged": 22
  },
  "external_api_called": true
}

4. ๋ฉ”์‹œ์ง€ ์กฐํšŒ

์„ธ์…˜์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. AI ๋ถ„์„ ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Endpoint: GET /sessions/{session_id}/messages

Response:

{
  "session_id": "2ea688cf-315f-4dcb-9580-59262fbe5888",
  "total_messages": 22,
  "total_screenshots": 2,
  "messages": [
    {
      "message_id": "msg-001",
      "text": "์˜ค๋Š˜ ์ €๋… ๋ญ ๋จน์„๊นŒ?",
      "speaker": "user",
      "confidence": 0.95,
      "position": {
        "x": 150.0,
        "y": 200.0,
        "width": 180.0,
        "height": 50.0
      },
      "group_id": 1,
      "score": 85.0,
      "emotional_tone": "POSITIVE",
      "impact_score": 2.0,
      "ai_message": "์นœ๊ทผํ•˜๊ณ  ์ ์ ˆํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.",
      "suggested_alternative": null
    },
    {
      "message_id": "msg-002",
      "text": "์•„๋ฌด๊ฑฐ๋‚˜ ๊ดœ์ฐฎ์•„",
      "speaker": "interlocutor",
      "confidence": 0.92,
      "position": {
        "x": 50.0,
        "y": 270.0,
        "width": 160.0,
        "height": 45.0
      },
      "group_id": 2,
      "score": null,
      "emotional_tone": null,
      "impact_score": null,
      "ai_message": null,
      "suggested_alternative": null
    }
  ]
}

Response Fields:

  • message_id: ๋ฉ”์‹œ์ง€ ๊ณ ์œ  ID
  • text: ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ
  • speaker: ๋ฐœํ™”์ž ("user" ๋˜๋Š” "interlocutor")
  • confidence: OCR ์‹ ๋ขฐ๋„ (0.0 ~ 1.0)
  • position: ์Šคํฌ๋ฆฐ์ƒท ๋‚ด ์œ„์น˜ ์ •๋ณด
  • group_id: ์—ฐ์†๋œ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน ID
  • score: AI ํ‰๊ฐ€ ์ ์ˆ˜ (0 ~ 100, user ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)
  • emotional_tone: ๊ฐ์ • ํ†ค (user ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)
  • impact_score: ์˜ํ–ฅ ์ ์ˆ˜ (-3 ~ 3, user ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)
  • ai_message: AI ํ”ผ๋“œ๋ฐฑ (user ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)
  • suggested_alternative: AI ์ถ”์ฒœ ๋Œ€์•ˆ ํ‘œํ˜„ (user ๋ฉ”์‹œ์ง€๋งŒ ํ•ด๋‹น)

5. ์Šคํฌ๋ฆฐ์ƒท์œผ๋กœ ๋ฉ”์‹œ์ง€ ๊ฒ€์ƒ‰

๊ธฐ์กด ์„ธ์…˜์—์„œ ํŠน์ • ์Šคํฌ๋ฆฐ์ƒท์— ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

Endpoint: POST /sessions/{session_id}/search

Request:

  • Content-Type: multipart/form-data
  • Body:
    • file: ๊ฒ€์ƒ‰ํ•  ์ด๋ฏธ์ง€ ํŒŒ์ผ

Response:

{
  "matched": true,
  "message": "Found 3 matching messages",
  "results": [
    {
      "message_id": "msg-001",
      "text": "์˜ค๋Š˜ ์ €๋… ๋ญ ๋จน์„๊นŒ?",
      "speaker": "user",
      "confidence": 0.95,
      "position": {...},
      "group_id": 1
    }
  ]
}

6. ์Šคํฌ๋ฆฐ์ƒท์œผ๋กœ ๋ถ„์„ ๊ฒฐ๊ณผ ์กฐํšŒ

์—ฌ๋Ÿฌ ์žฅ์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์—…๋กœ๋“œํ•˜์—ฌ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋“ค์˜ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. Fuzzy matching์„ ์ง€์›ํ•˜๋ฏ€๋กœ OCR ๊ฒฐ๊ณผ๊ฐ€ ์•ฝ๊ฐ„ ๋‹ฌ๋ผ๋„ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค.

Endpoint: POST /sessions/{session_id}/view

Request:

  • Content-Type: multipart/form-data
  • Body:
    • files: ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋ฐฐ์—ด (์—ฌ๋Ÿฌ ์žฅ ์—…๋กœ๋“œ ๊ฐ€๋Šฅ)

Response:

{
  "session_id": "2ea688cf-315f-4dcb-9580-59262fbe5888",
  "matched": true,
  "total_matched": 15,
  "total_ocr_extracted": 18,
  "messages": [
    {
      "message_id": "msg-001",
      "text": "์˜ค๋Š˜ ์ €๋… ๋ญ ๋จน์„๊นŒ?",
      "speaker": "user",
      "confidence": 0.95,
      "position": {...},
      "group_id": 1,
      "score": 85.0,
      "emotional_tone": "POSITIVE",
      "impact_score": 2.0,
      "ai_message": "์นœ๊ทผํ•˜๊ณ  ์ ์ ˆํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.",
      "suggested_alternative": null
    }
  ]
}

7. ๋‹ค์Œ ๋Œ€ํ™” ์˜ˆ์ธก

ํ˜„์žฌ ๋Œ€ํ™” ๋งฅ๋ฝ์„ ๋ถ„์„ํ•˜์—ฌ ๋‹ค์Œ์— ๋ณด๋‚ผ ๋ฉ”์‹œ์ง€๋ฅผ 3๊ฐ€์ง€ ์Šคํƒ€์ผ๋กœ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

Endpoint: POST /sessions/{session_id}/predict-next

Request Body: ์—†์Œ (์„ธ์…˜ ์ •๋ณด ์ž๋™ ์‚ฌ์šฉ)

Response:

{
  "session_id": "2ea688cf-315f-4dcb-9580-59262fbe5888",
  "relationship": "FRIEND",
  "relationship_info": "2๋…„ ์ง€๊ธฐ",
  "total_messages": 22,
  "suggestions": [
    {
      "style": "๊ณต๊ฐํ˜•",
      "text": "์•„, ๊ทธ ๋ถ€๋ถ„ ๊ถ๊ธˆํ•˜์…จ๊ฒ ์–ด์š”. ์ œ๊ฐ€ ๋จผ์ € ๋ง์”€๋“œ๋ ธ์–ด์•ผ ํ–ˆ๋„ค์š”.",
      "expected_impact": 2,
      "explanation": "์ƒ๋Œ€์˜ ๊ถ๊ธˆ์ฆ์„ ์ธ์ •ํ•˜๊ณ  ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์‚ฌ๊ณผํ•˜๋Š” ์‘๋‹ต"
    },
    {
      "style": "ํ•ด๊ฒฐํ˜•",
      "text": "ํ˜น์‹œ ๊ธ‰ํ•˜์‹ ๊ฐ€์š”? ์ง€๊ธˆ ๋ฐ”๋กœ ํ™•์ธํ•ด๋ณผ๊ฒŒ์š”.",
      "expected_impact": 1,
      "explanation": "์ฆ‰๊ฐ์ ์ธ ํ•ด๊ฒฐ ์˜์ง€๋ฅผ ๋ณด์ด๋Š” ์‘๋‹ต"
    },
    {
      "style": "๊ด€๊ณ„ํ˜•",
      "text": "์•—, ์ œ๊ฐ€ ๋ฏธ๋ฆฌ ๊ณต์œ ๋ฅผ ๋ชป ๋“œ๋ ธ๋„ค์š”. ๋ฐ”๋กœ ์ง„ํ–‰ ์ƒํ™ฉ ๊ณต์œ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!",
      "expected_impact": 3,
      "explanation": "์ฑ…์ž„๊ฐ์„ ๋ณด์ด๋ฉฐ ์ ๊ทน์ ์œผ๋กœ ์†Œํ†ตํ•˜๋ ค๋Š” ์ž์„ธ๋ฅผ ๋ณด์ด๋Š” ์‘๋‹ต"
    }
  ]
}

8. ๋Œ€ํ™” ์‹œ์ž‘ (ํ”„๋ก์‹œ)

์™ธ๋ถ€ AI์™€ ์ƒˆ๋กœ์šด ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. AI๊ฐ€ ๊ด€๊ณ„์— ๋งž๋Š” ์ฒซ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

Endpoint: POST /start-conversation

Request Body:

{
  "relationship": "์—ฐ์ธ"
}

Response:

{
  "message": "์š”์ฆ˜ ๋‚˜๋ž‘ ๋ณด๋‚ด๋Š” ์‹œ๊ฐ„ ์–ด๋•Œ? ์ข€ ๋” ํ•จ๊ป˜ ํ•˜๊ณ  ์‹ถ์–ด.",
  "thread_id": "thread_W2z3FfcGAB3b7vLPJWrwREaF"
}

9. ๋Œ€ํ™” ์ด์–ด๊ฐ€๊ธฐ (ํ”„๋ก์‹œ)

์ง„ํ–‰ ์ค‘์ธ ๋Œ€ํ™”์— ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  AI์˜ ์‘๋‹ต๊ณผ ํ‰๊ฐ€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

Endpoint: POST /continue-conversation

Request Body:

{
  "message": "์š”์ฆ˜ ์ข€ ๋ฐ”๋น ",
  "thread_id": "thread_W2z3FfcGAB3b7vLPJWrwREaF"
}

Response:

{
  "message": "๋ฐ”์œ ๊ฑด ์ดํ•ดํ•ด. ๊ทธ๋ž˜๋„ ๋„ค ๋งˆ์Œ์ด ๊ถ๊ธˆํ•œ๋ฐ ์กฐ๊ธˆ๋งŒ ์‹œ๊ฐ„ ๋‚ด์ค„ ์ˆ˜ ์žˆ์„๊นŒ?",
  "response": {
    "emotional_tone": "NEUTRAL",
    "appropriateness_rating": 60,
    "impact_score": 0,
    "review_comment": "์ƒํ™ฉ์„ ์„ค๋ช…ํ•˜๋Š” ํ‘œํ˜„์ด์ง€๋งŒ ์ƒ๋Œ€๋ฐฉ์˜ ๊ฐ์ •์„ ๊ณ ๋ คํ•œ ์ถ”๊ฐ€ ์„ค๋ช…์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.",
    "suggested_alternative": "์š”์ฆ˜ ์ผ์ด ๋งŽ์•„์„œ ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•ด. ๋ฏธ์•ˆํ•ด, ์กฐ๊ธˆ๋งŒ ๊ธฐ๋‹ค๋ ค์ค„ ์ˆ˜ ์žˆ์„๊นŒ?"
  }
}

Response Fields:

  • message: AI์˜ ์‘๋‹ต ๋ฉ”์‹œ์ง€
  • response.emotional_tone: ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€์˜ ๊ฐ์ • ํ†ค
  • response.appropriateness_rating: ์ ์ ˆ์„ฑ ํ‰๊ฐ€ (0 ~ 100)
  • response.impact_score: ๊ด€๊ณ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ (-3 ~ 3)
  • response.review_comment: AI ํ”ผ๋“œ๋ฐฑ
  • response.suggested_alternative: ์ถ”์ฒœ ๋Œ€์•ˆ ํ‘œํ˜„

์‚ฌ์šฉ ์˜ˆ์‹œ

1. OCR ๋ฐ ๋ถ„์„ ํ”Œ๋กœ์šฐ

# 1. ์„ธ์…˜ ์ƒ์„ฑ
curl -X POST http://server/sessions

# 2. ์Šคํฌ๋ฆฐ์ƒท ์—…๋กœ๋“œ (์—ฌ๋Ÿฌ ์žฅ)
curl -X POST http://server/sessions/{session_id}/upload \
  -F "file=@screenshot1.jpg"
curl -X POST http://server/sessions/{session_id}/upload \
  -F "file=@screenshot2.jpg"

# 3. ์„ธ์…˜ ์ฒ˜๋ฆฌ (OCR + ๋ณ‘ํ•ฉ + AI ๋ถ„์„)
curl -X POST "http://server/sessions/{session_id}/process?relationship=FRIEND&relationship_info=2๋…„%20์ง€๊ธฐ"

# 4. ๊ฒฐ๊ณผ ์กฐํšŒ
curl -X GET http://server/sessions/{session_id}/messages

# 5. ๋‹ค์Œ ๋Œ€ํ™” ์˜ˆ์ธก
curl -X POST http://server/sessions/{session_id}/predict-next

2. ๋Œ€ํ™” ์‹œ๋ฎฌ๋ ˆ์ด์…˜

# 1. ๋Œ€ํ™” ์‹œ์ž‘
curl -X POST http://server/start-conversation \
  -H "Content-Type: application/json" \
  -d '{"relationship": "์—ฐ์ธ"}'

# 2. ๋Œ€ํ™” ์ด์–ด๊ฐ€๊ธฐ
curl -X POST http://server/continue-conversation \
  -H "Content-Type: application/json" \
  -d '{"message": "์˜ค๋Š˜ ํž˜๋“  ํ•˜๋ฃจ์˜€์–ด", "thread_id": "thread_xxx"}'

ํ…Œ์ŠคํŠธ ํด๋ผ์ด์–ธํŠธ

OCR ์ „์ฒด ํ”Œ๋กœ์šฐ ํ…Œ์ŠคํŠธ

python test_client.py

๋Œ€ํ™” ํ”„๋ก์‹œ ํ…Œ์ŠคํŠธ

# ๊ฐ„๋‹จํ•œ ๋Œ€ํ™” ํ…Œ์ŠคํŠธ
python test_conversation.py simple

# ์—ฌ๋Ÿฌ ๊ด€๊ณ„ ์œ ํ˜• ํ…Œ์ŠคํŠธ
python test_conversation.py multiple

# ๊ธด ๋Œ€ํ™” ํ…Œ์ŠคํŠธ
python test_conversation.py long

์„ค์น˜ ๋ฐ ์‹คํ–‰

ํ•„์š” ํŒจํ‚ค์ง€ ์„ค์น˜

pip install -r requirements.txt

์„œ๋ฒ„ ์‹คํ–‰

python main.py

์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 0.0.0.0:80์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์™ธ๋ถ€ API ์„ค์ •

main.py์˜ Configuration ์„น์…˜์—์„œ ์™ธ๋ถ€ AI API URL์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

EXTERNAL_API_URL = "http://localhost:8080/analyze-messages"
SUGGESTION_API_URL = "http://localhost:8080/suggestion-messages"
START_CONVERSATION_URL = "http://localhost:8080/start-conversation"
SEND_MESSAGE_URL = "http://localhost:8080/send-message"

์™ธ๋ถ€ API๊ฐ€ ์—†์œผ๋ฉด ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

SQLite๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, chat_sessions.db ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ

sessions: ์„ธ์…˜ ์ •๋ณด

  • session_id (TEXT, PK)
  • created_at (TEXT)
  • updated_at (TEXT)
  • status (TEXT)
  • total_screenshots (INTEGER)
  • total_messages (INTEGER)
  • relationship (TEXT)
  • relationship_info (TEXT)

screenshots: ์—…๋กœ๋“œ๋œ ์Šคํฌ๋ฆฐ์ƒท

  • screenshot_id (TEXT, PK)
  • session_id (TEXT, FK)
  • file_path (TEXT)
  • upload_order (INTEGER)
  • uploaded_at (TEXT)
  • processed (INTEGER)
  • image_width (INTEGER)
  • image_height (INTEGER)

messages: OCR ์ถ”์ถœ ๋ฉ”์‹œ์ง€

  • message_id (TEXT, PK)
  • session_id (TEXT, FK)
  • screenshot_id (TEXT, FK)
  • text (TEXT)
  • speaker (TEXT)
  • confidence (REAL)
  • position_x, position_y, position_width, position_height (REAL)
  • group_id (INTEGER)
  • sequence_order (INTEGER)
  • score (REAL)
  • emotional_tone (TEXT)
  • impact_score (REAL)
  • review_comment (TEXT)
  • suggested_alternative (TEXT)
  • created_at (TEXT)

์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

์Šคํฌ๋ฆฐ์ƒท ๋ณ‘ํ•ฉ

์—ฌ๋Ÿฌ ์žฅ์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์—…๋กœ๋“œํ•˜๋ฉด ๊ฒน์น˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜์—ฌ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฒน์น˜๋ฉด ๋ณ‘ํ•ฉ
  • ๊ฒน์น˜๋Š” ๋ถ€๋ถ„ ์ดํ›„์˜ ๋ฉ”์‹œ์ง€๋งŒ ์ถ”๊ฐ€
  • ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด๋ถ™์ž„

Fuzzy Matching

/view ์—”๋“œํฌ์ธํŠธ์—์„œ๋Š” SequenceMatcher๋ฅผ ์‚ฌ์šฉํ•œ ํ…์ŠคํŠธ ์œ ์‚ฌ๋„ ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ์‚ฌ๋„ ์ž„๊ณ„๊ฐ’: 85%
  • OCR ์˜ค์ฐจ๋ฅผ ๊ณ ๋ คํ•œ ์œ ์—ฐํ•œ ๋งค์นญ

์—๋Ÿฌ ์ฒ˜๋ฆฌ

๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ๋Š” ์‹คํŒจ ์‹œ ์ ์ ˆํ•œ HTTP ์ƒํƒœ ์ฝ”๋“œ์™€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

  • 400: ์ž˜๋ชป๋œ ์š”์ฒญ (์„ธ์…˜์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Œ, ๋ฉ”์‹œ์ง€ ์—†์Œ ๋“ฑ)
  • 404: ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ (์„ธ์…˜ ์—†์Œ)
  • 500: ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜
  • 502: ์™ธ๋ถ€ API ์˜ค๋ฅ˜
  • 504: ์™ธ๋ถ€ API ํƒ€์ž„์•„์›ƒ
{
  "detail": "Session not found"
}

About

VisionParser

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages