BookTranslator
BookTranslator

Jak překládat dlouhé dokumenty s lokálním LLM: Chunkování a kontroly

Přeložili jsme 3 179 slov pomocí lokálního LLM v LM Studio třemi způsoby a každý skrýval tichou chybu. Velikost chunků, nastavení a kontroly, které je odhalí.

BookTranslator

BookTranslator Team

12 min read

Lidé překládají dokumenty s lokálním LLM z jednoho důvodu: soubor nesmí opustit jejich počítač. Lokální model práci zvládne, ale dá vám prostý text, ne přeložený soubor, a jeho nejhorší chyby jsou tiché. V našem testu jeden požadavek na 3 179 slov dlouhý výňatek vrátil správný počet odstavců a čistý signál dokončení, přesto jeden odstavec ztratil více než třetinu obsahu a získal věty, které ve zdroji nejsou.

Krátká odpověď: rozdělte text na hranicích odstavců na chunky o přibližně 600 slovech, vložte glosář jmen a opakujících se termínů do systémové instrukce, vypněte modelový režim přemýšlení a každý chunk porovnejte se zdrojovým odstavcem odstavec po odstavci, než mu uvěříte. Každý ze tří způsobů, kterými jsme test provedli, někde selhal a žádné selhání nevyprodukovalo chybovou zprávu. Očekávejte, že středně velký model na notebooku bude na celou knihu potřebovat hodiny, a počítejte s tím, že formátování budete muset sestavit sami.

Vše níže pochází z jednoho běhu dne 23. října 2026: Qwen 3.6 27B (Q4_K_M GGUF) v LM Studio 0.4.8 na Apple M4 Max s 64 GB paměti, překládající začátek Kafkovy Die Verwandlung z němčiny do angličtiny. Testovací skript, výsledky a surové příklady selhání si můžete zdarma stáhnout a zopakovat test s vlastním modelem.

Kdy je lokální LLM správný nástroj

Překlad spouštějte lokálně, když o tom rozhodují pravidla dokumentu, ne pohodlí:

  • klientská smlouva, výzkumná dohoda nebo firemní směrnice zakazuje nahrát soubor do externí služby;
  • text je osobní nebo důvěrný a citlivé části nelze předem odstranit; nebo
  • potřebujete zpracovat mnoho souborů bez nákladů na dokument a již vlastníte vhodný hardware.

Pokud neplatí žádný z těchto bodů, je lokální model obvykle pomalejší cestou k horšímu výsledku. Vzdáváte se tří věcí, které služba pro překlad dokumentů poskytuje: přeloženého souboru v původním formátu, modelu většího, než se vejde do vašeho počítače, a pracovního postupu navrženého pro konzistenci v celé knize. Než si vyberete kteroukoli cestu, projděte si kontrolní seznam ochrany soukromí při překladu dokumentů. Pokrývá oprávnění ke zpracování souboru, minimální pracovní kopie a to, co služba dělá s nahranými soubory.

„Lokální“ také potřebuje přesný význam. Model běží na vašem počítači a v našem testu požadavky směřovaly pouze na localhost. To vám ale neřekne, co aplikace kolem modelu zaznamenává, aktualizuje nebo hlásí. Pokud vaše pravidla vyžadují důkaz, že nic neopustí zařízení, zkontrolujte vlastní nastavení a zásady běhového prostředí, nebo jej spusťte na počítači bez přístupu k síti.

Co jsme testovali

Přeložili jsme prvních 19 odstavců Die Verwandlung (3 179 německých slov) z veřejně dostupného vydání Project Gutenberg. Literární němčina je spravedlivý zátěžový test: odstavce jsou dlouhé, věty se vnořují a stejné postavy a pracovní tituly se opakují.

Všechny tři běhy použily stejný model a nastavení: teplota 0,2, maximálně 12 000 výstupních tokenů a kontextové okno 16 384 tokenů. Instrukce žádala jeden anglický odstavec na jeden německý odstavec a nic jiného.

BěhCo jsme odeslaliOdstavců ven (zdroj: 19)Slov venČas
A. Po chuncích6 chunků o přibližně 600 slovech, pouze instrukce193,31910,4 min
B. Po chuncích + glosář + kontextStejné části, glosář se 7 termíny a předchozí odstavec zdroje označený „NEPŘEKLÁDAT“203,44610,5 min
C. Jeden požadavekVšech 19 odstavců najednou193,3099,5 min

