Spaces:
Running
Running
import gradio as gr | |
import requests | |
import json | |
import base64 | |
from PIL import Image | |
import io | |
# Mathpix์ ์ด๋ฏธ์ง ํ์ผ์ ๋ณด๋ด์ด ์ฌ๋ฌ ํฌ๋งท์ LaTeX ๋ฌธ์์ด์ ์ถ์ถํ๋ ํจ์ | |
def get_latex_from_image_all_formats(image): | |
# PIL ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ดํธ๋ก ๋ณํ | |
buffered = io.BytesIO() | |
image.save(buffered, format="JPEG") | |
image_base64 = base64.b64encode(buffered.getvalue()).decode('utf-8') | |
# Mathpix API ์์ฒญ ํค๋ | |
headers = { | |
"app_id": "arxivgpt_2c0986", | |
"app_key": "b5c14c78ea645a6d673195e6360a1cc33ef2bab7a79b90f7cebf6465177171f5", | |
"Content-Type": "application/json" | |
} | |
# Mathpix API ์์ฒญ ๋ฐ๋ | |
data = { | |
"src": f"data:image/jpeg;base64,{image_base64}", | |
"formats": ["text", "latex_styled", "latex_normal", "latex_list", "latex_simplified", "asciimath", "mathml"] | |
} | |
# Mathpix API ์์ฒญ ๋ณด๋ด๊ธฐ | |
response = requests.post("https://api.mathpix.com/v3/latex", headers=headers, json=data) | |
response.raise_for_status() # ์์ฒญ ์คํจ ์ ์์ธ ๋ฐ์ | |
# ์๋ต์์ ๊ฐ ํฌ๋งท์ LaTeX ์ถ์ถ | |
result = response.json() | |
formats_results = {f: result.get(f, f"{f} ์ถ์ถ ์คํจ") for f in data["formats"]} | |
return formats_results | |
# Gradio ์ฑ ์ ์ | |
def build_gradio_app(): | |
with gr.Blocks() as app: | |
with gr.Row(): | |
image_input = gr.Image(type="pil", label="์ด๋ฏธ์ง ์ ๋ก๋") | |
submit_button = gr.Button("๋ณํํ๊ธฐ") | |
outputs = [gr.Textbox(label=f"{f} ๊ฒฐ๊ณผ") for f in ["text", "latex_styled", "latex_normal", "latex_list", "latex_simplified", "asciimath", "mathml"]] | |
def process_and_output(image): | |
results = get_latex_from_image_all_formats(image) | |
return [results.get(f) for f in ["text", "latex_styled", "latex_normal", "latex_list", "latex_simplified", "asciimath", "mathml"]] | |
submit_button.click(fn=process_and_output, inputs=image_input, outputs=outputs) | |
return app | |
# Gradio ์ฑ ์คํ | |
if __name__ == "__main__": | |
app = build_gradio_app() | |
app.launch() | |