|
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) |