wanda222 commited on
Commit
226a773
ยท
verified ยท
1 Parent(s): e611d39

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -11
app.py CHANGED
@@ -1,15 +1,10 @@
1
  # ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
2
  import gradio as gr # Gradio: ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
3
  import requests # API ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
4
- import os # ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—์„œ API ํ‚ค๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
5
  from openai import OpenAI # Upstage Solar LLM ์‚ฌ์šฉ์„ ์œ„ํ•œ OpenAI ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ
6
  from io import BytesIO # ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ
7
 
8
- # ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—์„œ Upstage API ํ‚ค ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
9
- UPSTAGE_API_KEY = os.getenv("UPSTAGE_API_KEY")
10
-
11
-
12
- def extract_text_from_image(image):
13
  """
14
  ์ด๋ฏธ์ง€์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ (Upstage Document OCR API ์‚ฌ์šฉ)
15
  """
@@ -17,7 +12,7 @@ def extract_text_from_image(image):
17
  url = "https://api.upstage.ai/v1/document-digitization"
18
 
19
  # API Key ์ธ์ฆ์„ ์œ„ํ•œ ํ—ค๋” ์„ค์ •
20
- headers = {'Authorization': f'Bearer {UPSTAGE_API_KEY}'}
21
 
22
  # ์ด๋ฏธ์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์ €์žฅ (JPEG ํ˜•์‹)
23
  buffer = BytesIO()
@@ -41,13 +36,13 @@ def extract_text_from_image(image):
41
 
42
 
43
 
44
- def translate_text_with_solar(english_text):
45
  """
46
  ์˜์–ด ํ…์ŠคํŠธ๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ํ•จ์ˆ˜ (Upstage Solar Pro API ์‚ฌ์šฉ)
47
  """
48
  # Solar LLM ํ˜ธ์ถœ์„ ์œ„ํ•œ OpenAI ํด๋ผ์ด์–ธํŠธ ์ดˆ๊ธฐํ™”
49
  client = OpenAI(
50
- api_key=UPSTAGE_API_KEY,
51
  base_url="https://api.upstage.ai/v1"
52
  )
53
 
@@ -82,6 +77,9 @@ with gr.Blocks() as demo:
82
  gr.Markdown("ํŽธ์ง€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด Upstage Docuemnt OCR์ด ์˜์–ด ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ ,\n๐ŸŒ ๋ฒˆ์—ญํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Solar LLM์„ ํ˜ธ์ถœํ•˜์—ฌ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค!")
83
  gr.Markdown("์˜ˆ์ œ ์ด๋ฏธ์ง€๋Š” GenAI๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์ด๋ฉฐ, Files ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ™•์ธ ๋ฐ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.")
84
 
 
 
 
85
  # ๋ ˆ์ด์•„์›ƒ: ์ขŒ์šฐ 2๋‹จ ๊ตฌ์„ฑ
86
  with gr.Row():
87
  # ์™ผ์ชฝ ์—ด: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
@@ -95,10 +93,10 @@ with gr.Blocks() as demo:
95
  korean_box = gr.Textbox(label="๐Ÿ‡ฐ๐Ÿ‡ท ๋ฒˆ์—ญ๋œ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ", lines=10)
96
 
97
  # Step 1: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์‹œ OCR ํ•จ์ˆ˜ ์‹คํ–‰ โ†’ ์ถ”์ถœ๋œ ํ…์ŠคํŠธ๋ฅผ ์˜์–ด ํ…์ŠคํŠธ ๋ฐ•์Šค์— ํ‘œ์‹œ
98
- image_input.change(fn=extract_text_from_image, inputs=image_input, outputs=english_box)
99
 
100
  # Step 2: ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ฒˆ์—ญ ํ•จ์ˆ˜ ์‹คํ–‰ โ†’ ๋ฒˆ์—ญ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ ๋ฐ•์Šค์— ํ‘œ์‹œ
