import gradio as gr import tempfile from ocr_engine import extract_text_from_image from pdf_reader import extract_text_chunks_from_pdf from summarizer import summarize_text def process_input(pdf, image, manual_text, mode, model_name): if pdf is not None: text_chunks = extract_text_chunks_from_pdf(pdf) if any("[ERROR]" in chunk for chunk in text_chunks): return text_chunks[0], "", None elif image is not None: text = extract_text_from_image(image) if "[ERROR]" in text: return text, "", None text_chunks = [text] elif manual_text.strip() != "": text_chunks = [manual_text] else: return "Lütfen bir giriş türü seçin.", "", None all_text = "\n\n".join(text_chunks) summaries = [] for chunk in text_chunks: summary = summarize_text(chunk, mode, model_name) summaries.append(summary) full_summary = "\n\n".join(summaries) temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".txt", mode='w', encoding='utf-8') temp_file.write(full_summary) temp_file.close() return all_text, full_summary, temp_file.name with gr.Blocks() as demo: gr.Markdown("## VizSum") with gr.Row(): pdf_input = gr.File(label="PDF Yükle", file_types=[".pdf"]) image_input = gr.Image(type="filepath", label="Görsel Yükle") manual_input = gr.Textbox(lines=5, label="Metni Manuel Gir") mode_selector = gr.Dropdown( choices=[ "Teknik Özet", "Sade Anlatım", "Eleştir ve Değerlendir", "Başlık Çıkar", "Not Formatı", "Karma Özet" # 🔥 Yeni mod ], label="Özetleme Modu", value="Teknik Özet" ) model_selector = gr.Dropdown( choices=[ "anthropic/claude-3-haiku", "openai/gpt-3.5-turbo", "mistralai/mistral-7b-instruct" ], label="Dil Modeli", value="anthropic/claude-3-haiku" ) with gr.Row(): submit_btn = gr.Button("Özetle") with gr.Row(): text_output = gr.Textbox(label="Giriş Metni") copy_status = gr.Textbox(visible=False) summary_output = gr.Textbox(label="AI Özeti", lines=10, show_copy_button=True) summary_file = gr.File(label="Özeti İndir", interactive=True) submit_btn.click( fn=process_input, inputs=[pdf_input, image_input, manual_input, mode_selector, model_selector], outputs=[text_output, summary_output, summary_file] ) if __name__ == "__main__": demo.launch(share=True)