Перекладайте 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 обирає id моделі. Власні приклади в README демонструють точно цей набір прапорців, а примітка про сервіс перекладу стверджує, що підтримуються лише OpenAI-сумісні LLM, що робить мультивендорний OpenAI-сумісний шлюз природним вибором, а не обхідним шляхом. Оскільки id моделі пересилається як звичайний рядок, працює все, що обслуговує ендпоінт: апстрим-документація сама рекомендує OpenAI-сумісно дружні моделі з родин GLM і DeepSeek, і через APIsRouter вони сидять поруч з id 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, і є self-hosted аналогом хостованого сервісу BabelDOC. Фаза перекладу — це те, де ендпоінт має значення. Документ перетворюється на багато запитів chat-completions розміром з абзац, обмежених прапорцем --qps (за замовчуванням 4 запити за секунду) і оброблюваних пулом воркерів (pool-max-workers, за замовчуванням дорівнює значенню QPS). Ця форма має два наслідки. По-перше, переклад — об'ємне навантаження: довгий PDF — це сотні маленьких викликів, тож ціна за токен швидко накопичується. По-друге, на відміну від навантажень пошуку, де модель здебільшого читає, переклад пише приблизно стільки ж, скільки читає, тож ціна вихідних токенів важлива не менше за вхідну при порівнянні id. 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, плюс опції пропускної здатності й виводу. Це тримає ключ поза історією вашої оболонки й робить профіль перекладу відтворюваним по документах. Конфігурація нижче — практичний об'ємний профіль: швидкий id для основної маси документів, QPS підняте відповідно до пулованого шлюзу, і обидва режими виводу збережені. Заміните openai-model на сильніший id для документів, де нюанс важливіший за пропускну здатність.
[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"Вибір моделі для перекладу.
Робочий процес порівняння конкретний: перекладіть ті самі десять сторінок двома id (кеш, прив'язаний до прогону, тримає їх окремо), читайте обидві версії поруч і перевіряйте лог використання за ключем на предмет вартості кожного проходу. Більшість команд зупиняються на швидкому варіанті за замовчуванням плюс преміум-профілі для документів, що на це заслуговують, обидва як TOML-файли.
- Об'ємні документи (мануали, статті, що читаються раз) підходять для deepseek-v4-flash: якість перекладу тримається на технічній прозі, а ціна за сторінку близька до нуля.
- Переклад на китайську — рідна гра для glm-5.2 і родини DeepSeek; сама апстрим-документація вказує на моделі GLM і DeepSeek як на добре поведінкові OpenAI-сумісні варіанти.
- Документи, критичні до нюансу (контракти, опубліковані переклади), виправдовують claude-sonnet-4-6 чи claude-haiku-4-5-20251001, які точніше тримають термінологію й регістр на довгих документах.
- Вихідні токени тут мають значення. Переклад пише стільки ж, скільки читає, тож порівнюйте id і за колонкою вихідної ціни, а не лише вхідної.
- Поєднуйте глосарії зі швидкими id. 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 запити за секунду консервативне; пулована апстрим-пропускна здатність зазвичай витримує більше, і підняття --qps (з pool-max-workers, що слідує за ним) — це те, як 300-сторінковий документ перестає займати цілий вечір. Піднімайте поступово, спостерігаючи за відповідями 429, а не стрибаючи на велике число з холодного старту, бо абзац, обмежений за швидкістю, повторює спробу й сповільнює весь прогін. Прапорці застосовуються лише коли встановлено --openai. Передача base URL без --openai лишає перекладач вимкненим, що проявляється як прогін, що розбирає PDF, але ніколи не перекладає. Id моделей — точні рядки проти лістингу /v1/models ендпоінта; одруківка провалює перший виклик абзацу з model-not-found. 401 означає, що ключ і base URL не належать одне одному. Проблеми верстки — це не проблеми ендпоінта. Накладений текст, втрачені формули чи зламані таблиці — це сторона розбору PDF (спробуйте --enhance-compatibility, --ocr-workaround для сканованих документів чи перемикач rich-text), і зміна моделей це не виправить. Зворотне теж вірне: невдало перекладена термінологія — це проблема моделі чи глосарія, а не парсера. Кеш може маскувати зміни. Після зміни моделі передайте --ignore-cache, якщо хочете, щоб новий id переклав заново контент, який уже покрив старий id; інакше кешовані абзаци лишаються такими, якими були.
Хто спрямовує BabelDOC через шлюз.
- Дослідники, що перекладають статті масово, де сотні маленьких викликів на документ роблять об'єктивне ціноутворення й видимість використання за ключем усією грою.
- Команди, що стандартизують білінгвальну документацію, запускаючи швидкий профіль за замовчуванням і преміум-профіль проти того самого ендпоінта з різними рядками моделі.
- Користувачі на ринках, де найсильніші моделі перекладу для їхньої мовної пари сидять у різних постачальників: id GLM, DeepSeek, Claude і Gemini усі за одним ключем.
- Self-hosters, що заміняють хостований сервіс для конфіденційних документів, тримаючи розбір локально й надсилаючи лише текст абзаців на один аудований ендпоінт.
- Розробники без доступу до білінгу певного постачальника. Доступ на основі поповнення без вимоги картки прибирає залежність від реєстрації в кожного провайдера.
Перевірте ендпоінт і налагодьте перший документ.
Перелічіть моделі, доступні вашому ключу, перш ніж починати довгий прогін; --openai-model має точно збігатися з обслуговуваним id. Потім перекладіть щось крихітне (одну сторінку PDF, чи --pages 1 на більшому) від початку до кінця. 401 на першому абзаці означає, що ключ не збігається з base URL. Model-not-found — це одруківка в id. Прогін, що розбирає, але ніколи не викликає ендпоінт, — відсутній --openai. Часті зупинки з повідомленнями про повтор вказують на QPS, встановлений вищим за те, що витримує ендпоінт; знизьте й піднімайте поступово. Щойно документи потечуть, консоль APIsRouter показує модель на запит, кількість токенів і витрати. Вартість перекладу масштабується з довжиною документа в обох напрямках (вхід і вихід), і лог використання за ключем — це те, як ви дізнаєтесь реальну вартість за сторінку для кожної моделі, а не оцінюєте її.
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-сумісні ендпоінти?
Так, нативно. CLI надає --openai-base-url і --openai-api-key поряд з --openai-model, а TOML-конфігурація приймає ті самі ключі. Апстрим-README стверджує, що OpenAI-сумісні LLM — це підтримуваний тип перекладача.
Чи може BabelDOC перекладати моделями Claude, GLM чи DeepSeek?
Так. Id моделі пересилається як звичайний рядок до ендпоінта за --openai-base-url, тож працює будь-який id каталогу. Апстрим-документація сама рекомендує моделі родин GLM і DeepSeek як добре поведінкові варіанти.
Скільки викликів API коштує один PDF?
BabelDOC перекладає шматки розміром з абзац, тож документ стає сотнями маленьких викликів chat-completions, обмежених --qps. І вхідні, і вихідні токени масштабуються з довжиною документа; лог використання за ключем показує точну вартість на документ.
Яке QPS встановлювати проти шлюзу?
Почніть близько значення за замовчуванням 4 і піднімайте, спостерігаючи за відповідями 429; пуловані ендпоінти зазвичай витримують більше, а pool-max-workers слідує за значенням QPS, якщо не встановлено окремо. Стабільне вище QPS — це різниця між хвилинами й годинами на довгих документах.
Я змінив модель, але переклад не змінився. Чому?
Кеш перекладу. BabelDOC перевикористовує кешовані результати на документ; передайте --ignore-cache після зміни --openai-model, щоб новий id переклав заново раніше покритий контент.
Чи впливає вибір ендпоінта на верстку, формули чи таблиці?
Ні. Розбір, аналіз верстки й перебудова PDF виконуються локально незалежно від ендпоінта. Проблеми верстки мають власні прапорці (--enhance-compatibility, --ocr-workaround); base URL вирішує лише те, яка модель перекладає текст.