Každý běh skončil normálním signálem k zastavení a každý běh obsahoval jinou tichou chybu. Běh C vypustil a vymyslel text. Běh B přeložil text, u kterého mu bylo řečeno, aby ho přeskočil. Běh A, nejčistší, dal v poslední části jedné postavě špatnou roli.

Selhání 1: Jeden velký požadavek vypustil část odstavce

Běh C skončil normálně a vrátil přesně 19 odstavců. Kontrola počtu odstavců by ho propustila. Odstavec 6 se však vrátil se 214 slovy oproti 260 slovům zdroje.

Ve zdroji se Gregor podívá na hodiny, uvědomí si, že mu ujel vlak, a pak zvažuje, že se omluví jako nemocný: jeho šéf by přijel s lékařem zdravotní pojišťovny, který každého považuje za zdravého, ale work-shy, a Gregor připouští, že se vlastně cítí dobře, kromě ospalosti a neobvyklé chuti k jídlu. Běh C přeložil první část, pak vypustil celou pasáž o nemocenské, 98 z 260 německých slov odstavce. Místo toho napsal, že Gregor „by byl na místě propuštěn“, že úřední asistent má „sklon vidět vše, co se mu nahlásí, jako příležitost se předvést“, a že ta myšlenka „mu vykouzlila úsměv na rtech“. Nic z toho v němčině není.

Rozdělený běh přeložil stejný odstavec úplně, se 267 slovy.

Jeden vzorek nedokazuje, že dlouhé požadavky vždy selžou. Ukazuje však, co kontrolovat: dlouhý jediný požadavek může tiše zkomprimovat nebo vymyslet text, a přitom stále vypadat strukturálně úplný. Čtenář bez znalosti němčiny by neměl důvod si toho všimnout.

Selhání 2: Model přeložil „kontext“, u kterého mu bylo řečeno, aby ho přeskočil

Častý tip je posílat s každou částí předchozí odstavec, aby model udržel nit. V běhu B jsme ho přidali do zprávy pod označením „Kontext (již přeloženo, NEPŘEKLÁDAT)“.

Ve čtvrté části ho model přesto přeložil. Část vrátila čtyři odstavce za tři odstavce zdroje a první byl druhým překladem posledního odstavce třetí části. Po spojení by kniha obsahovala tento odstavec dvakrát, pokaždé jinak formulovaný.

Praktické pravidlo: pokud posíláte kontext, držte ho mimo text, který má model překládat, držte ho krátký a kontrolujte počet odstavců každé části. Pokud nemůžete kontrolovat, vynechte ho.

Selhání 3: Část poslaná samostatně dala postavě špatnou roli

Běh A posílal každou část bez glosáře a bez kontextu. U prvních pěti částí to fungovalo dobře: Prokurist se stal „hlavním úředníkem“ na všech 16 místech, kde se objevil. Šestá část byla jediný odstavec, v němž hlavní úředník kárá Gregora přes dveře. Při samostatném pohledu model přeložil der Prokurist jako „obchodní cestující“, což je Gregorova vlastní práce. Počet odstavců odpovídal a poměr délky byl 1,00, takže si toho žádná strukturální kontrola nevšimla.

V běhu B, který měl glosář v systémové instrukci a předchozí odstavec jako kontext, stejný odstavec správně použil „hlavního úředníka“. Tento test nemůže říci, které z těch dvou to napravilo. Protože kontext také způsobil selhání 2, glosář je bezpečnější místo pro přenášení jmen a rolí z části do části: je krátký, sedí v instrukci a můžete ho mechanicky zkontrolovat.

Postup, který obstál

1. Nejprve získejte z souboru prostý text

Lokální LLM překládá text, ne soubory. Před začátkem dokument převeďte:

  • DOCX nebo EPUB: exportujte do prostého textu nebo Markdownu s jedním odstavcem na blok a nadpisy ponechte jako samostatné řádky.
  • PDF s textovou vrstvou: extrahujte text a poté opravte zalomené řádky a dělení slov. Náš průvodce opravou zalomení řádků a dělení slov z OCR pokrývá stejné čištění. Převodník, jako je Docling, může vytvořit Markdown z PDF a souborů Office.
  • Naskenované PDF: nejprve spusťte OCR. Pokud si nejste jisti, zda má PDF použitelný text, podívejte se na Extrakce textu z PDF vs. OCR.

