ترجم ملفات PDF بواسطة BabelDOC على base URL مخصص لـ OpenAI.
Updated 2026-07-30
مترجم BabelDOC متوافق مع OpenAI بالتصميم: ثلاثة أعلام (--openai، --openai-base-url، --openai-api-key) بالإضافة إلى --openai-model تختار نقطة النهاية والنموذج. وجّه base URL إلى https://api.apisrouter.com/v1 وترجم المستندات بواسطة Claude أو DeepSeek أو GLM أو Gemini عبر مفتاح واحد.
إجابة سريعة: ثلاثة أعلام توجّه كل استدعاء ترجمة.
يأخذ سطر أوامر BabelDOC نقطة النهاية مباشرة: --openai يُفعِّل مترجم LLM، --openai-base-url يضبط وجهة الطلبات، --openai-api-key يُصادِق، وopenai-model يختار معرّف النموذج. أمثلة README نفسها تُظهِر بالضبط مجموعة الأعلام هذه، وملاحظة خدمة الترجمة الخاصة به تنص على أن فقط نماذج LLM المتوافقة مع OpenAI مدعومة، ما يجعل بوابة متوافقة مع OpenAI ومتعددة البائعين هي الخيار الطبيعي لا الحل البديل. بما أن معرّف النموذج يُمرَّر كسلسلة عادية، يعمل أي شيء تخدمه نقطة النهاية: توثيق المشروع نفسه يوصي بنماذج من عائلتَي GLM وDeepSeek متوافقة جيداً مع OpenAI، ومن خلال APIsRouter تجلس هذه بجانب معرّفات Claude وGemini خلف نفس base URL.
babeldoc --files paper.pdf \
--lang-in en --lang-out zh \
--openai \
--openai-model "deepseek-v4-flash" \
--openai-base-url "https://api.apisrouter.com/v1" \
--openai-api-key "$APISROUTER_API_KEY"كيف يحوّل BabelDOC ملف PDF إلى استدعاءات نموذج.
BabelDOC (funstory-ai على GitHub، بنحو 9 آلاف نجمة، من الفريق خلف Immersive Translate) هو مترجم مستندات PDF يحافظ على التخطيط: يحلّل بنية المستند، يحمي الصيغ الرياضية والأشكال، يجد الفقرات، يترجمها بواسطة LLM، ثم يعيد بناء PDF كنسخة أحادية مُترجَمة ونسخة مزدوجة جنباً إلى جنب. يُشحَن كـ CLI وواجهة Python API، وهو النظير ذاتي الاستضافة لخدمة BabelDOC المُستضافة. مرحلة الترجمة هي حيث تهم نقطة النهاية. يصبح المستند مئات من طلبات chat-completions بحجم فقرة، مُقيَّدة بعلم --qps (الافتراضي 4 استعلامات في الثانية) ومُعالَجة بواسطة مجمع عمّال (pool-max-workers، الافتراضي هو قيمة QPS). لهذا الشكل نتيجتان. أولاً، الترجمة عبء عمل حجمي: PDF طويل هو مئات الاستدعاءات الصغيرة، لذا يتراكم سعر كل token بسرعة. ثانياً، على عكس أعباء الاسترجاع حيث يقرأ النموذج بشكل أساسي، الترجمة تكتب بقدر ما تقرأ تقريباً، لذا سعر tokens المُخرَج يهم بقدر سعر المدخل عند مقارنة المعرّفات. يُخزِّن BabelDOC أيضاً الترجمات مؤقتاً، لذا إعادة تشغيل مستند يُعيد استخدام النتائج السابقة ما لم تُمرِّر --ignore-cache. ملفات CSV للمسرد (--glossary-files) تُثبِّت المصطلحات عبر التشغيل، وmax-pages-per-part يقسم المستندات الكبيرة جداً إلى أجزاء تُترجَم وتُدمَج تلقائياً.
الإعداد الكامل: أعلام CLI أو ملف إعداد TOML.
للاستخدام المتكرر، تعيش نفس الإعدادات في ملف TOML يُمرَّر بـ --config. جدول [babeldoc] يقبل نفس المفاتيح بصيغة kebab-case: openai، openai-model، openai-base-url، openai-api-key، بالإضافة إلى خيارات الإنتاجية والمُخرَج. هذا يُبقي المفتاح خارج تاريخ shell الخاص بك ويجعل ملف ترجمة قابلاً للتكرار عبر المستندات. الإعداد أدناه هو ملف حجمي عملي: معرّف سريع لغالبية المستندات، QPS مرفوع ليطابق بوابة مُجمَّعة، وكلا وضعَي المُخرَج محفوظان. بدّل openai-model إلى معرّف أقوى للمستندات حيث الدقة أهم من الإنتاجية.
[babeldoc]
lang-in = "en-US"
lang-out = "zh-CN"
qps = 10
pool-max-workers = 10
# Translation service
openai = true
openai-model = "deepseek-v4-flash"
openai-base-url = "https://api.apisrouter.com/v1"
openai-api-key = "sk-YOUR-APISROUTER-KEY"
# Output control
no-dual = false
no-mono = false
watermark-output-mode = "no_watermark"اختيار نموذج للترجمة.
سير عمل المقارنة ملموس: ترجم نفس عشر صفحات بمعرّفين (الذاكرة المؤقتة المُفتاحَة لكل تشغيل تُبقيهما منفصلين)، اقرأ النسختين المزدوجتين جنباً إلى جنب، وتحقّق من سجل الاستخدام لكل مفتاح لما كلّفه كل تمرير. معظم الفرق تستقر على افتراضي سريع بالإضافة إلى ملف مميز للمستندات التي تستحقه، كلاهما كملفات TOML.
- المستندات الحجمية (الأدلة، الأوراق التي تُقرأ مرة واحدة) تناسب deepseek-v4-flash: جودة الترجمة تصمد للنثر التقني وتكلفة كل صفحة قريبة من المُهمَل.
- الترجمة نحو الصينية هي أرض معروفة لـ glm-5.2 وعائلة DeepSeek؛ توثيق المشروع نفسه يشير إلى نماذج GLM وDeepSeek كاختيارات متوافقة جيداً مع OpenAI.
- المستندات الحساسة للدقة (العقود، الترجمات المنشورة) تُبرِّر claude-sonnet-4-6 أو claude-haiku-4-5-20251001، اللذَين يتتبعان المصطلحات والسجل اللغوي بأمانة أكبر عبر المستندات الطويلة.
- tokens المُخرَج تهم هنا. الترجمة تكتب بقدر ما تقرأ، لذا قارن المعرّفات على عمود سعر المُخرَج أيضاً، لا المدخل فقط.
- زاوج المسارد مع المعرّفات السريعة. ملف CSV للمسرد يُثبِّت المصطلحات التي تنحرف عنها النماذج السريعة أحياناً، ما يُغلِق معظم فجوة الجودة على النص التقني.
ادفع حسب الاستخدام · أقل من السعر الرسمي
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| النموذج | السعر الرسمي | سعرنا |
|---|---|---|
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
| GLM-5.2 | $1.14 / $4.00 per M | $1.10 / $4.00 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
أنماط الفشل وضبط الإنتاجية.
QPS هو المقبض الذي يتفاعل مع البوابة. الافتراضي 4 استعلامات في الثانية محافظ؛ سعة upstream المُجمَّعة تستدام عادة أكثر، ورفع --qps (مع اتباع pool-max-workers له) هو كيفية توقف مستند من 300 صفحة عن استغراق فترة بعد الظهر بأكملها. صعّده أثناء مراقبة استجابات 429 بدلاً من القفز إلى رقم كبير بدون تحضير، لأن فقرة مُقيَّدة المعدل تُعيد المحاولة وتُبطِئ التشغيل بأكمله. الأعلام تنطبق فقط عندما يكون --openai مضبوطاً. تمرير base URL بدون --openai يترك المترجم مُعطَّلاً، ما يظهر كتشغيل يحلّل PDF لكن لا يترجم أبداً. معرّفات النموذج سلاسل دقيقة مقابل سرد /v1/models الخاص بنقطة النهاية؛ خطأ إملائي يُفشِل أول استدعاء فقرة بـ model-not-found. 401 يعني أن المفتاح وbase URL لا ينتميان معاً. مشاكل التخطيط ليست مشاكل نقطة نهاية. النص المتداخل، الصيغ المفقودة، أو الجداول المكسورة تعود إلى جانب تحليل PDF (جرّب --enhance-compatibility، --ocr-workaround للمستندات المُمسوحة ضوئياً، أو مبدّل النص الغني)، وتبديل النماذج لن يُصلِحها. العكس صحيح أيضاً: المصطلحات المُترجَمة خطأً هي مشكلة نموذج أو مسرد، لا مشكلة مُحلِّل. الذاكرة المؤقتة يمكن أن تُخفي التغييرات. بعد تبديل النماذج، مرّر --ignore-cache إذا أردت أن يُعيد المعرّف الجديد ترجمة محتوى غطّاه المعرّف القديم؛ وإلا تبقى الفقرات المُخزَّنة مؤقتاً كما كانت.
من يوجّه BabelDOC عبر بوابة.
- الباحثون الذين يترجمون أوراقاً بالجملة، حيث مئات الاستدعاءات الصغيرة لكل مستند تجعل التسعير الحجمي ورؤية الاستخدام لكل مفتاح اللعبة بأكملها.
- الفرق التي تُوحِّد التوثيق ثنائي اللغة، تشغّل ملفاً افتراضياً سريعاً وملفاً مميزاً مقابل نفس نقطة النهاية بسلاسل نموذج مختلفة.
- المستخدمون في الأسواق حيث أقوى نماذج الترجمة لزوج لغتهم تجلس مع بائعين مختلفين: معرّفات GLM وDeepSeek وClaude وGemini كلها خلف مفتاح واحد.
- المستضيفون الذاتيون الذين يستبدلون الخدمة المُستضافة للمستندات السرية، مُبقين التحليل محلياً ومُرسِلين فقط نص الفقرة إلى نقطة نهاية واحدة قابلة للتدقيق.
- المطورون الذين لا يملكون وصولاً إلى فوترة بائع معيّن. الوصول القائم على تعبئة الرصيد بدون شرط بطاقة يزيل الاعتماد على التسجيل لكل مزوّد.
تحقق من نقطة النهاية وصحّح أخطاء أول مستند.
اسرد النماذج التي يمكن لمفتاحك مخاطبتها قبل بدء تشغيل طويل؛ --openai-model يجب أن يطابق معرّفاً مخدوماً تماماً. ثم ترجم شيئاً صغيراً جداً (PDF من صفحة واحدة، أو --pages 1 على واحد أكبر) من البداية إلى النهاية. 401 على أول فقرة يعني أن المفتاح لا يطابق base URL. model-not-found هو خطأ إملائي في المعرّف. تشغيل يحلّل لكن لا يستدعي نقطة النهاية أبداً يفتقد --openai. توقفات متكررة برسائل إعادة محاولة تشير إلى QPS مضبوط أعلى مما تستديمه نقطة النهاية؛ اخفضه ثم صعّده تدريجياً. بمجرد تدفّق المستندات، تعرض لوحة APIsRouter النموذج لكل طلب، وعدد tokens، والإنفاق. تكلفة الترجمة تتناسب مع طول المستند في كلا الاتجاهين (المدخل والمُخرَج)، وسجل الاستخدام لكل مفتاح هو كيفية معرفة تكلفتك الحقيقية لكل صفحة لكل نموذج بدلاً من تقديرها.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50
# then a one-page smoke test
babeldoc --config babeldoc.toml --files sample.pdf --pages 1الأسئلة الشائعة
هل يدعم BabelDOC نقاط نهاية مخصصة متوافقة مع OpenAI؟
نعم، بشكل أصيل. تعرض الواجهة --openai-base-url وopenai-api-key إلى جانب openai-model، ويقبل إعداد TOML نفس المفاتيح. توثيق المشروع ينص على أن نماذج LLM المتوافقة مع OpenAI هي نوع المترجم المدعوم.
هل يمكن لـ BabelDOC الترجمة بواسطة نماذج Claude أو GLM أو DeepSeek؟
نعم. معرّف النموذج يُمرَّر كسلسلة عادية إلى نقطة النهاية خلف --openai-base-url، لذا يعمل أي معرّف كتالوج. التوثيق نفسه يوصي بنماذج عائلتَي GLM وDeepSeek كاختيارات متوافقة جيداً.
كم استدعاء API يكلّف ملف PDF واحد؟
يترجم BabelDOC أجزاء بحجم فقرة، لذا يصبح المستند مئات من استدعاءات chat-completions الصغيرة المُقيَّدة بـ --qps. tokens المدخل والمُخرَج تتناسب مع طول المستند؛ سجل الاستخدام لكل مفتاح يُظهِر التكلفة الدقيقة لكل مستند.
ما هو QPS الذي يجب ضبطه مقابل بوابة؟
ابدأ قرب الافتراضي 4 وصعّد تدريجياً أثناء مراقبة استجابات 429؛ نقاط النهاية المُجمَّعة تستديم عادة أكثر، وpool-max-workers يتبع قيمة QPS ما لم تُضبَط بشكل منفصل. QPS أعلى مستقر هو الفرق بين دقائق وساعات على المستندات الطويلة.
بدّلت النماذج لكن الترجمة لم تتغيّر. لماذا؟
ذاكرة الترجمة المؤقتة. يُعيد BabelDOC استخدام النتائج المُخزَّنة لكل مستند؛ مرّر --ignore-cache بعد تغيير --openai-model حتى يُعيد المعرّف الجديد ترجمة المحتوى الذي غطّاه سابقاً.
هل يؤثر اختيار نقطة النهاية على التخطيط أو الصيغ أو الجداول؟
لا. التحليل وتحليل التخطيط وإعادة بناء PDF تعمل محلياً بغض النظر عن نقطة النهاية. مشاكل التخطيط لها أعلامها الخاصة (--enhance-compatibility، --ocr-workaround)؛ base URL يقرر فقط أي نموذج يترجم النص.