srinivas-mushroom's picture
Update app.py
63459a6
raw
history blame
1.49 kB
import gradio as gr
import requests
import io
import json
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
# Download and load pre-trained model and tokenizer
model_name = "distilbert-base-cased-distilled-squad"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
def answer_question(pdf_file, question):
# Convert PDF to text
pdf_data = pdf_file.read()
pdf_stream = io.BytesIO(pdf_data)
response = requests.post(
'https://pdftotext.com/ExtractText',
files={'pdffile': pdf_stream},
data={'form': 'pdftotext'}
)
text = response.text.strip()
# Tokenize question and text
input_ids = tokenizer.encode(question, text)
# Perform question answering
outputs = model(torch.tensor([input_ids]), return_dict=True)
answer_start = outputs.start_logits.argmax().item()
answer_end = outputs.end_logits.argmax().item()
answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(input_ids[answer_start:answer_end+1]))
return answer
inputs = [
gr.inputs.File(label="PDF document"),
gr.inputs.Textbox(label="Question")
]
outputs = gr.outputs.Textbox(label="Answer")
gr.Interface(fn=answer_question, inputs=inputs, outputs=outputs, title="PDF Question Answering Tool",
description="Upload a PDF document and ask a question. The app will use a pre-trained model to find the answer.").launch()