File size: 2,082 Bytes
112423f
5d72210
b8f450e
9a35c66
25931ce
 
504e313
9a35c66
18e6128
b18c11c
 
 
 
 
015da21
 
 
 
b18c11c
3bd25bb
25931ce
 
 
282ba81
f5d8dcc
015da21
 
b8f450e
f5d8dcc
5d72210
b18c11c
b8f450e
112423f
b18c11c
b8f450e
 
c8dcc39
b18c11c
3bd25bb
b8f450e
b18c11c
 
6b7accd
32eac0f
b18c11c
6b7accd
 
 
 
 
 
015da21
b18c11c
4069bf3
25931ce
b18c11c
 
 
6b7accd
 
 
25931ce
 
6b7accd
 
25931ce
58a27cd
112423f
 
 
6b7accd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import gradio as gr
import requests
import json
import base64
from PIL import Image
import io
import os

css = """
footer { 
    visibility: hidden; 
}
"""

app_id = os.getenv("app_id")
app_key = os.getenv("app_key")
app_url = os.getenv("app_url")


def get_latex_from_image_all_formats(image):
    buffered = io.BytesIO()
    image.save(buffered, format="JPEG")
    image_base64 = base64.b64encode(buffered.getvalue()).decode('utf-8')

    headers = {
        "app_id": app_id,
        "app_key": app_key,
        "Content-Type": "application/json"
    }

    # ํ•ด๋‹น ๋ถ€๋ถ„์„ ["text"]๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ formats๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์„ค์ •
    data = {
        "src": f"data:image/jpeg;base64,{image_base64}",
        "formats": ["text"]
    }

    response = requests.post(app_url, headers=headers, json=data)
    response.raise_for_status()

    result = response.json()
    # formats_results ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”
    return result
  

def build_gradio_app(css=css):
    with gr.Blocks(css=css) as demo:
        gr.Markdown("# ArXivGPT LaTeX Tool")
        gr.Markdown("This comprehensive solution encompasses an automated workflow...")
        
        image_input = gr.Image(type="pil", label="์ด๋ฏธ์ง€ ์—…๋กœ๋“œ")
        submit_button = gr.Button("๋ณ€ํ™˜ํ•˜๊ธฐ")
        
        outputs = gr.Textbox(label="๊ฒฐ๊ณผ")
        
        def process_and_output(image):
            latex_result = get_latex_from_image_all_formats(image)
            text_result = latex_result.get("text", "No result")
            return text_result

        # Examples ์ •์˜๋ฅผ process_and_output ํ•จ์ˆ˜ ์ •์˜ ํ›„๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.
        examples = gr.Examples(examples=[["ko.png"], ["en.png"], ["hand.jpg"]], inputs=image_input, outputs=outputs, fn=process_and_output)
        
        submit_button.click(fn=process_and_output, inputs=image_input, outputs=outputs)
        
        demo.add(examples) # gr.Blocks์— examples ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    return demo

if __name__ == "__main__":
    app = build_gradio_app()
    app.launch()