File size: 3,836 Bytes
f8ccd9c
edd57c3
cab36bf
bc59001
d391eaa
edd57c3
cab36bf
 
 
 
 
de8d8bf
bc59001
fd188ea
 
 
1c7e415
 
 
bc59001
 
 
 
d391eaa
 
 
 
 
 
1c7e415
fd188ea
8da6c61
 
 
5054699
55bc6eb
5054699
 
 
 
15fc5af
770532b
 
 
15fc5af
bc59001
15fc5af
55bc6eb
d7f18f1
55bc6eb
 
 
15f60af
 
 
5054699
 
cab36bf
de8d8bf
cab36bf
f8ccd9c
 
15fc5af
cab36bf
15fc5af
 
59fb81e
 
8da6c61
59fb81e
d9efbf0
 
f8ccd9c
fd188ea
1c7e415
f8ccd9c
8da6c61
cab36bf
fd188ea
 
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
from gradio_client import Client
import gradio as gr
import os
import random
import datetime

def check_password(username, password):
    if password == os.environ["ACCESS"]:
        return True
    else:
        return False


def func(file, number_of_pages, secret):
    if secret != os.environ["ACCESS"]:
        return "Wrong password, please try again"
    output = client.predict(file, number_of_pages)
    if "Error" in output:
        return output   
    # generate a random sequence of numbers
    # s = "".join([str(random.randint(0, 9)) for i in range(10)])
    # with open(f"{s}.tex", "w", encoding="utf-8") as f:
    #     f.write(text)

    date_string = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
    temp_string = "% The following slide is generated with [[SCIDECK]](https://huggingface.co/spaces/Nauryzbay/Scideck)"
    temp_string += "\n% Generated on " + date_string
    temp_string += "\n%" + "-"*100 + "\n"
    output = temp_string + output 
    return output

def upload_file(file):
    return file.name

description = r"""
<h3> SCIDECK is a tool that allows you to convert your PDF files into a presentation deck.</h3>
<br>

❗️❗️❗️[<b>Important</b>] Instructions:<br>
1️⃣ <b>Upload the PDF document</b>: Select the PDF file you want to convert into slides.<br>
2️⃣ <b>Specify the number of pages</b>: Indicate the range of pages you'd like to include in the slide generation. <b>Set it to 0</b> if you want to include all pages. <br>
3️⃣ <b>Enter the password provided in the invite email.</b><br>
4️⃣ <b>Click the Generate button</b>: Initiate the slide generation process by clicking the designated "Generate" button.<br>
5️⃣ <b>Be patient 🙂</b>: Generating the slides could take between 1 minute and 5 minutes.<br>

 
📝 If you get an error message, you can send me email with the PDF file attached to this email address: <b>nkoisheke [at] ethz [dot] ch</b>, and I will generate the slides for you. If there are any other issues or questions, please do not hesitate to contact me 🤗 <br>

🖼️ Some examples of slides generated using <b>SCIDECK</b> are shown below: <br>
1. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift [[Paper]](https://arxiv.org/pdf/1502.03167.pdf) [[Slides]](https://drive.google.com/file/d/1Zt5FFH0nKxut-LyEr9pNAIdtgR_lBtIj/view?usp=sharing) <br>
2. Attention Is All You Need [[Paper]](https://arxiv.org/pdf/1706.03762.pdf) [[Slides]](https://drive.google.com/file/d/1xKgohh_QKV9pD_XjDuXR566h0VJ1S7WI/view?usp=sharing) <br>
3. Denoising Diffusion Probabilistic Models [[Paper]](https://arxiv.org/pdf/2006.11239.pdf) [[Slides]](https://drive.google.com/file/d/1D2ZfoJpHR3kP0JdsYyjxUq-vjVMV-KTO/view?usp=sharing) <br>


ver 0.1
"""

read_key = os.environ.get("HF_TOKEN", None)

if __name__ == "__main__":
    client = Client.duplicate("Nauryzbay/deckify_private", hf_token=read_key)

    temp = "<h1> SCIDECK: Generate slides (LaTeX Beamer) from PDF</h1>"
    with gr.Blocks() as demo:
        gr.Markdown(temp)
        gr.Image("demo.png", width=600, show_download_button=False, show_label=False)
        gr.Markdown(description)
        
        file_output = gr.File()
        upload_button = gr.UploadButton("Click to Upload a PDF File", file_types=["file"], file_count="single", size="sm")
        upload_button.upload(upload_file, upload_button, file_output)

        number_of_pages = gr.Number(label="Number of pages")
        secret = gr.Textbox(label="Password", type="password")
        output = gr.Textbox(label="Output", show_copy_button=True, interactive=False)
        greet_btn = gr.Button("Generate slides")
        greet_btn.click(fn=func, inputs=[upload_button, number_of_pages, secret], outputs=output, api_name="greet")
    
    demo.queue(max_size=5)
    demo.launch()