File size: 2,107 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
e04535c
 
 
e54f391
e04535c
6b7accd
 
 
e5c94e2
015da21
e04535c
aa9b195
 
86ad50a
4069bf3
25931ce
b18c11c
 
 
6b7accd
e04535c
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
72
73
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):
    demo = gr.Blocks(css=css)
    
    with demo:
        gr.Markdown("# ArXivGPT OCR LaTeX")
        gr.Markdown("This comprehensive solution...")
        
        image_input = gr.Image(type="pil", label="이미지 업로드")
        submit_button = gr.Button("변환하기")

        
        output_text = gr.Textbox(label="결과")
        examples = gr.Examples(examples=[["ko.png"], ["en.png"], ["hand.jpg"]], inputs=image_input, fn=process_and_output, outputs=output_text)
        
        latex_iframe = gr.HTML(value='<iframe src="https://www.mathjax.org/#demo" style="width: 100%; height: 700px; border: 2px solid #007bff; border-radius: 8px;"></iframe>', elem_id="latex_iframe")
        
        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

        submit_button.click(fn=process_and_output, inputs=image_input, outputs=output_text)
        

    return demo

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