101
- translate_button.click(fn=translate_text_with_solar, inputs=english_box, outputs=korean_box)
102
 
103
  # ์•ฑ ์‹คํ–‰
104
  if __name__ == "__main__":
 
1
  # ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
2
  import gradio as gr # Gradio: ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
3
  import requests # API ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
 
4
  from openai import OpenAI # Upstage Solar LLM ์‚ฌ์šฉ์„ ์œ„ํ•œ OpenAI ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ
5
  from io import BytesIO # ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ
6
 
7
+ def extract_text_from_image(image, api_key):
 
 
 
 
8
  """
9
  ์ด๋ฏธ์ง€์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ (Upstage Document OCR API ์‚ฌ์šฉ)
10
  """
 
12
  url = "https://api.upstage.ai/v1/document-digitization"
13
 
14
  # API Key ์ธ์ฆ์„ ์œ„ํ•œ ํ—ค๋” ์„ค์ •
15
+ headers = {'Authorization': f'Bearer {api_key}'}
16
 
17
  # ์ด๋ฏธ์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์ €์žฅ (JPEG ํ˜•์‹)
18
  buffer = BytesIO()
 
36
 
37
 
38
 
39
+ def translate_text_with_solar(english_text, api_key):
40
  """
41
  ์˜์–ด ํ…์ŠคํŠธ๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ํ•จ์ˆ˜ (Upstage Solar Pro API ์‚ฌ์šฉ)
42
  """
43
  # Solar LLM ํ˜ธ์ถœ์„ ์œ„ํ•œ OpenAI ํด๋ผ์ด์–ธํŠธ ์ดˆ๊ธฐํ™”
44
  client = OpenAI(
45
+ api_key=api_key,
46
  base_url="https://api.upstage.ai/v1"
47
  )
48
 
 
77
  gr.Markdown("ํŽธ์ง€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด Upstage Docuemnt OCR์ด ์˜์–ด ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ ,\n๐ŸŒ ๋ฒˆ์—ญํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Solar LLM์„ ํ˜ธ์ถœํ•˜์—ฌ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค!")
78
  gr.Markdown("์˜ˆ์ œ ์ด๋ฏธ์ง€๋Š” GenAI๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์ด๋ฉฐ, Files ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ™•์ธ ๋ฐ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.")
79
 
80
+ # โœ… API Key ์ž…๋ ฅ์ฐฝ ์ถ”๊ฐ€
81
+ api_key_input = gr.Textbox(label="๐Ÿ”‘ Upstage API Key", type="password", placeholder="Paste your API key here")
82
+
83
  # ๋ ˆ์ด์•„์›ƒ: ์ขŒ์šฐ 2๋‹จ ๊ตฌ์„ฑ
84
  with gr.Row():
85
  # ์™ผ์ชฝ ์—ด: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
 
93
  korean_box = gr.Textbox(label="๐Ÿ‡ฐ๐Ÿ‡ท ๋ฒˆ์—ญ๋œ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ", lines=10)
94
 
95
  # Step 1: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์‹œ OCR ํ•จ์ˆ˜ ์‹คํ–‰ โ†’ ์ถ”์ถœ๋œ ํ…์ŠคํŠธ๋ฅผ ์˜์–ด ํ…์ŠคํŠธ ๋ฐ•์Šค์— ํ‘œ์‹œ
96
+ image_input.change(fn=extract_text_from_image, inputs=[image_input, api_key_input], outputs=english_box)
97
 
98
  # Step 2: ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ฒˆ์—ญ ํ•จ์ˆ˜ ์‹คํ–‰ โ†’ ๋ฒˆ์—ญ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ ๋ฐ•์Šค์— ํ‘œ์‹œ
99
+ translate_button.click(fn=translate_text_with_solar, inputs=[english_box, api_key_input], outputs=korean_box)
100
 
101
  # ์•ฑ ์‹คํ–‰
102
  if __name__ == "__main__":