suprimedev commited on
Commit
bea0406
·
verified ·
1 Parent(s): 95e8e07

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -0
app.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from pypdf import PdfReader
3
+ import os
4
+
5
+ def extract_text_from_pdf(pdf_file):
6
+ """
7
+ این تابع یک فایل PDF را دریافت کرده و متن آن را استخراج می کند.
8
+ با توجه به پشتیبانی pypdf از یونیکد، فارسی و عربی نیز به خوبی پشتیبانی می شوند.
9
+
10
+ Args:
11
+ pdf_file (dict): شیء فایل آپلود شده توسط Gradio.
12
+
13
+ Returns:
14
+ tuple: (متن استخراج شده, فایل متنی قابل دانلود)
15
+ """
16
+ if pdf_file is None:
17
+ return "لطفاً یک فایل PDF آپلود کنید.", None
18
+
19
+ try:
20
+ # pypdf نیاز به مسیر فایل دارد، Gradio فایل را به صورت موقت ذخیره می کند
21
+ pdf_path = pdf_file.name
22
+ reader = PdfReader(pdf_path)
23
+ text = ""
24
+ for page in reader.pages:
25
+ text += page.extract_text() or "" # یا "" برای مدیریت صفحات خالی
26
+
27
+ # ایجاد فایل متنی برای دانلود
28
+ txt_filename = "extracted_text.txt"
29
+ with open(txt_filename, "w", encoding="utf-8") as f:
30
+ f.write(text)
31
+
32
+ return text, txt_filename
33
+ except Exception as e:
34
+ return f"خطا در پردازش فایل PDF: {e}", None
35
+
36
+ # تعریف رابط کاربری Gradio
37
+ interface = gr.Interface(
38
+ fn=extract_text_from_pdf,
39
+ inputs=gr.File(label="فایل PDF را اینجا آپلود کنید (فارسی/عربی/انگلیسی)"),
40
+ outputs=[
41
+ gr.Textbox(label="متن استخراج شده", lines=15),
42
+ gr.File(label="دانلود متن به صورت فایل TXT", file_count="single", interactive=False)
43
+ ],
44
+ title="استخراج متن فارسی/عربی از PDF",
45
+ description="یک فایل PDF را برای استخراج متن آن آپلود کنید. سپس متن استخراج شده نمایش داده شده و قابل دانلود خواهد بود.",
46
+ allow_flagging="never" # غیرفعال کردن دکمه flagging
47
+ )
48
+
49
+ # برای اجرا در سرور
50
+ if __name__ == "__main__":
51
+ # اینجا هیچ نمونه ای تعریف نشده است، فقط برنامه اجرا می شود
52
+ interface.launch()