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)