# دليل المستخدم - OmniFile AI Processor v2.1 # User Guide - OmniFile AI Processor v2.1 > **نظام ذكاء اصطناعي متكامل لمعالجة الملفات والنصوص والخط اليدوي** > **Integrated AI System for File Processing, Text Analysis, and Handwriting Recognition** --- ## المحتويات / Table of Contents 1. [متطلبات النظام / System Requirements](#1-متطلبات-النظام--system-requirements) 2. [التثبيت / Installation](#2-التثبيت--installation) 3. [التشغيل / Running](#3-التشغيل--running) 4. [الميزات الرئيسية / Key Features](#4-الميزات-الرئيسية--key-features) 5. [اختصارات لوحة المفاتيح / Keyboard Shortcuts](#5-اختصارات-لوحة-المفاتيح--keyboard-shortcuts) 6. [حل المشكلات / Troubleshooting](#6-حل-المشكلات--troubleshooting) 7. [أسئلة شائعة / FAQ](#7-أسئلة-شائعة--faq) --- ## 1. متطلبات النظام / System Requirements ### المتطلبات الأساسية / Core Requirements | المتطلب / Requirement | الحد الأدنى / Minimum | الموصى به / Recommended | |---|---|---| | **Python** / Python Version | 3.8+ | 3.11+ | | **الذاكرة (RAM)** / Memory | 4 GB | 8 GB+ | | **مساحة القرص** / Disk Space | 5 GB (للنماذج) | 10 GB+ | | **نظام التشغيل** / OS | Linux / Windows / macOS | Ubuntu 22.04+ / Manjaro / Arch | | **المعالج** / CPU | x86_64 dual-core | x86_64 quad-core+ | ### متطلبات GPU (اختياري) / GPU Requirements (Optional) | المتطلب / Requirement | المواصفات / Specification | |---|---| | **كرت الشاشة** / GPU | NVIDIA GPU (CUDA Compute Capability 6.0+) | | **CUDA** / CUDA Toolkit | 11.8+ (12.1+ موصى به) | | **VRAM** / Video Memory | 4 GB (لـ TrOCR-base) | | **cuDNN** / cuDNN | 8.x+ | > **ملاحظة / Note:** يعمل النظام بالكامل على CPU بدون أي مشكلة، لكن GPU يسرّع عمليات TrOCR و EasyOCR بشكل كبير. > **Note:** The system works fully on CPU without issues. GPU significantly accelerates TrOCR and EasyOCR processing. ### المتطلبات الاختيارية / Optional Dependencies | المكتبة / Library | الغرض / Purpose | التثبيت / Install | |---|---|---| | **Tesseract OCR** | محرك OCR احتياطي خفيف | `apt install tesseract-ocr tesseract-ocr-ara tesseract-ocr-eng` | | **Redis** | المعالجة غير المتزامنة (Celery) | `apt install redis-server` | | **ONNX Runtime** | تسريع الاستدلال | `pip install onnxruntime` أو `onnxruntime-gpu` | | **Presidio** | فحص البيانات الحساسة المتقدم | `pip install presidio-analyzer presidio-anonymizer` | --- ## 2. التثبيت / Installation ### 2.1 التثبيت المحلي / Local Installation ```bash # 1. استنساخ المشروع / Clone the repository git clone https://github.com/DrAbdulmalek/OmniFile_Processor.git cd OmniFile_Processor # 2. إنشاء بيئة افتراضية (موصى به) / Create virtual environment (recommended) python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 3. تثبيت الحزم / Install dependencies pip install -r requirements.txt # 4. تثبيت Tesseract (اختياري) / Install Tesseract (optional) # Ubuntu/Debian: sudo apt install tesseract-ocr tesseract-ocr-ara tesseract-ocr-eng # macOS: brew install tesseract ``` ### 2.2 التثبيت على Google Colab / Google Colab Installation ```python # 1. استنساخ المشروع / Clone the project !git clone https://github.com/DrAbdulmalek/OmniFile_Processor.git %cd OmniFile_Processor # 2. تثبيت الحزم / Install packages !pip install -q -r requirements.txt # 3. تثبيت Tesseract / Install Tesseract !apt install -y tesseract-ocr tesseract-ocr-ara tesseract-ocr-eng # 4. تشغيل التطبيق / Run the application !streamlit run app.py --server.port 7860 ```
📖 إعداد Google Colab المتقدم / Advanced Colab Setup ```python # ربط Google Drive للحفظ المستمر from google.colab import drive drive.mount('/content/drive') # إنشاء مجلد العمل import os WORK_DIR = '/content/drive/MyDrive/OmniFile_AI' os.makedirs(WORK_DIR, exist_ok=True) # نسخ المشروع إلى Drive !cp -r /content/OmniFile_Processor/* {WORK_DIR}/ # إعداد الإعدادات from config import OmniFileConfig cfg = OmniFileConfig.from_colab_drive() cfg.setup_environment() ```
### 2.3 التثبيت مع GPU Support / GPU Installation ```bash # 1. تثبيت PyTorch مع دعم CUDA / Install PyTorch with CUDA support pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 # 2. تثبيت ONNX Runtime مع دعم GPU (اختياري) pip install onnxruntime-gpu # 3. تثبيت بقية الحزم / Install remaining packages pip install -r requirements.txt # 4. التحقق من GPU / Verify GPU python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, Device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"CPU\"}')" ``` ### 2.4 التثبيت باستخدام Docker / Docker Installation ```bash # بناء الصورة / Build the image docker build -t omnifile-processor . # تشغيل الحاوية / Run the container docker run -d \ --name omnifile \ -p 7860:7860 \ -v $(pwd)/data:/app/data \ -v $(pwd)/models_cache:/app/models_cache \ --gpus all \ omnifile-processor ``` ### 2.5 التثبيت على HuggingFace Spaces / HuggingFace Spaces ```bash # المشروع يحتوي Dockerfile جاهز / Project includes a ready Dockerfile # 1. أنشئ Space جديد من نوع Docker # 2. ارفع ملفات المشروع # 3. سيتم البناء تلقائياً # أو استخدم git: git clone https://huggingface.co/spaces//OmniFile_Processor cd OmniFile_Processor # انسخ ملفات المشروع ثم ارفع git add . git commit -m "Deploy OmniFile AI Processor" git push ``` --- ## 3. التشغيل / Running ### 3.1 واجهة Streamlit (الواجهة الرئيسية) / Streamlit UI (Main Interface) ```bash # تشغيل عادي / Normal run streamlit run app.py # تشغيل بمنفذ محدد / Run on specific port streamlit run app.py --server.port 8501 # تشغيل للوصول العام / Run for public access streamlit run app.py --server.port 8501 --server.address 0.0.0.0 # إعداد Google Colab / Colab setup streamlit run app.py --server.port 7860 ``` > **ملاحظة / Note:** واجهة Streamlit هي الواجهة الأساسية والموصى بها لمعظم المستخدمين. توفر جميع الميزات في شكل تبويبات منظمة. > **Note:** Streamlit UI is the primary and recommended interface for most users. It provides all features in organized tabs. ### 3.2 واجهة Gradio (واجهة متقدمة) / Gradio UI (Advanced Interface) ```bash # تشغيل واجهة Gradio / Run Gradio interface python -m src.gradio_ui ``` > **ملاحظة / Note:** واجهة Gradio توفر تجربة تفاعلية متقدمة مع دعم أفضل لمعالجة الصور والمعاينة الفورية. > **Note:** Gradio UI provides an advanced interactive experience with better image processing and instant preview support. ### 3.3 وضع سطر الأوامر / CLI Mode ```bash # تشغيل وضع CLI / Run in CLI mode python main.py --cli # عرض معلومات الإصدار / Show version info python main.py --version ``` ### 3.4 إعداد بيئة Google Colab / Colab Setup ```bash # إعداد تلقائي لبيئة Colab / Automatic Colab setup python main.py --colab ``` يقوم هذا الأمر تلقائياً بـ: - ربط Google Drive - تثبيت جميع الحزم - إعداد مسارات التخزين المؤقت This command automatically: - Mounts Google Drive - Installs all packages - Sets up cache paths ### 3.5 المعالجة غير المتزامنة (Celery) / Async Processing (Celery) ```bash # 1. تشغيل Redis / Start Redis redis-server & # 2. تشغيل عامل Celery / Start Celery worker celery -A tasks worker --loglevel=info # 3. تشغيل التطبيق / Run the app streamlit run app.py ``` > **ملاحظة / Note:** المعالجة غير المتزامنة مفيدة لمعالجة ملفات PDF الكبيرة أو الدفعات الكبيرة من الصور. > **Note:** Async processing is useful for large PDF files or large batches of images. --- ## 4. الميزات الرئيسية / Key Features ### 4.1 معالجة OCR / OCR Processing يتضمن النظام ثلاث محركات OCR متكاملة تعمل معاً لتحقيق أفضل دقة: The system includes three integrated OCR engines working together for maximum accuracy: #### محرك TrOCR (من Microsoft) / TrOCR Engine (Microsoft) | الخاصية / Feature | التفاصيل / Details | |---|---| | **الأفضل لـ** / Best for | الخط اليدوي، الكلمات المعزولة، الملاحظات | | **النماذج** / Models | `small` (خفيف), `base` (متوازن), `large` (أدق) | | **GPU** | يدعم CUDA لتسريع كبير | | **ONNX** | يمكن تحويله لـ ONNX Runtime | | **Quantization** | يدعم INT8 لتقليل الذاكرة | #### محرك EasyOCR / EasyOCR Engine | الخاصية / Feature | التفاصيل / Details | |---|---| | **الأفضل لـ** / Best for | النصوص المطبوعة، النصوص متعددة اللغات | | **السرعة** / Speed | الأسرع بين المحركات الثلاثة | | **اللغات** / Languages | 80+ لغة (بما فيها العربية والإنجليزية والألمانية) | | **GPU** | يدعم CUDA | | **Batch** | يدعم المعالجة الدفعية | #### محرك Tesseract / Tesseract Engine | الخاصية / Feature | التفاصيل / Details | |---|---| | **الأفضل لـ** / Best for | النصوص المطبوعة الواضحة، الاستخدام الخفيف | | **الوزن** / Weight | خفيف جداً، لا يحتاج GPU | | **اللغات** / Languages | 100+ لغة (تحتاج تثبيت حزم اللغة) | | **التثبيت** / Install | يحتاج تثبيت على النظام (apt/brew) | #### إعدادات المحركات / Engine Settings يمكن التحكم بكل محرك من خلال `OmniFileConfig`: Each engine can be controlled through `OmniFileConfig`: ```python from config import OmniFileConfig cfg = OmniFileConfig() # تفعيل/تعطيل المحركات / Enable/disable engines cfg.enable_trocr = True # تفعيل TrOCR cfg.enable_easyocr = True # تفعيل EasyOCR cfg.enable_tesseract = True # تفعيل Tesseract # حجم نموذج TrOCR / TrOCR model size cfg.trocr_model_variant = "base" # "small" | "base" | "large" # التخزين المؤقت / Caching cfg.ocr_cache_enabled = True # تفعيل كاش OCR cfg.ocr_cache_ttl = 3600 # مدة صلاحية الكاش (ثانية) # تحسين الأداء / Performance optimization cfg.use_onnx = False # تسريع ONNX Runtime cfg.use_quantization = False # تخفيف دقة INT8 cfg.low_memory = False # وضع الذاكرة المنخفضة # معالجات إضافية / Additional settings cfg.dpi = 300 # دقة تحويل PDF cfg.trocr_batch_size = 8 # حجم الدفعة cfg.num_beams = 4 # عدد أشعة البحث cfg.easy_conf_threshold = 0.80 # حد الثقة لـ EasyOCR ``` --- ### 4.2 التصحيح الإملائي / Spell Correction المصحح الإملائي الذكي يدعم ثلاث لغات مع حماية المصطلحات التقنية: The smart spell corrector supports three languages with protection for technical terms: #### اللغات المدعومة / Supported Languages | اللغة / Language | المكتبة / Library | ملاحظات / Notes | |---|---|---| | **الإنجليزية** / English | `pyspellchecker` | دقة عالية للمصطلحات العامة | | **العربية** / Arabic | `ar-corrector` | تصحيح متقدم للعربية | | **الألمانية** / German | `pyspellchecker` | يدعم الأحرف الخاصة (ä, ö, ü, ß) | #### حماية المصطلحات / Term Protection يحمي المصحح تلقائياً: The corrector automatically protects: - **كلمات Python المحجوزة:** `def`, `class`, `import`, `return`, `if`, `for`, `while` ... - **أسماء المكتبات:** `numpy`, `pandas`, `torch`, `transformers`, `fastapi` ... - **المتغيرات:** `snake_case`, `camelCase`, `PascalCase` - **الأرقام والرموز:** لا يتم تصحيحها أبداً - **المصطلحات المخصصة:** يمكن إضافة مصطلحات محمية إضافية #### التعلم من المستخدم / Learning from User يتعلم المصحح من تصحيحات المستخدم ويحفظها: The corrector learns from user corrections and saves them: ```python from modules.nlp.spell_corrector import SpellCorrector corrector = SpellCorrector() # تعليم المصحح / Teach the corrector corrector.learn_correction("omnifle", "omnifile") corrector.learn_correction("hendwritng", "handwriting") # التصحيح يحتاج 2 تصحيحات متطابقة ليُفعّل / Corrections need 2 identical votes to activate # يمكن تغيير الحد بـ min_votes=1 / Can change threshold with min_votes=1 ``` --- ### 4.3 الترجمة / Translation المترجم التقني يدعم الترجمة بين ثلاث لغات مع حماية الكود البرمجي: The technical translator supports translation between three languages with code protection: #### اتجاهات الترجمة / Translation Directions | من إلى / From to | النموذج / Model | |---|---| | **EN to AR** | `Helsinki-NLP/opus-mt-en-ar` | | **AR to EN** | `Helsinki-NLP/opus-mt-ar-en` | | **EN to DE** | `Helsinki-NLP/opus-mt-en-de` | | **DE to EN** | `Helsinki-NLP/opus-mt-de-en` | | **DE to AR** | `Helsinki-NLP/opus-mt-de-ar` | | **AR to DE** | `Helsinki-NLP/opus-mt-ar-de` | > **ملاحظة / Note:** عند عدم توفر نموذج مباشر، يستخدم النظام الإنجليزية كلغة وسيطة تلقائياً. > **Note:** When a direct model is unavailable, the system automatically uses English as a pivot language. #### حماية الكود البرمجي / Code Protection يحافظ المترجم على المقاطع التالية بدون ترجمة: The translator preserves the following without translation: - مقاطع الكود (`` ```python ... ``` `` و `` `inline` ``) - أسماء المتغيرات (`snake_case`, `camelCase`) - أسماء الفئات (`PascalCase`) - أنواع البيانات (`int`, `str`, `bool`, `list`, `dict`) - كلمات Python المحجوزة - عناوين URL والبريد الإلكتروني - الأرقام #### القاموس التقني / Technical Glossary يحتوي المترجم على قاموس مدمج لأكثر من 80 مصطلح تقني: The translator includes a built-in glossary of 80+ technical terms: | الإنجليزية / English | العربية / Arabic | |---|---| | Machine Learning | التعلم الآلي | | Deep Learning | التعلم العميق | | Neural Network | الشبكة العصبية | | Natural Language Processing | معالجة اللغة الطبيعية | | Computer Vision | الرؤية الحاسوبية | | Artificial Intelligence | الذكاء الاصطناعي | ```python from modules.nlp.translator import TechnicalTranslator translator = TechnicalTranslator() # ترجمة نص / Translate text result = translator.translate_text( "Machine learning is a subset of artificial intelligence", source="en", target="ar" ) print(result["translated_text"]) # ترجمة مستند كامل / Translate a full document doc_result = translator.translate_document( long_text, source="en", target="ar", chunk_size=500 ) # إضافة مصطلح للقاموس / Add term to glossary translator.add_to_glossary("fine-tuning", "الضبط الدقيق") ``` --- ### 4.4 التلخيص / Summarization (جديد v2.1) ميزة جديدة في v2.1 لتلخيص النصوص الطويلة باستخدام نماذج BART: New feature in v2.1 for summarizing long texts using BART models: #### النماذج المدعومة / Supported Models | اللغة / Language | النموذج / Model | النوع / Type | |---|---|---| | **الإنجليزية** / English | `facebook/bart-large-cnn` | تلخيص أخبار | | **الإنجليزية** / English | `facebook/bart-large-xsum` | تلخيص عام | | **الإنجليزية** / English | `google/pegasus-xsum` | تلخيص BBC | | **العربية** / Arabic | `UAE-Code/mbart-summarization-ar` | تلخيص عربي | #### الميزات / Features - **كشف اللغة تلقائياً:** يكشف اللغة من النص ويختار النموذج المناسب - **نموذج احتياطي:** عند فشل النموذج الأساسي، يجرب النموذج الاحتياطي تلقائياً - **تخزين مؤقت:** يحفظ نتائج التلخيص لتسريع الطلبات المتكررة - **انحطاط سلس:** إذا تعذر التلخيص، يعيد أول 200 حرف كملخص - **معالجة دفعية:** يدعم تلخيص مجموعة نصوص مع تتبع التقدم ```python from modules.nlp.summarizer import TextSummarizer summarizer = TextSummarizer( max_length=130, min_length=30, enable_cache=True ) # تلخيص نص / Summarize text result = summarizer.summarize(long_article) print(result["summary"]) print(f"نسبة الضغط: {result['compression_ratio']:.1%}") print(f"اللغة: {result['language']}") print(f"النموذج: {result['model']}") print(f"وقت المعالجة: {result['processing_time']:.2f}s") ``` --- ### 4.5 فحص البيانات الحساسة / Sensitive Data Scanning (جديد v2.1) ميزة جديدة في v2.1 لكشف البيانات الحساسة وإخفائها: New feature in v2.1 for detecting and redacting sensitive data: #### الأنماط المدعومة / Supported Patterns | النمط / Pattern | الوصف / Description | مستوى الخطورة / Risk | |---|---|---| | **CREDIT_CARD** | بطاقات ائتمانية | عالي / High | | **EMAIL_ADDRESS** | بريد إلكتروني | متوسط / Medium | | **PHONE_NUMBER** | أرقام هواتف | متوسط / Medium | | **IP_ADDRESS** | عناوين IP | منخفض / Low | | **SSN** | رقم ضمان اجتماعي | عالي / High | | **API_KEY** | مفاتيح API | عالي / High | | **JWT_TOKEN** | رموز JWT | عالي / High | | **AWS_KEY** | مفاتيح AWS | عالي / High | | **PRIVATE_KEY** | مفاتيح خاصة (RSA, EC, DSA) | حرج / Critical | | **IBAN** | أرقام IBAN | عالي / High | #### طرق الفحص / Detection Methods 1. **Presidio (متقدم):** أكثر دقة، يستخدم NLP لتحليل السياق 2. **Regex (احتياطي):** يعمل دائماً بدون مكتبات إضافية ```python from modules.security.sensitive_data_scanner import SensitiveDataScanner scanner = SensitiveDataScanner(use_presidio=True) # فحص نص / Scan text result = scanner.scan_text("Contact: john@email.com, Card: 4111-1111-1111-1111") print(f"بيانات حساسة: {result['sensitive_data_found']}") print(f"مستوى الخطورة: {result['risk_level']}") print(f"عدد الكيانات: {result['total_entities']}") # إخفاء البيانات الحساسة / Redact sensitive data safe_text = scanner.anonymize_text( "Card: 4111-1111-1111-1111, Email: john@email.com", mask_char="[REDACTED]" ) print(safe_text) # Card: [REDACTED], Email: [REDACTED] # إضافة نمط مخصص / Add custom pattern scanner.add_custom_pattern( name="NATIONAL_ID_SA", label="هوية وطنية سعودية", regex=r"\b\d{10}\b", risk="high" ) ``` --- ### 4.6 تنظيم الملفات / File Organization #### فرز تلقائي حسب النوع / Automatic Sorting by Type الملفات المعتمدة للتقسيم: Supported file categories: | التصنيف / Category | الامتدادات / Extensions | |---|---| | **الصور** / Images | `.png`, `.jpg`, `.jpeg`, `.bmp`, `.tiff`, `.webp` | | **المستندات** / Documents | `.pdf`, `.docx`, `.txt`, `.md`, `.rtf` | | **البيانات** / Data | `.csv`, `.json`, `.xlsx`, `.xml`, `.yaml` | | **الكود** / Code | `.py`, `.js`, `.ts`, `.java`, `.cpp`, `.h`, `.ipynb` | | **الأرشيفات** / Archives | `.zip`, `.tar.gz`, `.7z`, `.rar` | #### فحص أمني للملفات / Security File Scanning - فحص الامتدادات المعتمدة - كشف الأنماط المحظورة (passwords, secrets, api_key, token) - تحديد حجم الملفات - تسجيل سجل المعالجة #### النسخ الاحتياطي / Backup ```python from modules.security.backup_manager import BackupManager # إنشاء نسخة احتياطية / Create backup backup = BackupManager.create_backup(source_dir="./data") # استعادة نسخة / Restore backup BackupManager.restore_backup(backup_path="./backups/backup_2024.zip") ``` --- ### 4.7 استخراج الكيانات المسماة / Named Entity Recognition (NER) استخراج الأسماء والأماكن والمنظمات من النصوص العربية والإنجليزية: Extract names, locations, and organizations from Arabic and English texts: | نوع الكيان / Entity Type | النموذج / Model | |---|---| | **PERSON** (أشخاص) | `aubmindlab/bert-base-arabertv02-ner` | | **ORG** (منظمات) | `aubmindlab/bert-base-arabertv02-ner` | | **LOC** (أماكن) | `aubmindlab/bert-base-arabertv02-ner` | ### 4.8 تصنيف النصوص / Text Classification تصنيف المستندات تلقائياً إلى فئات: Automatic document classification into categories: ```python from modules.nlp.text_classifier import TextClassifier classifier = TextClassifier() result = classifier.classify("This is a research paper about neural networks") print(result["category"]) # "research" print(result["confidence"]) # 0.95 ``` ### 4.9 كشف اللغة / Language Detection ```python from modules.nlp.language_detector import LanguageDetector detector = LanguageDetector() result = detector.detect("هذا نص عربي") print(result["language"]) # "ar" print(result["confidence"]) # 0.99 ``` --- ## 5. اختصارات لوحة المفاتيح / Keyboard Shortcuts ### واجهة Streamlit / Streamlit Interface | العملية / Action | الاختصار / Shortcut | الوصف / Description | |---|---|---| | **رفع ملف** / Upload file | Drag and Drop | سحب وإفلات الملف في منطقة الرفع | | **تشغيل معالجة** / Run processing | Enter | في حقول الإدخال النصية | | **حفظ النتائج** / Save results | Ctrl+S | حفظ النص المُعالج (إن توفر) | | **توسيع تبويب** / Expand tab | الضغط على العنوان | توسيع/طي تبويب في الشريط الجانبي | | **تحديث الصفحة** / Refresh page | R | إعادة تشغيل التطبيق | | **إيقاف مؤقت** / Pause | Ctrl+C | إيقاف التطبيق في الطرفية | | **بحث** / Search | Ctrl+F | بحث في النصوص المعروضة | ### واجهة Gradio / Gradio Interface | العملية / Action | الاختصار / Shortcut | |---|---| | **رفع صورة** / Upload image | Drag and Drop أو النقر على منطقة الرفع | | **مسح المدخلات** / Clear inputs | زر Clear | | **إرسال** / Submit | زر Submit أو Enter | --- ## 6. حل المشكلات / Troubleshooting ### 6.1 مشكلة: OCR بطيء / Issue: OCR is Slow **الأعراض / Symptoms:** المعالجة تستغرق وقتاً طويلاً (> 10 ثوانٍ للصورة الواحدة) **الحلول / Solutions:** ```python # 1. فعّل GPU / Enable GPU cfg.use_gpu = True # 2. استخدم نموذج TrOCR أصغر / Use a smaller TrOCR model cfg.trocr_model_variant = "small" # بدلاً من "base" أو "large" # 3. فعّل ONNX Runtime لتسريع الاستدلال / Enable ONNX Runtime cfg.use_onnx = True # تأكد من تثبيت: pip install onnxruntime # 4. فعّل Quantization (INT8) لتقليل الذاكرة / Enable Quantization cfg.use_quantization = True # 5. عطّل المحركات غير المستخدمة / Disable unused engines cfg.enable_trocr = False # إذا كنت تحتاج EasyOCR فقط # أو استخدم محرك واحد فقط: cfg.enable_easyocr = True cfg.enable_tesseract = False # 6. فعّل التخزين المؤقت / Enable caching cfg.ocr_cache_enabled = True cfg.ocr_cache_ttl = 3600 # ساعة واحدة # 7. قلل دقة تحويل PDF / Reduce PDF conversion DPI cfg.dpi = 200 # بدلاً من 300 ``` --- ### 6.2 مشكلة: نفاد الذاكرة (OOM) / Issue: Out of Memory **الأعراض / Symptoms:** `RuntimeError: CUDA out of memory` أو تجمد النظام **الحلول / Solutions:** ```python # 1. فعّل وضع الذاكرة المنخفضة / Enable low memory mode cfg.low_memory = True # 2. استخدم نموذج TrOCR-small / Use TrOCR-small model cfg.trocr_model_variant = "small" # 3. فعّل Quantization (INT8) / Enable Quantization cfg.use_quantization = True # 4. قلل حجم الدفعة / Reduce batch size cfg.trocr_batch_size = 4 # بدلاً من 8 # 5. عطّل TrOCR واستخدم EasyOCR فقط / Disable TrOCR, use EasyOCR only cfg.enable_trocr = False cfg.enable_easyocr = True # 6. أضف تنظيف الذاكرة / Add memory cleanup import gc import torch torch.cuda.empty_cache() gc.collect() ``` --- ### 6.3 مشكلة: TrOCR لا يعمل / Issue: TrOCR Not Working **الأعراض / Symptoms:** خطأ عند محاولة استخدام TrOCR، أو النتيجة دائماً من EasyOCR **الحلول / Solutions:** ```bash # 1. تأكد من تثبيت المكتبات المطلوبة pip install transformers torch # 2. تأكد من إصدار transformers pip install --upgrade transformers>=4.36.0 # 3. جرب التشغيل على CPU ``` ```python cfg.use_gpu = False # قسّم المشكلة: هل هي مشكلة GPU؟ # 4. تحقق من توفر المحرك from modules.vision.ocr_engine import OCREngine engine = OCREngine() engines = engine.get_available_engines() for e in engines: print(f"{e['name']}: available={e['available']}, enabled={e['enabled']}") ``` --- ### 6.4 مشكلة: الترجمة لا تعمل / Issue: Translation Not Working **الأعراض / Symptoms:** لا يظهر النص المترجم، أو يظهر رسالة "الترجمة غير متوفرة" **الحلول / Solutions:** ```bash # 1. تأكد من اتصال الإنترنت (لتحميل النموذج أول مرة) # 2. تأكد من تثبيت المكتبات pip install transformers sentencepiece # 3. تأكد من إصدار sentencepiece pip install --upgrade sentencepiece ``` ```python # 4. تحقق من التخزين المؤقت (قد يكون تالفاً) from modules.nlp.translator import TechnicalTranslator translator = TechnicalTranslator() translator.clear_cache() # 5. تأكد من اللغات المدعومة print(TechnicalTranslator.SUPPORTED_LANGUAGES) # ['en', 'ar', 'de'] print(TechnicalTranslator.TRANSLATION_MODELS) ``` --- ### 6.5 مشكلة: التلخيص لا يعمل / Issue: Summarization Not Working **الحلول / Solutions:** ```bash # تأكد من تثبيت المكتبات pip install transformers torch # إذا كنت تواجه مشكلة في نموذج عربي pip install --upgrade transformers sentencepiece ``` ```python # تحقق من توفر الملخص from modules.nlp.summarizer import TextSummarizer summarizer = TextSummarizer() print(f"متاح: {summarizer.is_available()}") # تأكد من أن النص طويل بما يكفي (30 كلمة على الأقل) result = summarizer.summarize("نص قصير جداً") print(result.get("reason")) # "text_too_short" ``` --- ### 6.6 مشكلة: خطأ في Tesseract / Issue: Tesseract Error **الأعراض / Symptoms:** `TesseractNotFoundError` أو نتائج فارغة **الحلول / Solutions:** ```bash # Ubuntu/Debian: sudo apt install tesseract-ocr tesseract-ocr-ara tesseract-ocr-eng # macOS: brew install tesseract brew install tesseract-lang # لغات إضافية # Windows: # حمّل من: https://github.com/UB-Mannheim/tesseract/wiki # أضف مسار Tesseract لمتغيرات البيئة PATH # التحقق من التثبيت: tesseract --version tesseract --list-langs ``` ```python # أو ببساطة عطّل Tesseract واستخدم المحركات الأخرى cfg.enable_tesseract = False ``` --- ### 6.7 مشكلة: أخطاء التبعيات / Issue: Dependency Errors ```bash # إعادة تثبيت جميع الحزم pip install -r requirements.txt --force-reinstall # أو تثبيت الحزم المفقودة فقط: pip install streamlit>=1.28.0 pip install transformers>=4.36.0 pip install torch>=2.1.0 pip install easyocr>=1.7.0 pip install PyMuPDF>=1.23.0 # تحقق من الحزم المفقودة تلقائياً: python main.py # سيظهر تحذير بالحزم المفقودة ``` --- ## 7. أسئلة شائعة / FAQ ### Q1: هل يعمل النظام بدون اتصال بالإنترنت؟ / Does the system work offline? **A:** نعم، بعد تحميل النماذج لأول مرة (يحتاج إنترنت)، يعمل النظام بالكامل بدون اتصال. النماذج تُحفظ في مجلد `models_cache/`. **A:** Yes, after downloading models for the first time (requires internet), the system works fully offline. Models are cached in `models_cache/`. ### Q2: ما هو أفضل محرك OCR للاستخدام؟ / What is the best OCR engine? **A:** يعتمد على الاستخدام: **A:** It depends on the use case: - **الخط اليدوي:** TrOCR (الأفضل) - **النصوص المطبوعة متعددة اللغات:** EasyOCR (الأسرع) - **الاستخدام الخفيف بدون GPU:** Tesseract (الأخف) - **لأفضل نتيجة:** استخدم الثلاثة معاً (الافتراضي) ### Q3: هل يمكن إضافة لغة جديدة؟ / Can I add a new language? **A:** نعم، راجع `دليل المطور / Developer Guide` لخطوات إضافة لغة جديدة. باختصار: **A:** Yes, see the Developer Guide for steps to add a new language. Briefly: 1. أضف الرمز في `supported_languages` في `config.py` 2. أضف مصحح في `spell_corrector.py` 3. أضف نموذج ترجمة في `translator.py` ### Q4: كم يحتاج تحميل النماذج من الوقت؟ / How long does model download take? **A:** يعتمد على سرعة الإنترنت وحجم النموذج: **A:** Depends on internet speed and model size: - **TrOCR-small:** ~400 MB (~2 دقائق) - **TrOCR-base:** ~800 MB (~4 دقائق) - **TrOCR-large:** ~1.5 GB (~8 دقائق) - **EasyOCR (EN+AR):** ~200 MB - **نماذج الترجمة:** ~300 MB لكل اتجاه ### Q5: كيف أستخدم النظام مع GPU على Google Colab؟ / How to use GPU on Colab? **A:** ```python # 1. تأكد من اختيار GPU في Runtime > Change runtime type > T4 GPU # 2. تحقق: import torch print(f"CUDA available: {torch.cuda.is_available()}") print(f"GPU: {torch.cuda.get_device_name(0)}") # 3. الإعدادات ستكشف GPU تلقائياً: from config import OmniFileConfig cfg = OmniFileConfig.from_colab_drive() # cfg.use_gpu سيكون True تلقائياً إذا توفر CUDA ``` ### Q6: هل يمكن معالجة ملفات PDF؟ / Can PDF files be processed? **A:** نعم! النظام يدعم: **A:** Yes! The system supports: - استخراج النص المباشر من PDF - تحويل صفحات PDF إلى صور ومعالجتها بـ OCR - معالجة PDF متعدد الصفحات مع تتبع التقدم - دعم PDF الممسوح ضوئياً (scanned PDFs) ### Q7: كيف أحمي كلمة معينة من التصحيح الإملائي؟ / How to protect a word from spell correction? **A:** ```python from modules.nlp.spell_corrector import SpellCorrector corrector = SpellCorrector() # حماية مؤقتة / Temporary protection result = corrector.correct_with_protection( "my custom term numpy pandas", protected_terms=["custom", "term"] ) # حماية دائمة / Permanent protection corrector.add_protected_term("OmniFile") corrector.add_protected_term("TrOCR") ``` ### Q8: كيف أنشر النظام على الخادم؟ / How to deploy on a server? **A:** هناك عدة خيارات: **A:** Several options available: 1. **Docker:** `docker build -t omnifile . && docker run -p 7860:7860 omnifile` 2. **HuggingFace Spaces:** ارفع المشروع مع Dockerfile 3. **Manual:** `streamlit run app.py --server.port 7860 --server.address 0.0.0.0` 4. **مع Celery:** لتسريع المعالجة غير المتزامنة ### Q9: ما هو الفرق بين v2.0 و v2.1؟ / What's new in v2.1? **A:** | الميزة / Feature | v2.0 | v2.1 | |---|---|---| | **محركات OCR** | مفعّلة دائماً | قابلة للتفعيل/التعطيل | | **ONNX Runtime** | غير مدعوم | مدعوم - تسريع الاستدلال | | **Quantization** | غير مدعوم | مدعوم - INT8 لتقليل الذاكرة | | **OCR Cache** | غير مدعوم | مدعوم - تخزين مؤقت | | **Summarization** | غير مدعوم | مدعوم - تلخيص BART | | **Sensitive Scan** | غير مدعوم | مدعوم - Presidio + Regex | | **Celery** | غير مدعوم | مدعوم - معالجة غير متزامنة | | **الوضع الداكن** | غير مدعوم | مدعوم - تخصيص | ### Q10: كيف أساهم في المشروع؟ / How to contribute? **A:** اتبع الخطوات التالية: **A:** Follow these steps: 1. Fork المشروع من [GitHub](https://github.com/DrAbdulmalek/OmniFile_Processor) 2. أنشئ branch جديد: `git checkout -b feature/my-feature` 3. اتبع معايير الكود في `دليل المطور / Developer Guide` 4. أضف اختبارات للميزة الجديدة 5. ارفع Pull Request مع وصف واضح --- > **المؤلف / Author:** Dr Abdulmalek Tamer Al-husseini > **📍 الموقع / Location:** Homs, Syria > **📧 البريد / Email:** Abdulmalek.husseini@gmail.com > **الإصدار / Version:** 2.1 > **الترخيص / License:** راجع ملف `LICENSE`