PDFs mit BabelDOC auf einer custom OpenAI Base URL übersetzen.

Updated 2026-07-30

BabelDOCs Übersetzer ist von Haus aus OpenAI-kompatibel: drei Flags (--openai, --openai-base-url, --openai-api-key) plus --openai-model wählen Endpoint und Modell. Zeig die Base URL auf https://api.apisrouter.com/v1 und übersetze Dokumente mit Claude, DeepSeek, GLM oder Gemini über einen Key.

Kurzantwort: drei Flags routen jeden Übersetzungs-Call.

BabelDOCs Kommandozeile nimmt den Endpoint direkt: --openai aktiviert den LLM-Übersetzer, --openai-base-url setzt, wohin Requests gehen, --openai-api-key authentifiziert, und --openai-model wählt die Modell-ID. Die eigenen Beispiele des READMEs zeigen genau dieses Flag-Set, und der Hinweis zum Übersetzungsdienst besagt, dass nur OpenAI-kompatible LLMs unterstützt werden, was ein Multi-Vendor-OpenAI-kompatibles Gateway zur natürlichen Wahl macht statt zu einem Workaround. Weil die Modell-ID als reiner String weitergereicht wird, funktioniert alles, was der Endpoint bedient: die Upstream-Docs selbst empfehlen OpenAI-kompatibel-freundliche Modelle aus den Familien GLM und DeepSeek, und über APIsRouter sitzen die neben Claude- und Gemini-IDs hinter derselben 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"

Wie BabelDOC ein PDF in Modell-Calls verwandelt.

BabelDOC (funstory-ai auf GitHub, rund 9.000 Stars, vom Team hinter Immersive Translate) ist ein PDF-Dokumentübersetzer, der das Layout erhält: er parst die Dokumentstruktur, schützt Formeln und Abbildungen, findet Absätze, übersetzt sie mit einem LLM und baut das PDF als übersetzte Mono-Version und eine gegenübergestellte Dual-Version wieder auf. Es kommt als CLI und Python-API und ist das selbst gehostete Gegenstück zum gehosteten BabelDOC-Dienst. Die Übersetzungsphase ist, wo der Endpoint zählt. Ein Dokument wird zu vielen absatzgroßen Chat-Completions-Requests, gedrosselt durch das --qps-Flag (Standard 4 Abfragen pro Sekunde) und verarbeitet durch einen Worker-Pool (pool-max-workers, standardmäßig der QPS-Wert). Diese Form hat zwei Konsequenzen. Erstens: Übersetzung ist eine Volumen-Workload: ein langes PDF sind Hunderte kleiner Calls, also summiert sich der Preis pro Token schnell. Zweitens: anders als bei Retrieval-Workloads, wo das Modell hauptsächlich liest, schreibt Übersetzung ungefähr so viel, wie sie liest, also zählt der Output-Token-Preis genauso viel wie der Input-Preis, wenn du IDs vergleichst. BabelDOC cacht auch Übersetzungen, also nutzt ein erneuter Lauf eines Dokuments frühere Ergebnisse wieder, sofern du nicht --ignore-cache übergibst. Glossar-CSVs (--glossary-files) pinnen Terminologie über den Lauf hinweg, und --max-pages-per-part teilt sehr große Dokumente in Teile, die automatisch übersetzt und zusammengeführt werden.

Vollständiges Setup: CLI-Flags oder die TOML-Config-Datei.

Für wiederholte Nutzung leben dieselben Einstellungen in einer TOML-Datei, übergeben mit --config. Die [babeldoc]-Tabelle akzeptiert die identischen Keys in Kebab-Case: openai, openai-model, openai-base-url, openai-api-key, plus die Durchsatz- und Output-Optionen. Das hält den Key aus deiner Shell-History raus und macht ein Übersetzungsprofil über Dokumente hinweg reproduzierbar. Die Config unten ist ein praktisches Volumenprofil: eine schnelle ID für die Masse der Dokumente, QPS angehoben, um zu einem gepoolten Gateway zu passen, und beide Output-Modi beibehalten. Tausch openai-model gegen eine stärkere ID für Dokumente, bei denen Nuance mehr zählt als Durchsatz.

