File size: 35,354 Bytes
900df0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
# دليل المستخدم - 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
```

<details>
<summary>📖 إعداد Google Colab المتقدم / Advanced Colab Setup</summary>

```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()
```

</details>

### 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/<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)

```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`