Open-source project
Shirochi-stack/Glossarion avatar
Shirochi-stack/Glossarion

Glossarion: a PySide6 translation suite that pools API keys and fingerprints duplicates

Glossarion is a GUI utility for AI-assisted novel translation using OpenAI and Gemini APIs. It supports contextual translation, glossary generation, and EPUB rebuilding with full control.

125 stars18 forksPythonAGPL-3.0

At a glance

What is it?
A Python desktop suite for translating light novels, manga, subtitles and documents through dozens of model providers, with encrypted key pools, TF-IDF duplicate detection, a glossary system and a QA scanner. It ships four different requirements files, and only a handful of pins in any of them.
Who is it for?
Use Glossarion if you translate long-form text for publication and need the mechanical parts handled, chapter chunking, history export, duplicate detection, a glossary and a QA pass, and you have API keys or an OAuth subscription to point at it.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • Shirochi-stack/Glossarion125 ★ · +19
Star history
Repository2026-08-232026-10-21
Shirochi-stack/Glossarion106125

19 Stars in the last 59 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Six input formats, a manga panel, and one PySide6 window

The scope is wide and stated in one long sentence: light novels, web novels, manga, subtitles, synchronised lyrics and documents, in virtually any language, with preconfigured profiles for Korean, Japanese and Chinese. The formats named as input are EPUB, TXT, PDF, SRT, ASS and LRC, and there are two panels beyond ordinary text, one that translates comic archives and loose image files by combining several models, and one that edits translation memory exchange files for human correction. Providers number more than forty and include the large commercial labs plus local models served through Ollama, with the important addition that any OpenAI-compatible model or endpoint is accepted, which is what makes the provider list extensible rather than closed. The interface is PySide6, on Windows 10 and 11 and on macOS on both Apple Silicon and Intel.

Four requirements files, and only about seven pins between them

Dependency management here is a set of variants rather than a single lockable file. The root holds `requirements.txt` plus three more: one for macOS, one for machines with a CUDA build and one for machines without. The main file opens with a comment naming Python 3.12.9 and then lists a long dependency set covering the interface, the AI clients for four named vendors plus Google's and DeepL's, HTTP and async networking, text processing, Google's cloud services, Azure vision, and encryption. What it does not do is pin much. The upper bounds that appear are an image library held below version 12, numpy below 2.3, aiofiles below 25, protobuf below a 6.0 development release, and two Azure vision packages at exact versions, with a lower bound on one Google storage package. Everything else floats, so two machines installing on different days can end up with different versions.

PDF output has three candidate backends and two of them cost you

The PDF path is where the packaging constraints show, because the dependency file annotates each option with what it costs you. One is recommended for the best output quality and requires native runtime libraries from an MSVC environment, which is a real problem for a bundled application. A second is a pure Python fallback that can be bundled but supports only limited CSS. A third is present but commented out, with the note that it needs an external binary that cannot be bundled at all, so it is effectively ruled out. On the input side the story is simpler, with text extracted from source PDFs through one library. If you are packaging this yourself, the choice of PDF backend is a packaging decision rather than a quality one, and the annotations in the file tell you which way to lean.

Keys are encrypted, pooled, and rotated when a provider says 429

The reliability story is mostly about credentials. API keys are encrypted at rest using the cryptography library rather than stored as plain text in the configuration. Around that sits a key pool with rotation, rate limit caching and per-key health tracking, so a key that starts failing is deprioritised rather than retried forever. The retry system above it handles three failure classes, timeouts, truncated responses and server errors, with automatic retry, multi-key rotation and automatic failover specifically on rate limit and server error codes, plus exponential backoff for rate limits. Configuration is backed up automatically as JSON with atomic writes, so a crash mid-write does not leave you without settings. The readme also documents several subscription-based sign-in flows that sit outside the plain API key model, including an OAuth flow to use a ChatGPT subscription directly and browser login flows that keep several accounts in numbered slots or rotate automatically.

The glossary system extracts terms, then merges what it extracted twice

Terminology is handled as a first-class subsystem rather than a post-processing step. Terms are extracted with AI from EPUB and TXT sources, and the extraction is configurable: custom fields can be defined with their own prompts, so the same machinery can pull anything from character names to item names. Three source languages are named for the multi-language support, Korean, Japanese and Chinese, which matches the profile system rather than being a separate translation feature. Duplicates are expected, because the same term surfaces in several chapters, so merging strategies are part of the design, and import and export carry validation in both JSON and Markdown. Backups are automatic. Two of the three most recent release notes mention this subsystem specifically, one consolidating it and one describing more compact compression of it.

