Spaces:
Running
دليل المستخدم - 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
- متطلبات النظام / System Requirements
- التثبيت / Installation
- التشغيل / Running
- الميزات الرئيسية / Key Features
- اختصارات لوحة المفاتيح / Keyboard Shortcuts
- حل المشكلات / Troubleshooting
- أسئلة شائعة / 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
# 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
# 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
# ربط 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
# 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
# بناء الصورة / 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
# المشروع يحتوي Dockerfile جاهز / Project includes a ready Dockerfile
# 1. أنشئ Space جديد من نوع Docker
# 2. ارفع ملفات المشروع
# 3. سيتم البناء تلقائياً
# أو استخدم git:
git clone https://huggingface.co/spaces/<your-username>/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)
# تشغيل عادي / 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)
# تشغيل واجهة 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
# تشغيل وضع CLI / Run in CLI mode
python main.py --cli
# عرض معلومات الإصدار / Show version info
python main.py --version
3.4 إعداد بيئة Google Colab / Colab Setup
# إعداد تلقائي لبيئة 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)
# 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:
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:
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 | الذكاء الاصطناعي |
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 حرف كملخص
- معالجة دفعية: يدعم تلخيص مجموعة نصوص مع تتبع التقدم
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
- Presidio (متقدم): أكثر دقة، يستخدم NLP لتحليل السياق
- Regex (احتياطي): يعمل دائماً بدون مكتبات إضافية
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
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:
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
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:
# 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:
# 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:
# 1. تأكد من تثبيت المكتبات المطلوبة
pip install transformers torch
# 2. تأكد من إصدار transformers
pip install --upgrade transformers>=4.36.0
# 3. جرب التشغيل على CPU
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:
# 1. تأكد من اتصال الإنترنت (لتحميل النموذج أول مرة)
# 2. تأكد من تثبيت المكتبات
pip install transformers sentencepiece
# 3. تأكد من إصدار sentencepiece
pip install --upgrade sentencepiece
# 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:
# تأكد من تثبيت المكتبات
pip install transformers torch
# إذا كنت تواجه مشكلة في نموذج عربي
pip install --upgrade transformers sentencepiece
# تحقق من توفر الملخص
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:
# 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
# أو ببساطة عطّل Tesseract واستخدم المحركات الأخرى
cfg.enable_tesseract = False
6.7 مشكلة: أخطاء التبعيات / Issue: Dependency Errors
# إعادة تثبيت جميع الحزم
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:
- أضف الرمز في
supported_languagesفيconfig.py - أضف مصحح في
spell_corrector.py - أضف نموذج ترجمة في
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:
# 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:
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:
- Docker:
docker build -t omnifile . && docker run -p 7860:7860 omnifile - HuggingFace Spaces: ارفع المشروع مع Dockerfile
- Manual:
streamlit run app.py --server.port 7860 --server.address 0.0.0.0 - مع 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:
- Fork المشروع من GitHub
- أنشئ branch جديد:
git checkout -b feature/my-feature - اتبع معايير الكود في
دليل المطور / Developer Guide - أضف اختبارات للميزة الجديدة
- ارفع Pull Request مع وصف واضح
المؤلف / Author: Dr Abdulmalek Tamer Al-husseini 📍 الموقع / Location: Homs, Syria 📧 البريد / Email: Abdulmalek.husseini@gmail.com الإصدار / Version: 2.1 الترخيص / License: راجع ملف
LICENSE