ما يحتاج AI آخر معرفته — مشروع أثر (HTR للمخطوطات العربية)
البنية
- Backend: FastAPI بـ
backend/run.pyعلى المنفذ 8001 (Kraken v3، CUDA+FP16 على RTX 4050). - Frontend: PWA على
http://127.0.0.1:8001/app/— تبويبات: تحقيق المخطوطات / تحليل الكتب / قص يدوي / فهرس. - فرع التثبيت الحالي:
fix/pipeline-quality— عليه رحلة المتصفح والتصدير ومكتبة المصادر.feature/phoenix-ai-demoلقطة أقدم، ولم يُدمج الفرعان بعد.
التشغيل (حتماً)
cd backend && .venv\Scripts\python.exe run.py
- يجب بيثون
backend/.venv(3.10 فيها kraken+slowapi+torch-cuda). بيثون النظام 3.14 ينقصه kraken. - إن كسر venv: أعد
pyvenv.cfg(home = C:\Users\aiden\AppData\Local\Python\pythoncore-3.10-64). - فحص:
GET http://127.0.0.1:8001/api/health→ يجب أن يحويKraken v3 (HTR CUDA+FP16 ...).
الميزات المُنفَّذة (كلها تعمل، لا تُعيد بناءها)
- راوتر تخطيط: كشف إطار (cf>0.92) → مسار المنطق. غير مؤطّرة → مسار عام. الإصلاح المهم: القص/التعرّف = logic فقط مع frame_box مؤكّد.
- بوابة LM: عتبة ثقة 0.95 ·
char8_visual.lm(train فقط) · α=0.5, β=0.3, beam=10 · سقف تغيير 0.5.char8_trainval.lmرأى val، فلا يُستخدم لضبط أو قياس عليها. الحارس فيlm_split_guard.pyيطبع الزوج والبصمات. - قص يدوي / PAGE-XML: تبويب «✂️ قص يدوي» — رفع صورة + رسم مربعات أو استيراد PAGE-XML (eScriptorium). النتيجة تُنقل تلقائياً للتبويب الأول.
- فصل المتن/الحاشية:
_classify_columnsبكشف الأعمدة (متن/يمين/يسار/أعلى/أسفل). يعمل جيداً مع قص XML الدقيق فقط. - مساعِد LLM سياقي: OpenAI GPT-5 (
gpt-5.4-miniسهل،gpt-5.5صعب). ميزات: شرح مصطلحات، شرح صفحة، بدائل قراءة (مع تعليل)، استخراج كيانات. كاش LRU لتلافي إعادة الاستدعاء. - RAC (التصحيح بالاسترجاع): مكتبة محلية قابلة للتوسعة: 4 كتب / 9,450 موضعاً (قرآن، بخاري، معجب، النجاة). اختيار المصادر محفوظ لكل مخطوطة، والإسناد المتكرر يُعرض ملتبساً لا مرجعاً قطعياً.
- الإنسان في الحلقة: قائمة مراجعة سريعة، لوحة أدلة، سجل قبل/بعد، وتراجع يضيف قيداً ولا يمحو التاريخ. 32/32 مربّع سطر قابل للفتح، مع قائمة عند التداخل.
- المخرجات: PAGE-XML بمضلعات وbaselines، TEI، وحزمة تدريب لا يدخلها إلا ما اعتمده الباحث. OpenITI وIIIF موصولان مع معاينة وحماية شبكة.
- الفهرس (35,632 عمل): بحث بترتيب الصلة (token+IDF+عنوان كامل+تجريد «ال»).
GET /api/catalog/search?q=....
المفاتيح والـLLM
backend/.env(مُستثنى من git، لا تلمسه):OPENAI_API_KEY+LLM_MODEL_EASY=gpt-5.4-mini+LLM_MODEL_HARD=gpt-5.5.- GPT-5 يستخدم
max_completion_tokens+reasoning_effortبلا temperature. عند 402: نفد الرصيد.
الملفات المهمّة
- الإعدادات:
backend/app/core/config.py(النماذج، LM، المسار الآمن). - OCR الجوهر:
backend/app/services/ocr/kraken_service.py(الراوتر +_classify_columns+recognize_manual). - التحليل:
backend/app/api/endpoints/analysis_api.py(بدائل، شرح، RAC، بحث، كيانات). - الاسترجاع:
backend/app/services/retrieval_service.py(RAC). - الفهرس:
backend/app/services/catalog_service.py.
المسار الآمن للتعرّف (لا تُغيّره)
- رمادي L (لا nlbin، لا enhance، لا resize، لا deskew). nlbin يشوّه نماذج L.
- النماذج (في
نماذج/):- عام:
seg_finetuned_v4+transcription_finetuned_best - منطق:
logic_philosophy_v2_seg+logic_philosophy_v2_rec - LM:
char8_visual.lm(عام، train فقط) ·char8_logic_selftrained.lm(منطق)
- عام:
القياس — حالة المجموعات أهم من الرقم
experiment_4/data/valوexperiment_4/data/testاستُخدمتا في الضبط أو اختيار النماذج؛ لا تُعرض أرقامهما أداءً مستقلاً.rac_holdoutمستبدلة بعد إصلاح أمان الاسترجاع، وtop_15مرجعها آلي.- المصدر الملزم للحالة:
reports/split_manifest.json. أي مجموعة مجهولة الحالة لا تُفترض مستقلة، وأي تجاوز تشخيصي يحملINVALID_FOR_CLAIMS. - أرقام 6.76% و8.68% تاريخية ببروتوكولاتها، وليست رقماً نهائياً للنسخة الحالية.
- مبدأ الأمانة: غير المقيس =
Not measured. لا رقم مخترع.
آخر تثبيت متصفح
scripts/final_stabilization_playwright.py: 5/5، و32/32 سطراً، وزر إلغاء الإثراء، وبطاقات 4 مصادر، وصفر أخطاء JavaScript.- النتائج واللقطات:
output/playwright/final/.
أخطاء Windows + مسار عربي (مهم)
PYTHONIOENCODING=utf-8دائماً.- لأوامر بايثون معقّدة: اكتب ملف
.pyبدل inline (فشل curl/inline مع مسار عربي). - PowerShell +
Start-Process -WorkingDirectoryمع مسار عربي يفشل — استخدم env var قبل Start-Process.
قواعد لا تكسرها
- لا تُغيّر
.env(المفاتيح). - لا تُبطل الديمو المستقرّ — كل تغيير في
feature/phoenix-ai-demoيجب أن يُختبر أولاً. - لا تُدرّب نموذجاً بلا استئذان — التدريب يتم في حاوية Docker
escriptorium-celery-gpu-1. - لا تلمس PAGE-XML/GT — تُستخدم للتقييم فقط.
- لا تخلط المجموعات الثلاث (GT/manual/auto) في جدول واحد.
الورقة البحثية
paper_v2/PAPER_v2.docx(5 صفحات، A4، Times New Roman، 4 جداول، 3 أشكال).- المصدر:
paper_v2/PAPER_v2.md+_build_docx.py+figures/. - اسم المشروع النهائي: أثر.