File size: 2,636 Bytes
112423f
5d72210
b8f450e
9a35c66
25931ce
 
504e313
9a35c66
af0b112
18e6128
b18c11c
 
 
 
af0b112
 
 
 
 
015da21
af0b112
 
 
 
 
 
 
 
 
 
b18c11c
af0b112
 
 
 
282ba81
af0b112
 
 
 
 
5d72210
af0b112
 
 
 
 
 
 
b8f450e
af0b112
 
 
3bd25bb
af0b112
 
 
 
32eac0f
b18c11c
a15d0f2
af0b112
 
6b7accd
af0b112
e5c94e2
25931ce
b18c11c
 
 
6b7accd
af0b112
 
a15d0f2
 
 
af0b112
 
 
 
 
 
 
25931ce
af0b112
 
 
 
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import gradio as gr
import requests
import json
import base64
from PIL import Image
import io
import os

# Enhanced 3D style CSS
css = """
footer { 
    visibility: hidden; 
}

.gradio-container {
    background: linear-gradient(145deg, #f0f0f0, #ffffff);
    box-shadow: 20px 20px 60px #bebebe, -20px -20px 60px #ffffff;
    border-radius: 15px;
}

.gr-button {
    background: linear-gradient(145deg, #007bff, #0056b3);
    border: none;
    padding: 12px 24px;
    border-radius: 10px;
    color: white;
    font-weight: bold;
    box-shadow: 5px 5px 15px rgba(0,0,0,0.2);
    transition: transform 0.2s;
}

.gr-button:hover {
    transform: translateY(-2px);
    box-shadow: 7px 7px 20px rgba(0,0,0,0.25);
}

.gr-input, .gr-box {
    border-radius: 10px;
    box-shadow: inset 5px 5px 10px #d1d1d1, inset -5px -5px 10px #ffffff;
    border: 2px solid #e0e0e0;
}

.gr-form {
    background: #ffffff;
    padding: 20px;
    border-radius: 15px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
"""

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

# Rest of your functions remain the same
def get_latex_from_image_all_formats(image):
    # Your existing function code...
    pass

def build_gradio_app(css=css):
    with gr.Blocks(css=css) as demo:
        gr.Markdown("# ArXivGPT OCR LaTeX Converter")
        gr.Markdown("Upload an image, click 'Convert' button, and copy the output. Paste it in the empty box below and click 'Render HTML'.")
        
        image_input = gr.Image(type="pil", label="Upload Image")

        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 = gr.Button("Convert", elem_classes="custom-button")
        outputs = gr.Textbox(label="Output")

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

        examples = gr.Examples(
            examples=[["ko.png"], ["en.png"], ["hand.jpg"]], 
            inputs=[image_input], 
            fn=process_and_output, 
            outputs=[outputs],
            label="Example Images"
        )
        
        latex_iframe = gr.HTML(
            value='<iframe src="https://mathjax.github.io/MathJax-demos-web/input-tex_mml2chtml.html" style="width: 100%; height: 700px; border: 2px solid #007bff; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.15);"></iframe>',
            elem_id="latex_iframe"
        )

    return demo

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