Zachovejte strukturu odstavců. Každá pozdější kontrola závisí na vzájemném souladu mezi zdrojovým a přeloženým odstavcem.

2. Vypněte režim přemýšlení a potvrďte to

Mnoho současných otevřených modelů před odpovědí uvažuje. U překladu to plýtvá časem i výstupními tokeny. V našem nastavení testovací požadavek o 200 tokenech spotřeboval 199 tokenů na uvažování a vrátil prázdnou odpověď.

Vyzkoušeli jsme tři běžné přepínače. Přidání /no_think do promptu nic neudělalo a chat_template_kwargs s enable_thinking: false také nic. Odeslání "reasoning_effort": "none" v požadavku uvažování vypnulo: odpověď hlásila 0 tokenů uvažování a vrátila překlad přímo. Tento parametr není uveden na stránce chat completions LM Studio, takže jej berte jako chování, které jsme pozorovali ve verzi 0.4.8 s tímto modelem. Raději kontrolujte počet reasoning_tokens ve svých vlastních odpovědích, než abyste věřili nějakému přepínači.

3. Nastavte velikost kontextového okna před dělením na části

Kontextové okno musí pojmout instrukci, část i celý překlad. V našich bězích s dělením spotřebovala německá část o 500 až 670 slovech přibližně 800 až 1 500 vstupních tokenů v závislosti na slovníku a kontextu a 640 až 870 výstupních tokenů, takže několik tisíc tokenů stačí. Jediný požadavek o 3 179 slovech potřeboval 4 953 vstupních tokenů a 3 930 výstupních tokenů.

Ollama nastavuje výchozí délku kontextu podle dostupné paměti: 4 tisíce tokenů pod 24 GiB VRAM, 32 tisíc od 24 do 48 GiB a 256 tisíc při 48 GiB nebo více, podle její dokumentace k délce kontextu ověřené 23. října 2026. Můžete ji zvýšit pomocí OLLAMA_CONTEXT_LENGTH. V LM Studio nastavte délku kontextu při načítání modelu. Pokud se část plus její překlad nevejdou, výstup může být zkrácen.

4. Dělte na hranicích odstavců, přibližně po 600 slovech

Nikdy nedělte uvnitř odstavce nebo věty. Naše části cílily na 700 slov a končily na nejbližší hranici odstavce, což vytvořilo šest částí o 243 až 667 slovech. Menší části stojí málo: běh A trval 10,4 minuty oproti 9,5 minuty u jediného požadavku a neúspěšnou část lze levně zopakovat.

Udržujte instrukci krátkou a stejnou pro každou část. Ta naše zněla: přeložte do angličtiny, zachovejte přesně jeden výstupní odstavec na vstupní odstavec oddělený prázdným řádkem a vypište pouze překlad. Ke stejné instrukci přidejte slovník: jeden řádek na jméno, titul nebo opakující se termín ve formátu Prokurist = chief clerk. Náš průvodce sestavením překladového slovníku pokrývá, co zahrnout. Krátké části ztrácejí okolní příběh a slovníček je to, co ho nese.

5. Zkontrolujte každou část, než je spojíte

U každé části proveďte tři kontroly:

  1. Počet odstavců. Výstup musí mít stejný počet odstavců jako vstup. Tím se odhalila chyba 2.
  2. Poměr délky na odstavec. Porovnejte počet slov každého přeloženého odstavce s jeho zdrojem. Tím se odhalila chyba 1, kterou počet odstavců nezachytil.
  3. Termíny ze slovníku na odstavec. Kde se vyskytuje zdrojový termín, měl by se jeho požadovaný překlad vyskytovat stejněkrát. Tím se odhalila chyba 3, kterou obě ostatní kontroly minuly. U flektivních jazyků zde bude potřeba určitý úsudek, protože německý nebo ruský termín mění tvar.

