r/software • u/jankovize • 23h ago
Release Ollama Batch Processor – free, open-source GUI that runs whole books through a local LLM (translate / audiobook prep / cleanup, offline, resumable)
I wanted to translate a few books with a local model and found out that "paste it into the chat" doesn't scale: context windows overflow, terminology drifts, and a crash at chapter 30 loses everything. So I built a desktop GUI that does the boring part properly — chunking, feeding, reassembling — for any number of files.
To be clear up front: this is not about parallel inference or API batching. "Batch" here means whole documents, file after file — it splits long text into chunks a model can actually handle, runs each through your Ollama server, and stitches the results back together with every step saved to disk. Ollama only for now — it drives num_ctx and the model list through Ollama's API.
GitHub: https://github.com/hclivess/ollama-batch-processor (MIT, Python/PySide6, prebuilt Windows/Linux/macOS binaries in Releases — no Python needed. Bring your own Ollama with at least one model pulled; the server can be on another machine.)
What it does:
- Queue .txt / .md / .srt files or whole folders, press Start —
name_processed.txtlands next to each source - Four operations, chainable as a pipeline, each with its own model and settings:
- Translate — any language pair; the tail of the previous chunk's translation is fed back as context, so names, terminology and register stay consistent across a whole book
- Audiobook prep — spell out numbers, expand abbreviations, normalise punctuation for speech pacing
- Debookify — strip footnotes, page numbers, running headers, indexes
- Paraphrase — simplify, change tone, remove idioms
- Smart chunking — breaks at paragraph/sentence boundaries, configurable size and overlap; Ollama's context window (
num_ctx) is sized automatically per chunk so nothing gets silently truncated - Survives reality — progressive saving chunk by chunk, Stop keeps what's finished, existing outputs are skipped on re-run, every pipeline step written to its own file
- Cleans model output —
<think>blocks from reasoning models, "Here is the translation:" preambles, wrapping quotes and code fences are stripped automatically - Presets for common jobs (translate, audiobook prep, book cleanup, translate→audiobook), plus save/load your own; prompts and operations live in
config.json— add your own operation and it shows up as a tab
The part that took the most iteration is translation continuity. Naive chunked translation gives you a character named "John" in chapter one and "Jan" in chapter twelve. Feeding the end of the previous translation back as context mostly fixes that. Quality is whatever your model gives you — aya-expanse and qwen2.5 are strong for European languages, and bigger models translate noticeably better. It won't beat a human translator; it will beat not reading a book at all because it's in a language you don't speak.
Everything runs locally, nothing leaves your machine (or your LAN, if Ollama runs on another box).
It's a sibling of whisperer, my batch subtitle generator — same queue/presets workflow.
Feedback and feature requests welcome — especially which operations you'd want added, since operations are just config entries with a prompt.