File size: 2,947 Bytes
b1a3414
 
 
078e51c
 
 
b1a3414
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
078e51c
b1a3414
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
95
96
97
98
99
import gradio as gr
from PIL import Image

HEAD_HTML = """
<link href='https://fonts.googleapis.com/css?family=PT Mono' rel='stylesheet'>
"""
DEFAULT_CASE = "case_2"
CASE_LIST = ["case_0", "case_1", "case_2"]
data = {}

for case_name in CASE_LIST:
    with open(f"resources/{case_name}/prompt_0.txt", "r") as f:
        data[case_name] = {
            "prompt_0": f.read(),
        }
    with open(f"resources/{case_name}/output_0.txt", "r") as f:
        data[case_name]["output_0"] = f.read()
        data[case_name]["output_1"] = f.read()

    with open(f"resources/{case_name}/prompt_1.txt", "r") as f:
        data[case_name]["prompt_1"] = f.read()
    with open(f"resources/{case_name}/output_1.txt", "r") as f:
        data[case_name]["output_1"] = f.read()
        
    demo_image = Image.open(
        f"resources/{case_name}/pdf_page.png"
    )
    data[case_name]["image"] = demo_image

with gr.Blocks(
    theme=gr.themes.Ocean(
        font_mono="PT Mono",
    ),
    head=HEAD_HTML,
) as demo:
    gr.Markdown("# 2D Layout-Preserving Text Serialization Demo")
    with gr.Row():
        gr.Markdown("## Input Image")
        case_name = gr.Dropdown(
            choices=CASE_LIST,
            label="Select a case",
            value=DEFAULT_CASE,
        )
        
    demo_image = gr.Image(
        data[DEFAULT_CASE]["image"],
        show_label=False,
        container=False,
        height=700,
        width=600,
    )
    gr.Markdown("## Sample Prompt & Response from LLM")
    with gr.Tabs():
        with gr.TabItem("Prompt"):
            with gr.Row():
                prompt_0 = gr.Code(
                    data[DEFAULT_CASE]["prompt_0"], 
                    language="markdown", 
                    show_line_numbers=False, 
                    interactive=False,
                    label="2D Layout-Preserving Text"
                )
                prompt_1 = gr.Code(
                    data[DEFAULT_CASE]["prompt_1"],
                    language="markdown", 
                    show_line_numbers=False, 
                    interactive=False,
                    label="1D Text"
                )
                
        with gr.TabItem("Response"):
            with gr.Row():
                output_0 = gr.Markdown(
                    data[DEFAULT_CASE]["output_0"], 
                    container=False
                )
                output_1 = gr.Markdown(
                    data[DEFAULT_CASE]["output_1"], 
                    container=False
                )
    
    case_name.change(
        lambda case: [
            data[case]["image"],
            data[case]["prompt_0"],
            data[case]["prompt_1"],
            data[case]["output_0"],
            data[case]["output_1"],
        ],
        inputs=case_name,
        outputs=[
            demo_image,
            prompt_0,
            prompt_1,
            output_0,
            output_1,
        ],
    )
    demo.queue().launch()