U německé prózy přeložené do angličtiny se odstavce běhu A držely mezi 0,98 a 1,17 slova na výstupu na slovo na vstupu. Poškozený odstavec běhu C měl 0,82. Nastavte si vlastní rozsah kontrolou několika odstavců, kterým ve vaší jazykové dvojici důvěřujete; výchozí hodnoty v našem skriptu jsou výchozím bodem, nikoli standardem.

Označený odstavec je místo, kde začít číst, ne důkaz chyby. Poté si přečtěte samotný překlad, zejména jména, čísla, negace a cokoli, podle čeho by se čtenář mohl řídit. Kontrolní seznam pro QA překladu knih pokrývá tuto revizi.

6. Znovu sestavte dokument

Model vrací text. Nadpisy, poznámky pod čarou, tabulky, obrázky, rozvržení stránky a styly je třeba vrátit ručně nebo pomocí nástroje pro konverzi. U krátké zprávy je to drobnost. U knihy s poznámkami pod čarou a tabulkami to může trvat déle než překlad.

Jak dlouho trvá celá kniha

Náš běh s dělením přeložil 3 179 slov za 10,4 minuty, tedy přibližně 300 slov za minutu na tomto stroji. Při tomto tempu by román o 90 000 slovech trval zhruba pět hodin generování, než se provedou kontroly a opakované běhy. To je jednoduchá aritmetika z jednoho běhu, nikoli benchmark. Rychlost se mění podle velikosti modelu, kvantizace, hardwaru, jazykové dvojice a toho, co dalšího stroj dělá.

Soubor modelu měl na disku 17,5 GB a kontextová cache a běhové buffery potřebují paměť navíc, takže stroj potřebuje znatelně více volné paměti než velikost souboru. Menší model poběží rychleji a s menší pamětí, obvykle za určitou cenu v kvalitě. Otestujte jej na reprezentativním vzorku, než se zavážete k celé knize. Náš průvodce nejlepším LLM pro překlad vysvětluje, jak takový vzorek sestavit a modely spravedlivě porovnat.

Lokální LLM nebo služba pro překlad dokumentů

OtázkaLokální LLMSlužba pro překlad dokumentů
Může soubor opustit váš počítač?NevyžadovánoVyžadováno
Co se vrátíProstý text, který znovu sestavítePřeložený soubor
Velikost modeluOmezeno vaší pamětíOmezeno poskytovatelem
Konzistence v rámci celé knihyVaše práce: glosář, dělení na části, kontrolyZabudováno v některých službách
Cena za dokumentVáš hardware a časCena za dokument nebo za slovo

Pokud vaše pravidla umožňují nahrát soubor, dokumentová služba odstraní většinu výše uvedené práce. BookTranslator překládá kompletní soubory PDF, EPUB a DOCX a vrací přeložený soubor a v jeho FAQ se uvádí, že nahrané soubory a výstup překladu se nepoužívají k trénování AI modelů. Je to cloudová služba, takže není možností, když soubor musí zůstat na vašem počítači. Pokud se rozhodujete mezi spouštěním modelů vlastními silami a placením za službu, kolik vlastně stojí překlad pomocí LLM ukazuje, jak naplánovat rozpočet na straně tokenů.

Získejte testovací soubory

Všechny soubory jsou ve složce /files/blog/translate-with-local-llm/:

  • local_llm_translation_test.py: kompletní test proti lokálnímu API LM Studio se všemi třemi běhy. Nasměrujte jej na jiný model nebo zdrojový text a test zopakujte.
  • check_translation.py: porovnává zdrojový text a překlad odstavec po odstavci a vypisuje neshody v počtu odstavců, poměry délek mimo rozsah a chybějící termíny z glosáře (s --term "Prokurist=chief clerk"). Funguje s výstupem z jakéhokoli nástroje.
  • results.csv: každý požadavek s počty odstavců, počty slov, počty tokenů a časem.
  • failure-examples.txt: německý zdroj a surový výstup modelu pro všechny tři chyby.

Než se na jakýkoli dlouhý překlad spolehnete, spusťte check_translation.py se svými slovníkovými termíny. Zabere to jen pár sekund a v tomto testu odhalil všechny tři chyby. Nedokáže však říct, zda je plynulá věta špatná, takže označené odstavce jsou místem, kde vaše čtení začíná, ne kde končí.

Související příspěvky