Duplicate detection runs on TF-IDF fingerprints rather than on reading

The component that decides whether output is a repeat is called AI Hunter, and its method is stated rather than implied. It uses content similarity analysis with TF-IDF semantic fingerprinting, structural pattern recognition, and statistical outlier detection, with configurable sensitivity thresholds that include a length ratio check. It also verifies key phrases and checks character names for consistency, which is the failure mode that matters most in fiction translation, where one name rendered two ways across a volume is the kind of defect a reader notices. The quality assurance suite around it scans for duplicate content, fragments left in the wrong language, spacing and formatting problems, and repetitive patterns, and it reports in four shapes: an interactive HTML report, JSON analysis, CSV exports, and summary statistics. The dependency file marks the similarity stack as optional, used for silent truncation detection in the scanner.

Manga translation needs two OCR backends, a bubble detector and inpainting

Comic pages are the hardest input in the suite and get the longest feature list. Text detection runs through Google Cloud Vision, with Azure's image analysis and document intelligence services named as alternative OCR backends, so a missing key on one cloud does not end the run. Speech bubbles are found by an ONNX-based detector trained for the purpose, with automatic segmentation for pages where bubbles overlap, and the full page image is passed to the model rather than cropped fragments, which is what allows tone to follow the character's expression and keeps wording consistent across bubbles on one page. Rendered text is styled with configurable fonts, colours, backgrounds, shadows and outlines, and the original text is removed by inpainting, either locally through ONNX or through a cloud service, with an option to preserve the original art untouched. Whole chapters can be processed in batch with stop, resume and progress tracking.

Three releases in two days, and a user guide named after one of them

The release pattern suggests active work rather than a settled tool. Three tagged versions landed within about two days in September 2026, two of them on the same day, and the notes are about routing and compression rather than features: a hot fix alongside a Gemini tier, new free routing with fixes, and before that new free routing, a consolidated glossary, more compact glossary compression and fixes. The user guide the readme points to carries that same date in its filename, so the documentation was rewritten on the day of the last two releases. Model access is organised by prefix, with each provider mapped to a prefix such as one for the OpenAI family, one for Gemini, one for Claude, and shorter ones for aggregators, some of which expose free variants, and the same prefix scheme is what lets a custom endpoint slot in. The project is AGPL-3.0 licensed, not archived, and the last push to main is dated September 27, 2026.

Editorial conclusion

Use Glossarion if you translate long-form text for publication and need the mechanical parts handled, chapter chunking, history export, duplicate detection, a glossary and a QA pass, and you have API keys or an OAuth subscription to point at it. Do not pick it for a one-off sentence, and do not expect a pinned, reproducible environment, because the main requirements file names a Python version and leaves most packages floating, with separate files for macOS and for machines with and without a CUDA build. Before you rely on it, read the user guide named in the readme, check which of the two PDF backends you can actually bundle, and confirm the OAuth flows you need are the ones you have credentials for.

Frequently asked questions

What is a glossary in a book?

In Glossarion it is a managed term list rather than a table at the back of the volume. Terms are extracted with AI from EPUB and TXT files, custom fields can be defined with their own prompts, duplicates are merged by strategy, and the result imports and exports in JSON and Markdown with validation and automatic backups.

What is the purpose of a glossary of terms?

Keeping one rendering of a term across a long translated work. Glossarion supports Korean, Japanese and Chinese sources through its profile system, extracts terms automatically, and separately checks character name consistency as part of its duplicate and quality scanning, which is the same problem seen from the output side.

Which file formats can Glossarion translate?

EPUB, TXT, PDF, SRT, ASS and LRC on the input side, plus comic archives and image files through the manga panel. EPUB translation preserves structure, metadata and covers, TXT gets chapter detection and encoding detection, and PDF text is extracted with PyMuPDF.

How does Glossarion handle API keys and rate limits?

Keys are encrypted at rest with the cryptography library and held in a pool with rotation, rate limit caching and per-key health tracking. Retries cover timeouts, truncated responses and server errors, with multi-key rotation and automatic failover on rate limit and server error codes, plus exponential backoff.

What does Glossarion need installed, and is the environment pinned?

The root holds four dependency files: the main one, a macOS variant, and separate ones for machines with and without a CUDA build. The main file names Python 3.12.9 and pins only a handful of upper bounds, with most packages floating, and the PDF backend you choose affects what has to be bundled.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/shirochi-stack-glossarion.svg)](https://hysenlabs.com/projects/shirochi-stack-glossarion)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/shirochi-stack-glossarion.svg)](https://hysenlabs.com/projects/shirochi-stack-glossarion)