File size: 1,477 Bytes
f1cc4d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# -*- coding: utf-8 -*-
"""
Created on Mon May  8 00:32:30 2023

@author: ahmet
"""
import pdfplumber
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM


def respond(pdf_file):
    pdf_file_name = pdf_file.name
    all_text = ''
    with pdfplumber.open(pdf_file_name) as pdf:
        total_pages = len(pdf.pages)
        for idx, pdf_page in enumerate(pdf.pages):
           single_page_text = pdf_page.extract_text()
           all_text = all_text + '\n' + single_page_text
           print(idx/total_pages)
           if idx/total_pages >0.2:
               break
    tokenizer=AutoTokenizer.from_pretrained('Einmalumdiewelt/T5-Base_GNAD')
    model=AutoModelForSeq2SeqLM.from_pretrained('Einmalumdiewelt/T5-Base_GNAD', return_dict=True)
    inputs=tokenizer.encode("sumarize: " +all_text, return_tensors='pt', max_length=512, truncation=True)
    output = model.generate(inputs, min_length=70, max_length=80)
    summary=tokenizer.decode(output[0])
    return summary


with gr.Blocks() as demo:
    title = """<p><h1 align="center" style="font-size: 36px;">Talk with your document</h1></p>"""
    gr.HTML(title)
    with gr.Row():
        with gr.Column():
            file_input = gr.File(label="PDF File", type="file")
            summarize = gr.Button("Summarize")
        text_output = gr.Textbox(label="Summarized text")
        
    summarize.click(fn=respond, inputs=file_input, outputs=text_output)

        
demo.launch(debug=True)