File size: 1,454 Bytes
a665382
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66ebefb
 
73267ac
66ebefb
27124d8
66ebefb
 
 
27124d8
 
 
8b95b29
27124d8
 
8b95b29
27124d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66ebefb
a665382
 
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
from apis.layoutlm import LayoutLM
import pandas as pd
import gradio as gr
import os

layoutlm = None

def auth(username, password):
    u = os.environ.get('USERNAME')
    p = os.environ.get('PASSWORD')
    return (username == u and password == p)

def inference(img) -> pd.DataFrame:
    return layoutlm.inference(img)

def ask(img, question) -> str:
    return layoutlm.answer_the_question(img, question, is_debug=True)

if __name__ == '__main__':

    try:
        layoutlm = LayoutLM()
        layoutlm.set_model(layoutlm.default_model)

        with gr.Blocks() as demo:

            with gr.Row():
                inp_img = gr.Image(type='pil')
            
                with gr.Column():
                    out = gr.Dataframe(
                        headers=['Data', 'Value'],
                        datatype=['str', 'str'],
                        row_count=8,
                        col_count=(2, 'fixed'), 
                        interactive=False
                    )

                    txt_custom_question = gr.Textbox(label='Your question')
                    btn_ask = gr.Button('Ask me')
                    txt_out_answer = gr.Textbox(label='Answer', interactive=False)

                    # event
                    inp_img.change(inference, inp_img, out)
                    btn_ask.click(ask, [inp_img, txt_custom_question], txt_out_answer)

        demo.launch(auth=auth)
    except Exception as e:
        print(str(e))