[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"

Ein Übersetzungsmodell wählen.

Der Vergleichs-Workflow ist konkret: übersetze dieselben zehn Seiten mit zwei IDs (der Cache, geschlüsselt pro Lauf, hält sie getrennt), lies die Duals nebeneinander, und prüfe das Nutzungslog pro Key für die Kosten jedes Durchgangs. Die meisten Teams landen bei einem schnellen Default plus einem Premium-Profil für Dokumente, die es verdienen, beide als TOML-Dateien.

  • Volumen-Dokumente (Handbücher, einmal gelesene Papers) passen zu deepseek-v4-flash: die Übersetzungsqualität hält bei technischer Prosa, und die Kosten pro Seite sind fast vernachlässigbar.
  • Übersetzung mit chinesischem Ziel ist ein Heimspiel für glm-5.2 und die DeepSeek-Familie; die Upstream-Docs selbst verweisen auf GLM- und DeepSeek-Modelle als wohlerzogene OpenAI-kompatible Wahlen.
  • Nuance-kritische Dokumente (Verträge, veröffentlichte Übersetzungen) rechtfertigen claude-sonnet-4-6 oder claude-haiku-4-5-20251001, die Terminologie und Register über lange Dokumente treuer verfolgen.
  • Output-Token zählen hier. Übersetzung schreibt so viel, wie sie liest, vergleiche IDs also auch in der Output-Preis-Spalte, nicht nur bei Input.
  • Kombiniere Glossare mit schnellen IDs. Ein Glossar-CSV pinnt die Terminologie, bei der schnelle Modelle gelegentlich abdriften, was einen Großteil der Qualitätslücke bei technischem Text schließt.

Nutzungsbasiert · unter offiziellem Preis

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModellOffizieller PreisUnser Preis
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

Fehlerbilder und Durchsatz-Tuning.

QPS ist der Regler, der mit dem Gateway interagiert. Der Standard von 4 Abfragen pro Sekunde ist konservativ; gepoolte Upstream-Kapazität trägt meist mehr, und --qps zu erhöhen (mit pool-max-workers, das folgt) ist, wie ein 300-Seiten-Dokument aufhört, den ganzen Nachmittag zu beanspruchen. Fahr es hoch, während du auf 429-Antworten achtest, statt kalt auf eine große Zahl zu springen, weil ein ratenlimitierter Absatz erneut versucht und den ganzen Lauf verlangsamt. Die Flags gelten nur, wenn --openai gesetzt ist. Eine Base URL ohne --openai zu übergeben lässt den Übersetzer deaktiviert, was sich als Lauf zeigt, der das PDF parst, aber nie übersetzt. Modell-IDs sind exakte Strings gegen die /v1/models-Liste des Endpoints; ein Tippfehler lässt den ersten Absatz-Call mit model-not-found scheitern. Ein 401 bedeutet, Key und Base URL gehören nicht zusammen. Layout-Probleme sind keine Endpoint-Probleme. Überlappender Text, verlorene Formeln oder kaputte Tabellen gehen auf die PDF-Parsing-Seite zurück (probier --enhance-compatibility, --ocr-workaround für gescannte Dokumente, oder den Rich-Text-Toggle), und Modelle zu wechseln behebt sie nicht. Umgekehrt gilt auch: falsch übersetzte Terminologie ist ein Modell- oder Glossar-Problem, kein Parser-Problem. Der Cache kann Änderungen maskieren. Nach einem Modellwechsel übergib --ignore-cache, wenn die neue ID Inhalte neu übersetzen soll, die die alte ID schon abgedeckt hat; sonst bleiben gecachte Absätze, wie sie waren.

Wer BabelDOC über ein Gateway routet.

  • Forscher, die Papers in großen Mengen übersetzen, wo Hunderte kleine Calls pro Dokument Volumenpreise und Sichtbarkeit der Nutzung pro Key zum ganzen Spiel machen.
  • Teams, die zweisprachige Dokumentation standardisieren und ein schnelles Default-Profil sowie ein Premium-Profil gegen denselben Endpoint mit unterschiedlichen Modell-Strings laufen lassen.
  • Nutzer in Märkten, wo die stärksten Übersetzungsmodelle für ihr Sprachpaar bei verschiedenen Vendoren sitzen: GLM-, DeepSeek-, Claude- und Gemini-IDs alle hinter einem Key.
  • Self-Hoster, die den gehosteten Dienst für vertrauliche Dokumente ersetzen, Parsing lokal behalten und nur Absatztext an einen auditierbaren Endpoint schicken.
  • Entwickler ohne Zugang zum Billing eines bestimmten Vendors. Guthabenbasierter Zugang ohne Kartenpflicht entfernt die Sign-up-Abhängigkeit pro Provider.

Endpoint verifizieren und das erste Dokument debuggen.

Liste die Modelle, die dein Key adressieren kann, bevor du einen langen Lauf startest; --openai-model muss exakt zu einer bedienten ID passen. Übersetz dann etwas Winziges (ein einseitiges PDF, oder --pages 1 auf einem größeren) von Anfang bis Ende. Ein 401 auf dem ersten Absatz bedeutet, der Key passt nicht zur Base URL. Model-not-found ist ein ID-Tippfehler. Ein Lauf, der parst, aber nie den Endpoint ruft, dem fehlt --openai. Häufige Stockungen mit Retry-Meldungen weisen auf QPS höher als der Endpoint trägt hin; senk es und fahr wieder hoch. Sobald Dokumente fließen, zeigt die APIsRouter-Konsole Modell, Token-Zahlen und Ausgaben pro Anfrage. Übersetzungskosten skalieren mit der Dokumentlänge in beide Richtungen (Input und Output), und das Nutzungslog pro Key ist, wie du deine echten Kosten pro Seite für jedes Modell lernst, statt sie zu schätzen.

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

Häufige Fragen

Unterstützt BabelDOC custom OpenAI-kompatible Endpoints?

Ja, nativ. Die CLI stellt --openai-base-url und --openai-api-key neben --openai-model bereit, und die TOML-Config akzeptiert dieselben Keys. Das Upstream-README besagt, dass OpenAI-kompatible LLMs der unterstützte Übersetzertyp sind.

Kann BabelDOC mit Claude-, GLM- oder DeepSeek-Modellen übersetzen?

Ja. Die Modell-ID wird als reiner String an den Endpoint hinter --openai-base-url weitergereicht, also funktioniert jede Katalog-ID. Die Upstream-Docs selbst empfehlen Modelle der GLM- und DeepSeek-Familie als wohlerzogene Wahlen.

Wie viele API-Calls kostet ein PDF?

BabelDOC übersetzt absatzgroße Häppchen, also wird ein Dokument zu Hunderten kleinen Chat-Completions-Calls, gedrosselt durch --qps. Sowohl Input- als auch Output-Token skalieren mit der Dokumentlänge; das Nutzungslog pro Key zeigt die exakten Kosten pro Dokument.

Welches QPS sollte ich gegen ein Gateway setzen?

Starte nahe am Standard von 4 und fahr hoch, während du auf 429-Antworten achtest; gepoolte Endpoints tragen meist mehr, und pool-max-workers folgt dem QPS-Wert, sofern nicht separat gesetzt. Ein stabiles höheres QPS ist der Unterschied zwischen Minuten und Stunden bei langen Dokumenten.

Ich habe Modelle gewechselt, aber die Übersetzung hat sich nicht geändert. Warum?

Der Übersetzungs-Cache. BabelDOC nutzt gecachte Ergebnisse pro Dokument wieder; übergib --ignore-cache nach dem Ändern von --openai-model, damit die neue ID zuvor abgedeckten Inhalt neu übersetzt.

Beeinflusst die Endpoint-Wahl Layout, Formeln oder Tabellen?

Nein. Parsing, Layout-Analyse und PDF-Rekonstruktion laufen lokal, unabhängig vom Endpoint. Layout-Probleme haben eigene Flags (--enhance-compatibility, --ocr-workaround); die Base URL entscheidet nur, welches Modell den Text übersetzt.