Spaces:
Sleeping
Sleeping
import gradio as gr | |
def extract_text_from_pdf(file): | |
return None | |
def generate_multiple_choice_question(text): | |
# Placeholder function to simulate question generation | |
question = "What is the capital of France?" | |
option_a = "Berlin" | |
option_b = "Paris" | |
correct_option = "b" | |
explanation = "Paris is the capital and most populous city of France." | |
return { | |
"question": question, | |
"option_a": option_a, | |
"option_b": option_b, | |
"correct_option": correct_option, | |
"explanation": explanation | |
} | |
def check_answer(selected_option, correct_option, explanation): | |
success = selected_option == correct_option | |
result_text = f"Correct! {explanation}" if success else f"Incorrect. {explanation}" | |
return result_text, success | |
def main(pdf_file): | |
text = extract_text_from_pdf(pdf_file) | |
mcq = generate_multiple_choice_question(text) | |
question = mcq["question"] | |
option_a = mcq["option_a"] | |
option_b = mcq["option_b"] | |
correct_option = mcq["correct_option"] | |
explanation = mcq["explanation"] | |
return question, option_a, option_b, correct_option, explanation | |
with gr.Blocks() as demo: | |
pdf_file = gr.File(label="Upload PDF", file_types=["pdf"]) | |
question = gr.Textbox(label="Generated Question", interactive=False) | |
option_a = gr.Textbox(label="Option A", interactive=False) | |
option_b = gr.Textbox(label="Option B", interactive=False) | |
selected_option = gr.Radio(choices=["a", "b"], label="Select your answer") | |
result = gr.Textbox(label="Result", interactive=False) | |
def process(pdf_file): | |
q, a, b, correct, expl = main(pdf_file) | |
return q, a, b, correct, expl | |
def evaluate(selected_option, correct_option, explanation): | |
result_text, success = check_answer(selected_option, correct_option, explanation) | |
return result_text | |
process_button = gr.Button("Generate Question") | |
evaluate_button = gr.Button("Submit Answer") | |
process_button.click(fn=process, inputs=[pdf_file], outputs=[question, option_a, option_b, selected_option, result]) | |
evaluate_button.click(fn=evaluate, inputs=[selected_option, selected_option, result], outputs=result) | |
demo.launch() | |