tkdehf2 commited on
Commit
5d4a12f
Β·
verified Β·
1 Parent(s): d93fa6d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -32
app.py CHANGED
@@ -2,44 +2,56 @@ import gradio as gr
2
  import pytesseract
3
  from PIL import Image
4
 
5
- # OCR 및 평가 ν•¨μˆ˜ μ •μ˜
 
 
 
 
6
  def evaluate_solution(image):
7
  """
8
  손글씨 이미지λ₯Ό λ°›μ•„ OCR둜 ν…μŠ€νŠΈλ₯Ό μΆ”μΆœν•˜κ³ ,
9
  성취기쀀에 따라 평가 및 ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜λŠ” ν•¨μˆ˜.
10
  """
11
- # OCR둜 μ΄λ―Έμ§€μ—μ„œ ν…μŠ€νŠΈ μΆ”μΆœ
12
- extracted_text = pytesseract.image_to_string(image, lang="kor")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
- # 초기 점수 및 ν”Όλ“œλ°± μ„€μ •
15
- score = 0
16
- feedback = []
17
-
18
- # 평가 κΈ°μ€€ μ˜ˆμ‹œ (6ν•™λ…„ μˆ˜ν•™ μ„±μ·¨κΈ°μ€€ 기반)
19
- if "ν˜Όν•© 계산" in extracted_text:
20
- feedback.append("ν˜Όν•© 계산 풀이가 ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
21
- score += 30
22
- else:
23
- feedback.append("ν˜Όν•© 계산 풀이가 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
24
-
25
- if "μ•½μˆ˜μ™€ 배수" in extracted_text:
26
- feedback.append("μ•½μˆ˜μ™€ 배수 κ΄€λ ¨ 풀이가 ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
27
- score += 30
28
- else:
29
- feedback.append("μ•½μˆ˜μ™€ 배수 κ΄€λ ¨ 풀이가 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
30
-
31
- if "λΆ„μˆ˜μ˜ λ§μ…ˆκ³Ό λΊ„μ…ˆ" in extracted_text or "μ†Œμˆ˜μ˜ κ³±μ…ˆκ³Ό λ‚˜λˆ—μ…ˆ" in extracted_text:
32
- feedback.append("λΆ„μˆ˜ λ˜λŠ” μ†Œμˆ˜ 연산이 ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
33
- score += 40
34
- else:
35
- feedback.append("λΆ„μˆ˜ λ˜λŠ” μ†Œμˆ˜ 연산이 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
36
-
37
- # κ²°κ³Ό λ°˜ν™˜
38
- return {
39
- "μΆ”μΆœλœ ν…μŠ€νŠΈ": extracted_text,
40
- "점수": score,
41
- "ν”Όλ“œλ°±": "\n".join(feedback)
42
- }
43
 
44
  # Gradio μΈν„°νŽ˜μ΄μŠ€ ꡬ성
45
  with gr.Blocks() as demo:
 
2
  import pytesseract
3
  from PIL import Image
4
 
5
+ # Tesseract OCR 경둜 μ„€μ • (ν•„μš” μ‹œ 경둜 μˆ˜μ •)
6
+ pytesseract.pytesseract.tesseract_cmd = "/usr/bin/tesseract" # Linux/MacOS μ˜ˆμ‹œ
7
+ # Windows μ‚¬μš©μž: "C:/Program Files/Tesseract-OCR/tesseract.exe"둜 μˆ˜μ •
8
+
9
+ # 루브릭 기반 평가 ν•¨μˆ˜
10
  def evaluate_solution(image):
11
  """
12
  손글씨 이미지λ₯Ό λ°›μ•„ OCR둜 ν…μŠ€νŠΈλ₯Ό μΆ”μΆœν•˜κ³ ,
13
  성취기쀀에 따라 평가 및 ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜λŠ” ν•¨μˆ˜.
14
  """
15
+ try:
16
+ # OCR둜 μ΄λ―Έμ§€μ—μ„œ ν…μŠ€νŠΈ μΆ”μΆœ
17
+ extracted_text = pytesseract.image_to_string(image, lang="kor")
18
+
19
+ # 초기 점수 및 ν”Όλ“œλ°± μ„€μ •
20
+ score = 0
21
+ feedback = []
22
+
23
+ # 평가 κΈ°μ€€ μ˜ˆμ‹œ (6ν•™λ…„ μˆ˜ν•™ μ„±μ·¨κΈ°μ€€ 기반)
24
+ if "ν˜Όν•© 계산" in extracted_text:
25
+ feedback.append("ν˜Όν•© 계산 풀이가 ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
26
+ score += 30
27
+ else:
28
+ feedback.append("ν˜Όν•© 계산 풀이가 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
29
+
30
+ if "μ•½μˆ˜μ™€ 배수" in extracted_text:
31
+ feedback.append("μ•½μˆ˜μ™€ 배수 κ΄€λ ¨ 풀이가 ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
32
+ score += 30
33
+ else:
34
+ feedback.append("μ•½μˆ˜μ™€ 배수 κ΄€λ ¨ 풀이가 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
35
+
36
+ if "λΆ„μˆ˜μ˜ λ§μ…ˆκ³Ό λΊ„μ…ˆ" in extracted_text or "μ†Œμˆ˜μ˜ κ³±μ…ˆκ³Ό λ‚˜λˆ—μ…ˆ" in extracted_text:
37
+ feedback.append("λΆ„μˆ˜ λ˜λŠ” μ†Œμˆ˜ 연산이 ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
38
+ score += 40
39
+ else:
40
+ feedback.append("λΆ„μˆ˜ λ˜λŠ” μ†Œμˆ˜ 연산이 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
41
+
42
+ # κ²°κ³Ό λ°˜ν™˜
43
+ return {
44
+ "μΆ”μΆœλœ ν…μŠ€νŠΈ": extracted_text,
45
+ "점수": score,
46
+ "ν”Όλ“œλ°±": "\n".join(feedback)
47
+ }
48
 
49
+ except Exception as e:
50
+ return {
51
+ "μΆ”μΆœλœ ν…μŠ€νŠΈ": "",
52
+ "점수": 0,
53
+ "ν”Όλ“œλ°±": f"였λ₯˜ λ°œμƒ: {str(e)}"
54
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  # Gradio μΈν„°νŽ˜μ΄μŠ€ ꡬ성
57
  with gr.Blocks() as demo: