import PyPDF2 import io import gradio as gr import langdetect from langdetect import detect import re # تابع برای تشخیص زبان و استخراج متن def extract_text_from_pdf(pdf_file, detect_language=True): try: # خواندن فایل PDF pdf_reader = PyPDF2.PdfReader(io.BytesIO(pdf_file)) text = "" # استخراج متن از تمام صفحات for page_num in range(len(pdf_reader.pages)): page = pdf_reader.pages[page_num] page_text = page.extract_text() if page_text: text += page_text + "\n\n" # تشخیص زبان متن detected_lang = "نامشخص" if text and detect_language: # گرفتن یک نمونه از متن برای تشخیص زبان sample_text = text[:min(5000, len(text))] sample_text = re.sub(r'\s+', ' ', sample_text).strip() try: detected_lang = detect(sample_text) if detected_lang == 'fa': detected_lang = "فارسی" elif detected_lang == 'en': detected_lang = "انگلیسی" except langdetect.lang_detect_exception.LangDetectException: detected_lang = "تشخیص داده نشد" # برگرداندن نتیجه result = f"**زبان تشخیص داده شده: {detected_lang}**\n\n" result += text if text else "متنی استخراج نشد." return result except Exception as e: return f"خطا در پردازش فایل PDF: {str(e)}" # ساخت رابط کاربری با Gradio def create_ui(): with gr.Blocks(title="استخراج متن از PDF با تشخیص زبان") as app: gr.Markdown("## استخراج متن از فایل PDF با تشخیص خودکار زبان فارسی یا انگلیسی") with gr.Row(): pdf_input = gr.File(label="فایل PDF را آپلود کنید", file_types=[".pdf"]) with gr.Row(): extract_btn = gr.Button("استخراج متن") with gr.Row(): output_text = gr.Textbox(label="متن استخراج شده", lines=20, interactive=False) extract_btn.click( fn=extract_text_from_pdf, inputs=[pdf_input], outputs=output_text ) return app # اجرای برنامه if __name__ == "__main__": app = create_ui() app.launch()