Pantogloss
Pantogloss is a TensorFlow/Keras library that translates text from many languages into English. It provides a Python API, command-line interface, and optional persistent local server with a browser UI.
The default public model is
pantogloss-500-en-compact,
a 538 MiB model validated on NVIDIA CUDA and Apple Metal. Model weights are
downloaded separately from Hugging Face and are never bundled in the Python
wheel. Public models normally require no Hugging Face login.
What it can do
- Translate individual strings, batches, files, and bounded input streams.
- Run on CPU, NVIDIA CUDA, or Apple Silicon Metal.
- Keep a model resident behind a local HTTP API for fast repeated requests.
- Provide a simple Any language → English browser translator.
- Offer fast greedy and higher-quality beam-search decoding presets.
- Return plain strings or structured results with timing and runtime metadata.
- Attach caller-supplied language quality guidance and conservative warnings.
- Preserve input order and isolate individual failures in long-running streams.
Pantogloss translates text; it does not detect the source language or parse document formats. See Project scope.
Installation
Pantogloss supports Python 3.10–3.12. Use the extra for your accelerator:
# CPU
python -m pip install pantogloss
# NVIDIA GPU on Linux
python -m pip install "pantogloss[cuda]"
# Apple Silicon Metal
python -m pip install "pantogloss[metal]"
# Persistent API and browser UI; combine with cuda or metal when needed
python -m pip install "pantogloss[server,metal]"
The first use downloads the selected model. Later loads use the local Hugging Face cache.
Python API
Load one translator and reuse it:
from pantogloss import Translator
translator = Translator.from_pretrained(device="auto")
print(translator.translate("Comment allez-vous ?"))
Translate a batch or request structured results:
translations = translator.translate([
"Hola señor",
"Wie geht es Ihnen?",
])
result = translator.translate_detailed("Bonjour le monde.")
print(result.text)
print(result.elapsed_seconds, result.execution_device)
For a large iterable, translate_iter() and translate_iter_detailed() process
bounded batches without retaining the complete input or output collection.
with open("source.txt", encoding="utf-8") as source:
for translation in translator.translate_iter(source, batch_size=16):
print(translation)
Use the quality preset when latency is less important than beam-search quality:
print(translator.translate("Comment allez-vous ?", preset="quality"))
Command line
pantogloss translate "Comment allez-vous ?"
pantogloss translate --preset quality "Comment allez-vous ?"
pantogloss translate --input source.txt --output english.txt --batch-size 16
pantogloss models
pantogloss info --device gpu --json
pantogloss doctor
Translation output stays clean on stdout. Use --verbose, --report, or
--tensorflow-logs when diagnostics are wanted. Use --offline to require an
already cached model.
Persistent server and browser UI
Each standalone CLI invocation reloads the model. For repeated requests, keep one warmed translator in memory:
python -m pip install "pantogloss[server,metal]" # or server,cuda
pantogloss serve --device gpu
Open http://127.0.0.1:8765/ for the two-pane browser translator. The same
process exposes:
GET /healthGET /infoPOST /translate
curl http://127.0.0.1:8765/translate \
-H 'Content-Type: application/json' \
-d '{"text":"Comment allez-vous ?"}'
The server binds to loopback, warms the model before reporting readiness, and serializes inference by default. See the Server and Web UI wiki page for deployment, authentication, limits, API schemas, and benchmarks.
Models
| Name | Role | Approximate artifact size |
|---|---|---|
pantogloss-500-en-compact |
Recommended default | 538 MiB |
pantogloss-500-en-fp16 |
Accelerator-oriented FP16 reference | 1.02 GiB |
pantogloss-500-en |
Historical FP32 numerical reference | 2.03 GiB |
pantogloss-500-en-int8 |
Smaller experimental alternative | 539 MiB |
Select a model explicitly when needed:
translator = Translator.from_pretrained("pantogloss-500-en-fp16", device="gpu")
The compact model retains the best tested balance of size, quality, memory, and speed. The INT8 alternative is not the default because it is substantially slower. Detailed evidence and backend caveats live in the wiki and checked-in experiment reports.
Documentation
- Installation and Quickstart
- Server and Web UI
- Decoding Presets
- Platform Validation
- Language Quality Catalog
- Quality Evaluation
- Development and Testing
- Tika Document Translation
The repository also retains reproducible model-conversion, parity, compression,
and evaluation artifacts under docs and evaluation.
Project scope
Pantogloss translates text and ordered text segments. It intentionally does not
identify languages, detect file types, or parse documents. DocumentTranslator
is a neutral text-segmentation helper. pantogloss-tika remains a compatibility
example and is not a direction for new core dependencies. See the
architecture boundary.
Translation quality varies by language, domain, and input. Pantogloss does not provide calibrated confidence and should not be relied on without review for medical, legal, safety-critical, or other high-stakes decisions.
Provenance and license
The original model was described by Thamme Gowda, Zhao Zhang, Chris A. Mattmann, and Jonathan May in Many-to-English Machine Translation Tools, Data, and Pretrained Models, ACL-IJCNLP 2021 System Demonstrations, DOI 10.18653/v1/2021.acl-demo.37.
Pantogloss and its converted models are licensed under the Apache License, Version 2.0. See NOTICE for attribution.
Release files for pantogloss 0.17.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pantogloss-0.17.0.tar.gz | 203.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pantogloss-0.17.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 293.8 kB
Release files / pantogloss-0.17.0.tar.gz
| Download URL | pantogloss-0.17.0.tar.gz |
|---|---|
| Size | 203.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d78c44af2727799625797b6e9314a370dd63227bb47b6099cb7ab1e6b9ad569f
|
|
BLAKE2b-256 checksum How to use checksums |
efd7f60ed24236b67e886468d47fe2d4577a7473d748352a758a03a0e1a27ec4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.
Transparency logRelease files / pantogloss-0.17.0-py3-none-any.whl
| Download URL | pantogloss-0.17.0-py3-none-any.whl |
|---|---|
| Size | 90.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
098da3f8f83ceadb1e12f1b797278d465ff29d89aecf95d65a81ac18eca4ed0b
|
|
BLAKE2b-256 checksum How to use checksums |
f1d5cd22995e1f6970fb447affe87b84d5c13a09a85dadeb02880a39f7c0a200
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.
Transparency log