AIOCR_Upload / app.py
Asem75's picture
Update app.py
cec0eb7 verified
Raw
History Blame Contribute Delete
3.39 kB
# ============================================================
# 5) بناء الواجهة الرادارية الرسمية المحصنة (تم تحويلها لدالة استدعاء)
# ============================================================
def build_upload_ui():
# ننشئ لير عمودي يحتوي على واجهتك لكي نتحكم بظهوره واختفائه من البوابة الرئيسية
with gr.Column() as upload_layout:
gr.Markdown("<h1 style='text-align:center;'>📤 بوابة الرفع ودورة حياة الملفات الموثقة</h1>")
# تهيئة حالة الجلسة الأمنية داخلياً
user_session = gr.State({"authenticated": False})
panel_visible_state = gr.State(False)
welcome_box = gr.HTML("<p role='status'>🟢 تم نقل الجلسة السيادية الموحدة بنجاح. الواجهة نشطة وجاهزة لاستلام العتاد.</p>")
with gr.Row():
rank_icon_btn = gr.Button("🥈 FREE", elem_id="rank_icon_btn", scale=0, min_width=110, visible=True)
subscription_panel = gr.HTML(visible=False)
with gr.Group() as upload_area:
uploader = gr.File(label="اختر ملفاتك", file_count="multiple")
upload_btn = gr.Button("رفع الملفات", variant="primary")
status_box = gr.HTML("<div>بانتظار رفع الملفات...</div>")
with gr.Group() as options_area:
gr.Markdown("### ⚙️ خيارات معالجة العتاد المتقدمة")
with gr.Row():
enable_table = gr.Checkbox(label="📊 كشف الجداول", value=False)
enable_handwriting = gr.Checkbox(label="🖐️ خط يدوي", value=False)
enable_heavy_prep = gr.Checkbox(label="🔧 معالجة ثقيلة", value=False)
enable_high_dpi = gr.Checkbox(label="📐 دقة عالية (300 DPI)", value=False)
enable_fast = gr.Checkbox(label="⚡ الوضع السريع (EasyOCR)", value=False)
enable_tashkeel = gr.Checkbox(label="🔤 تشكيل النص", value=False)
gr.Markdown("### 📜 حالة التجميع والمعالجة الفورية")
system_status = gr.HTML("<div role='status' aria-live='polite'>بانتظار تحديث الحالة من system/status.json...</div>")
# ربط الأحداث الداخلية للواجهة كما هي بكودك الأصلي
rank_icon_btn.click(
fn=toggle_subscription_panel,
inputs=[user_session, panel_visible_state],
outputs=[subscription_panel, panel_visible_state]
)
upload_btn.click(
fn=handle_upload,
inputs=[uploader, user_session, enable_table, enable_handwriting, enable_heavy_prep, enable_high_dpi, enable_fast, enable_tashkeel],
outputs=status_box
).then(read_status_json, None, system_status)
status_timer = gr.Timer(3.0)
status_timer.tick(read_status_json, None, system_status)
# نرجع العناصر المهمة للبوابة الرئيسية لكي نقوم بحقن بيانات المستخدم فيها وتحديثها ديناميكياً
return upload_layout, user_session, welcome_box, rank_icon_btn