Kako prevesti duge dokumente lokalnim LLM-om: dijelovi i provjere
Preveli smo 3.179 riječi lokalnim LLM-om u LM Studiju na tri načina i svaki je skrivao tihu pogrešku. Veličina dijela, postavke i provjere koje ih otkrivaju.

Ljudi prevode dokumente lokalnim LLM-om iz jednog razloga: datoteka ne smije napustiti njihovo računalo. Lokalni model može obaviti posao, ali daje običan tekst, a ne prevedenu datoteku, a njegove najgore pogreške su tihe. U našem testu, jedan zahtjev za odlomkom od 3.179 riječi vratio je ispravan broj odlomaka i čist signal završetka, no jedan je odlomak izgubio više od trećine sadržaja i dobio rečenice kojih nema u izvorniku.
Kratak odgovor: podijelite tekst na granicama odlomaka u dijelove od oko 600 riječi, stavite pojmovnik imena i ponavljajućih termina u sistemsku uputu, isključite modelov način razmišljanja i usporedite svaki dio s izvornim odlomkom redak po redak prije nego mu povjerujete. Svaki od tri načina na koja smo proveli test negdje je zakazao, a nijedan kvar nije proizveo poruku o pogrešci. Očekujte da će modelu srednje veličine na prijenosnom računalu trebati sati za cijelu knjigu i planirajte sami ponovno izgraditi oblikovanje.
Sve u nastavku dolazi iz jednog izvršavanja 23. listopada 2026.: Qwen 3.6 27B (Q4_K_M GGUF) u LM Studiju 0.4.8 na Apple M4 Max sa 64 GB memorije, prevodeći početak Kafkine Die Verwandlung s njemačkog na engleski. Testna skripta, rezultati i sirovi primjeri kvarova dostupni su za besplatno preuzimanje kako biste test mogli ponoviti sa svojim modelom.
Kada je lokalni LLM pravi alat
Pokrenite prijevod lokalno kada odluku donose pravila dokumenta, a ne praktičnost:
- klijentski ugovor, istraživački sporazum ili pravilnik poslodavca zabranjuje učitavanje datoteke na vanjsku uslugu;
- tekst je osoban ili povjerljiv i ne možete prvo ukloniti osjetljive dijelove; ili
- trebate obraditi mnogo datoteka bez troška po dokumentu i već imate odgovarajuću opremu.
Ako ništa od navedenog ne vrijedi, lokalni je model obično sporiji put do lošijeg rezultata. Odričete se tri stvari koje pruža usluga prevođenja dokumenata: prevedene datoteke u izvornom formatu, modela većeg od onoga što vaše računalo može držati i radnog procesa izgrađenog za dosljednost kroz cijelu knjigu. Prije nego odaberete bilo koji put, prođite kroz kontrolni popis za privatnost prevođenja dokumenata. Pokriva ovlast za obradu datoteke, minimalne radne kopije i što usluga čini s učitanim sadržajem.
"Lokalno" također treba precizno značenje. Model se izvodi na vašem računalu, a u našem su testu zahtjevi išli samo na localhost. To ne govori što aplikacija oko modela bilježi, ažurira ili prijavljuje. Ako vaša pravila zahtijevaju dokaz da ništa ne napušta uređaj, provjerite postavke i pravila samog okruženja ili ga pokrenite na računalu bez pristupa mreži.
Što smo testirali
Preveli smo prvih 19 odlomaka Die Verwandlung (3.179 njemačkih riječi) iz javnodostupnog izdanja Project Gutenberga. Književni njemački je pošten test izdržljivosti: odlomci su dugi, rečenice se ugnježđuju, a isti se likovi i nazivi zanimanja ponavljaju.
Sva tri izvršavanja koristila su isti model i postavke: temperatura 0,2, najviše 12.000 izlaznih tokena i kontekstni prozor od 16.384 tokena. Uputa je tražila jedan engleski odlomak po njemačkom odlomku i ništa više.
| Izvršavanje | Što smo poslali | Izlazni odlomci (izvor: 19) | Izlazne riječi | Vrijeme |
|---|---|---|---|---|
| A. Podijeljeno u dijelove | 6 dijelova od oko 600 riječi, samo uputa | 19 | 3,319 | 10,4 min |
| B. Podijeljeno + pojmovnik + kontekst | Isti dijelovi, pojmovnik sa 7 termina i prethodni izvorni odlomak označen s „NE prevodi“ | 20 | 3,446 | 10,5 min |
| C. Jedan zahtjev | Svih 19 odlomaka odjednom | 19 | 3,309 | 9,5 min |
Svako je izvršavanje završilo normalnim signalom za zaustavljanje, a svako je sadržavalo drugu tihu pogrešku. Izvršavanje C ispustilo je i izmislilo tekst. Izvršavanje B prevelo je tekst koji je trebalo preskočiti. Izvršavanje A, najčišće, dalo je jednom liku pogrešnu ulogu u svom posljednjem dijelu.
Pogreška 1: Jedan veliki zahtjev ispustio je dio odlomka
Izvršavanje C završilo je normalno i vratilo točno 19 odlomaka. Provjera broja odlomaka bila bi ga proglasila ispravnim. No odlomak 6 vratio se sa 214 riječi za izvornik od 260 riječi.
U izvorniku Gregor pogleda na sat, shvati da je propustio vlak i zatim razmišlja o tome da se javi kao bolestan: njegov bi šef došao s liječnikom zdravstvenog osiguranja, koji svakoga smatra zdravim ali nesklonim radu, a Gregor priznaje da se zapravo osjeća dobro osim pospanosti i neobičnog apetita. Izvršavanje C prevelo je prvi dio, a zatim ispustilo cijeli odlomak o bolovanju, 98 od 260 njemačkih riječi toga odlomka. Umjesto toga napisalo je da bi Gregor „bio smjesta otpušten“, da je uredski pomoćnik sklon „svemu što mu se prijavi vidjeti kao priliku da se pokaže“ i da je ta misao „izazvala osmijeh na njegovim usnama“. Ničega od toga nema u njemačkom tekstu.
Izvršavanje po dijelovima prevelo je isti odlomak u cijelosti, sa 267 riječi.
Jedan uzorak ne dokazuje da dugi zahtjevi uvijek zakažu. Ali pokazuje što treba provjeriti: dugi pojedinačni zahtjev može tiho sažeti ili izmisliti tekst, a da pritom i dalje izgleda strukturno potpun. Čitatelj koji ne zna njemački ne bi imao razloga to primijetiti.
Pogreška 2: Model je preveo „kontekst“ koji je trebao preskočiti
Čest je savjet slati prethodni odlomak uz svaki dio kako bi model zadržao nit. U izvršavanju B dodali smo ga u poruku pod oznakom „Kontekst (već prevedeno, NE prevodi).“
U dijelu 4 model ga je ipak preveo. Dio je vratio četiri odlomka za tri izvorna odlomka, a prvi je bio drugi prijevod posljednjeg odlomka dijela 3. Spojeni, knjiga bi sadržavala taj odlomak dvaput, svaki put drukčije formuliran.
Praktično pravilo: ako šaljete kontekst, držite ga izvan teksta koji se od modela traži da prevede, neka bude kratak i provjerite broj odlomaka u svakom dijelu. Ako ne možete provjeriti, izostavite ga.
Pogreška 3: Dio poslan samostalno dao je liku pogrešnu ulogu
Izvršavanje A slalo je svaki dio bez pojmovnika i bez konteksta. Za prvih pet dijelova to je dobro funkcioniralo: Prokurist postao je „glavni činovnik“ na svih 16 mjesta gdje se pojavio. Šesti dio bio je jedan odlomak u kojem glavni činovnik prekorava Gregora kroz vrata. Gledan samostalno, model je der Prokurist preveo kao „putujući trgovac“, što je Gregorovo vlastito zanimanje. Broj odlomaka se podudarao, a omjer duljine bio je 1,00, pa nijedna strukturna provjera to nije primijetila.
U izvršavanju B, koje je imalo pojmovnik u sistemskoj uputi i prethodni odlomak kao kontekst, isti je odlomak ispravno upotrijebio „glavni činovnik“. Ovaj test ne može reći što je od toga dvoje to popravilo. Budući da je kontekst prouzročio i pogrešku 2, pojmovnik je sigurnije mjesto za prenošenje imena i uloga iz dijela u dio: kratak je, nalazi se u uputi i možete ga strojno provjeriti.
Radni postupak koji se pokazao
1. Najprije izvucite obični tekst iz datoteke
Lokalni LLM prevodi tekst, ne datoteke. Pretvorite dokument prije početka:
- DOCX ili EPUB: izvezite u obični tekst ili Markdown s jednim odlomkom po bloku, a naslove zadržite kao zasebne retke.
- PDF sa tekstnim slojem: izvucite tekst, zatim popravite prelomljene retke i rastavljanje riječi. Naš vodič za ispravljanje prijeloma redaka i rastavljanja riječi nakon OCR-a pokriva isto čišćenje. Pretvarač poput Doclinga može izraditi Markdown iz PDF-ova i Officeovih datoteka.
- Skenirani PDF: najprije pokrenite OCR. Ako niste sigurni ima li PDF upotrebljiv tekst, pogledajte Izvlačenje teksta iz PDF-a vs. OCR.
Očuvajte strukturu odlomaka. Svaka kasnija provjera ovisi o podudaranju jedan na jedan između izvornih i prevedenih odlomaka.
2. Isključite način razmišljanja i potvrdite to
Mnogi aktualni otvoreni modeli razmišljaju prije nego što odgovore. Za prevođenje to troši vrijeme i izlazne tokene. U našem je postavu testni zahtjev od 200 tokena potrošio 199 tokena na razmišljanje i vratio prazan odgovor.
Isprobali smo tri uobičajena prekidača. Dodavanje /no_think u upit nije učinilo ništa, a chat_template_kwargs s enable_thinking: false također nije učinilo ništa. Slanje "reasoning_effort": "none" u zahtjevu isključilo je razmišljanje: odgovor je prijavio 0 tokena razmišljanja i izravno vratio prijevod. Taj parametar nije naveden na LM Studioovoj stranici o dovršavanju razgovora, pa ga smatrajte ponašanjem koje smo primijetili u verziji 0.4.8 s ovim modelom. Provjerite broj reasoning_tokens u vlastitim odgovorima umjesto da vjerujete bilo kojem prekidaču.
3. Odredite veličinu kontekstnog okna prije dijeljenja na dijelove
Kontekstno okno mora sadržavati uputu, dio teksta i cijeli prijevod. U našim podijeljenim izvršavanjima njemački dio od 500 do 670 riječi koristio je oko 800 do 1.500 ulaznih tokena, ovisno o pojmovniku i kontekstu, te 640 do 870 izlaznih tokena, pa je nekoliko tisuća tokena dovoljno. Pojedinačni zahtjev od 3.179 riječi trebao je 4.953 ulazna tokena i 3.930 izlaznih tokena.
Ollama postavlja zadanu duljinu konteksta prema dostupnoj memoriji: 4k tokena ispod 24 GiB VRAM-a, 32k od 24 do 48 GiB i 256k na 48 GiB ili više, prema njihovoj dokumentaciji o duljini konteksta provjerenoj 23. listopada 2026. Možete je povećati pomoću OLLAMA_CONTEXT_LENGTH. U LM Studiju postavite duljinu konteksta prilikom učitavanja modela. Ako dio teksta zajedno s prijevodom ne stane, izlaz može biti odrezan.
4. Dijelite na granicama odlomaka, oko 600 riječi
Nikada ne dijelite unutar odlomka ili rečenice. Naši su dijelovi ciljali 700 riječi i završavali na najbližoj granici odlomka, što je dalo šest dijelova od 243 do 667 riječi. Manji dijelovi malo koštaju: izvršavanje A trajalo je 10,4 minute naspram 9,5 minuta za pojedinačni zahtjev, a neuspjeli je dio jeftino ponovno pokrenuti.
Neka uputa bude kratka i identična za svaki dio. Naša je bila: prevedi na engleski, zadrži točno jedan izlazni odlomak po ulaznom odlomku odvojen praznim retkom i ispiši samo prijevod. Dodajte pojmovnik istoj uputi: jedan redak po imenu, naslovu ili pojmu koji se ponavlja, u obliku Prokurist = chief clerk. Naš vodič za izradu prijevodnog pojmovnika objašnjava što uključiti. Kratki dijelovi gube okolnu priču, a pojmovnik je ono što je nosi.
5. Provjerite svaki dio prije nego što ih spojite
Pokrenite tri provjere na svakom dijelu:
- Broj odlomaka. Izlaz mora imati isti broj odlomaka kao ulaz. To je otkrilo neuspjeh 2.
- Omjer duljine po odlomku. Usporedite broj riječi svakog prevedenog odlomka s njegovim izvorom. To je otkrilo neuspjeh 1, koji je broj odlomaka propustio.
- Pojmovi iz pojmovnika po odlomku. Gdje se izvorni pojam pojavljuje, njegov obvezni prijevod trebao bi se pojaviti isti broj puta. To je otkrilo neuspjeh 3, koji su obje druge provjere propustile. Flektivni jezici zahtijevat će ovdje malo prosudbe jer njemački ili ruski pojam mijenja oblik.
Za njemačku prozu prevedenu na engleski, odlomci izvršavanja A ostali su između 0,98 i 1,17 izlaznih riječi po ulaznoj riječi. Oštećeni odlomak izvršavanja C bio je 0,82. Postavite vlastiti raspon provjerom nekoliko odlomaka kojima vjerujete u svom jezičnom paru; zadane vrijednosti u našoj skripti početna su točka, a ne standard.
Označeni odlomak mjesto je gdje prvo čitati, a ne dokaz pogreške. Zatim pročitajte sam prijevod, posebno imena, brojeve, negacije i sve na što bi čitatelj mogao postupiti. Kontrolni popis za provjeru kvalitete prijevoda knjiga pokriva taj pregled.
6. Ponovno sastavite dokument
Model vraća tekst. Naslove, fusnote, tablice, slike, izgled stranice i stilove morate vratiti ručno ili alatom za pretvorbu. Za kratko izvješće to je neznatno. Za knjigu s fusnotama i tablicama to može trajati dulje od prijevoda.
Koliko traje cijela knjiga
Naše je podijeljeno izvršavanje prevelo 3.179 riječi u 10,4 minute, oko 300 riječi u minuti na ovom stroju. Tim bi tempom roman od 90.000 riječi trajao otprilike pet sati generiranja, prije provjera i ponovnih pokretanja. To je jednostavna aritmetika iz jednog izvršavanja, a ne mjerilo uspješnosti. Brzina se mijenja s veličinom modela, kvantizacijom, hardverom, jezičnim parom i time koliko stroj još posla obavlja.
Datoteka modela bila je 17,5 GB na disku, a predmemorija konteksta i međuspremnici izvršavanja trebaju memoriju povrh toga, pa stroj treba znatno više slobodne memorije od veličine datoteke. Manji će model raditi brže i s manje memorije, obično uz određeni gubitak kvalitete. Testirajte ga na reprezentativnom uzorku prije nego što se posvetite cijeloj knjizi. Naš vodič o najboljem LLM-u za prevođenje objašnjava kako sastaviti taj uzorak i pošteno usporediti modele.
Lokalni LLM ili usluga prevođenja dokumenata
| Pitanje | Lokalni LLM | Usluga prevođenja dokumenata |
|---|---|---|
| Može li datoteka napustiti vaše računalo? | Nije potrebno | Potrebno |
| Što se vraća | Običan tekst koji sami sastavljate | Prevedena datoteka |
| Veličina modela | Ograničena vašom memorijom | Ograničena pružateljem usluge |
| Dosljednost kroz cijelu knjigu | Vaš posao: pojmovnik, dijeljenje u dijelove, provjere | Ugrađeno u neke usluge |
| Trošak po dokumentu | Vaš hardver i vrijeme | Cijena po dokumentu ili po riječi |
Ako vaša pravila dopuštaju prijenos datoteke, usluga za dokumente uklanja većinu gore navedenog posla. BookTranslator prevodi cijele PDF, EPUB i DOCX datoteke i vraća prevedenu datoteku, a njegov FAQ navodi da se prenesene datoteke i rezultati prevođenja ne koriste za treniranje AI modela. To je cloud usluga pa nije opcija kada datoteka mora ostati na vašem računalu. Ako birate između samostalnog pokretanja modela i plaćanja usluge, koliko LLM prevođenje zapravo košta pokazuje kako planirati troškove tokena.
Preuzmite testne datoteke
Sve datoteke nalaze se u mapi /files/blog/translate-with-local-llm/:
local_llm_translation_test.py: potpuni test protiv lokalnog API-ja LM Studija, sa sva tri pokretanja. Usmjerite ga na drugi model ili izvorni tekst da biste ponovili test.check_translation.py: uspoređuje izvorni tekst i prijevod odlomak po odlomak i ispisuje nepodudarnosti u broju odlomaka, omjere duljine izvan raspona i nedostajuće pojmove iz pojmovnika (s--term "Prokurist=chief clerk"). Radi s izlazom bilo kojeg alata.results.csv: svaki zahtjev s brojem odlomaka, brojem riječi, brojem tokena i vremenom.failure-examples.txt: njemački izvornik i sirovi izlaz modela za sva tri neuspjeha.
Pokrenite check_translation.py s pojmovima iz svog pojmovnika na svakom dugom prijevodu prije nego se na njega oslonite. Traje nekoliko sekundi i označio je sva tri problema u ovom testu. Ne može vam reći je li tečna rečenica pogrešna, pa su označeni odlomci mjesto gdje počinjete čitati, a ne gdje završavate.
Povezane objave





