File size: 1,519 Bytes
b2671d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from transformers import pipeline
import PyPDF2

# لود مدل یکبار هنگام شروع اپ
summarizer = pipeline(
    "summarization",
    model="m3hrdadfi/mt5-small-parsinlu-summarization-fa"
)

def summarize_text(text):
    if not text.strip():
        return "متنی وارد نشده است."
    result = summarizer(text, max_length=150, min_length=30)
    return result[0]["summary_text"]

def summarize_pdf(file):
    try:
        reader = PyPDF2.PdfReader(file.name)
        text = ""
        for page in reader.pages:
            text += page.extract_text() + "\n"
        return summarize_text(text)
    except Exception as e:
        return f"خطا در خواندن PDF: {e}"

with gr.Blocks() as demo:
    gr.Markdown("# 📝 SummarizeX — خلاصه‌ساز متن و PDF")

    with gr.Tab("خلاصه متن"):
        input_text = gr.Textbox(lines=12, placeholder="متن را اینجا وارد کنید...")
        output_summary = gr.Textbox(lines=8, label="خلاصه متن")
        btn1 = gr.Button("خلاصه کن")
        btn1.click(summarize_text, inputs=input_text, outputs=output_summary)

    with gr.Tab("خلاصه PDF"):
        pdf_input = gr.File(type="file", file_types=[".pdf"])
        pdf_output = gr.Textbox(lines=8, label="خلاصه PDF")
        btn2 = gr.Button("خلاصه PDF")
        btn2.click(summarize_pdf, inputs=pdf_input, outputs=pdf_output)

if __name__ == "__main__":
    demo.launch(server_name="0.0.0.0", server_port=7860)