Hogyan fordítsunk hosszú dokumentumokat helyi LLM-mel: darabolás és ellenőrzés
Háromféleképpen fordítottunk le 3 179 szót egy helyi LLM-mel az LM Studióban, és mindegyik rejtett hibát tartalmazott. A darabolás mérete, a beállítások és az ellenőrzések, amelyek kiszűrik ezeket.

Az emberek azért fordítanak dokumentumokat helyi LLM-mel, mert a fájl nem hagyhatja el a gépüket. Egy helyi modell el tudja végezni a munkát, de csak sima szöveget ad, nem lefordított fájlt, és a legrosszabb hibái csendesek. A tesztünkben egyetlen kérés egy 3 179 szavas részletre a megfelelő számú bekezdéssel és tiszta befejezési jellel tért vissza, mégis az egyik bekezdés elvesztette tartalmának több mint egyharmadát, és olyan mondatokat kapott, amelyek nincsenek a forrásban.
Rövid válasz: osszuk fel a szöveget bekezdések határainál körülbelül 600 szavas darabokra, tegyünk egy szószedetet a nevekről és visszatérő kifejezésekről a rendszerutasításba, kapcsoljuk ki a modell gondolkodási módját, és minden darabot hasonlítsunk össze a forrás bekezdésével bekezdésről bekezdésre, mielőtt megbízunk benne. A három tesztfuttatás mindegyike valahol elbukott, és egyik hiba sem adott hibaüzenetet. Számítsunk arra, hogy egy közepes méretű modell egy laptopon órákig tart egy egész könyv esetén, és tervezzük meg, hogy magunk állítjuk helyre a formázást.
Az alábbiak mindegyike egyetlen futtatásból származik 2026. október 23-án: Qwen 3.6 27B (Q4_K_M GGUF) az LM Studio 0.4.8-ban egy Apple M4 Max-en, 64 GB memóriával, Kafka Die Verwandlung című művének elejét fordítva németről angolra. A tesztszkript, az eredmények és a nyers hibapéldák ingyenesen letölthetők, hogy saját modellel megismételhessük a kísérletet.
Mikor a helyes eszköz a helyi LLM?
Helyben futtassuk a fordítást, amikor a dokumentum szabályai, nem a kényelem döntenek:
- egy ügyfél szerződése, kutatási megállapodás vagy munkáltatói szabályzat tiltja a fájl feltöltését külső szolgáltatásba;
- a szöveg személyes vagy bizalmas, és előzetesen nem távolíthatók el az érzékeny részek; vagy
- sok fájlt kell feldolgozni dokumentumonkénti költség nélkül, és már rendelkezünk megfelelő hardverrel.
Ha egyik sem áll fenn, a helyi modell általában lassabb út a rosszabb eredmény felé. Három dolgot adunk fel, amit egy dokumentumfordító szolgáltatás nyújt: az eredeti formátumú lefordított fájlt, a gépünk kapacitásánál nagyobb modellt, és egy egész könyvön átívelő konzisztenciára tervezett munkafolyamatot. Mielőtt bármelyik utat választanánk, menjünk végig a dokumentumfordítás adatvédelmi ellenőrzőlistáján. Ez kitér a fájl feldolgozására való jogosultságra, a minimális munkapéldányokra és arra, mit tesz egy szolgáltatás a feltöltésekkel.
A „helyi” szónak is pontos jelentésre van szüksége. A modell a számítógépünkön fut, és a tesztünkben a kérések csak a localhost-ra mentek. Ez nem mondja meg, mit naplóz, frissít vagy jelent az alkalmazás a modell körül. Ha a szabályok bizonyítékot követelnek arról, hogy semmi nem hagyja el az eszközt, ellenőrizzük a futtatókörnyezet saját beállításait és szabályzatát, vagy futtassuk hálózati hozzáférés nélküli gépen.
Mit teszteltünk
A Die Verwandlung első 19 bekezdését (3 179 német szó) fordítottuk le a közkincs Project Gutenberg-kiadásból. Az irodalmi német tisztességes stresszteszt: a bekezdések hosszúak, a mondatok egymásba ágyazódnak, és ugyanazok a szereplők és beosztások ismétlődnek.
Mindhárom futtatás ugyanazt a modellt és beállításokat használta: hőmérséklet 0,2, legfeljebb 12 000 kimeneti token, és 16 384 tokenes kontextusablak. Az utasítás egy angol bekezdést kért minden német bekezdéshez, semmi mást.
| Futtatás | Amit küldtünk | Kimeneti bekezdések (forrás: 19) | Kimeneti szavak | Idő |
|---|---|---|---|---|
| A. Darabolt | 6 darab, egyenként kb. 600 szó, csak utasítás | 19 | 3,319 | 10,4 perc |
| B. Darabolt + szószedet + kontextus | Ugyanazok a darabok, egy 7 kifejezésből álló szószedet, és az előző forrásbekezdés „NE fordítsd le” jelöléssel | 20 | 3,446 | 10,5 perc |
| C. Egyetlen kérés | Mind a 19 bekezdés egyszerre | 19 | 3,309 | 9,5 perc |
Minden futás normál leállítási jellel fejeződött be, és minden futás tartalmazott egy másik csendes hibát. A C futás kihagyott és kitalált szöveget. A B futás lefordított olyan szöveget, amelyet át kellett volna ugrania. Az A futás, a legtisztább, egy karakternek rossz szerepet adott az utolsó darabjában.
1. hiba: Az egyetlen nagy kérés kihagyta egy bekezdés egy részét
A C futás normálisan fejeződött be, és pontosan 19 bekezdést adott vissza. Egy bekezdésszámláló ellenőrzés átengedte volna. A 6. bekezdés azonban 214 szóval jött vissza egy 260 szavas forráshoz képest.
A forrásban Gregor az órára néz, rájön, hogy lekéste a vonatát, majd fontolóra veszi, hogy beteget jelent: a főnöke megjelenne az egészségbiztosítási orvossal, aki mindenkit egészségesnek, de munkakerülőnek tart, és Gregor elismeri, hogy valójában jól érzi magát, leszámítva az álmosságot és a szokatlan étvágyat. A C futás lefordította az első részt, majd kihagyta a teljes betegnapos szakaszt, a bekezdés 260 német szavából 98-at. Helyette azt írta, hogy Gregort „azonnal elbocsátották volna”, hogy az irodai asszisztens „hajlamos mindent, amit jelentenek neki, önmaga fitogtatásának lehetőségeként látni”, és hogy a gondolat „mosolyt csalt az ajkára”. Ebből semmi sincs a német szövegben.
A darabokra bontott futás teljesen lefordította ugyanezt a bekezdést, 267 szóval.
Egy minta nem bizonyítja, hogy a hosszú kérések mindig kudarcot vallanak. Azt viszont megmutatja, mit érdemes ellenőrizni: egy hosszú, egyetlen kérés csendesen tömöríthet vagy kitalálhat szöveget, miközben szerkezetileg teljesnek tűnik. Egy németül nem tudó olvasónak semmi oka nem lenne észrevenni.
2. hiba: A modell lefordította a „kontextust”, amelyet át kellett volna ugrania
Gyakori tipp, hogy minden darabbal együtt küldjük el az előző bekezdést, hogy a modell tartsa a fonalat. A B futásban ezt hozzáadtuk az üzenethez „Kontextus (már lefordítva, NE fordítsd le)” címkével.
A 4. darabban a modell mégis lefordította. A darab négy bekezdést adott vissza három forrásbekezdésre, és az első a 3. darab utolsó bekezdésének második fordítása volt. Összefűzve a könyv kétszer tartalmazta volna azt a bekezdést, mindkétszer másképp megfogalmazva.
A gyakorlati szabály: ha kontextust küldesz, tartsd azon kívül a szövegen, amelyet a modellnek le kell fordítania, tartsd rövidnek, és ellenőrizd minden darab bekezdésszámát. Ha nem tudod ellenőrizni, hagyd ki.
3. hiba: Az egyedül küldött darab rossz szerepet adott egy karakternek
Az A futás minden darabot szószedet és kontextus nélkül küldött. Az első öt darabnál ez jól működött: a Prokurist mind a 16 előfordulásában „főpénztáros” lett. A hatodik darab egyetlen bekezdés volt, amelyben a főpénztáros az ajtón keresztül szidja Gregort. Egyedül látva a modell a der Prokurist kifejezést „az utazó ügynök”-ként fordította, ami Gregor saját munkája. A bekezdésszám egyezett, a hosszarány 1,00 volt, így egyik szerkezeti ellenőrzés sem vette észre.
A B futásban, amelyben a szószedet a rendszerutasításban volt, és az előző bekezdés kontextusként, ugyanez a bekezdés helyesen „főpénztáros”-t használt. Ez a teszt nem tudja megmondani, melyikük javította ki. Mivel a kontextus a 2. hibát is okozta, a szószedet a biztonságosabb hely a nevek és szerepek darabról darabra történő átvitelére: rövid, az utasításban van, és gépi úton ellenőrizhető.
A munkafolyamat, amely bevált
1. Először nyerd ki a sima szöveget a fájlból
Egy helyi LLM szöveget fordít, nem fájlokat. A kezdés előtt alakítsd át a dokumentumot:
- DOCX vagy EPUB: exportálj sima szövegbe vagy Markdownba, blokkonként egy bekezdéssel, a címeket külön sorokként megtartva.
- Szövegréteggel rendelkező PDF: nyerd ki a szöveget, majd javítsd a törött sorokat és az elválasztást. Az OCR soremelések és elválasztás javításáról szóló útmutatónk ugyanezt a tisztítást tárgyalja. Egy olyan konverter, mint a Docling, Markdownt tud előállítani PDF-ekből és Office-fájlokból.
- Beolvasott PDF: először futtass OCR-t. Ha nem vagy biztos benne, hogy egy PDF tartalmaz használható szöveget, lásd a PDF szövegkinyerés vs. OCR bejegyzést.
Tartsd érintetlenül a bekezdésszerkezetet. Minden későbbi ellenőrzés a forrás- és a fordított bekezdések egy-az-egyben megfeleltetésén múlik.
2. Kapcsold ki a gondolkodási módot, és erősítsd meg
Sok jelenlegi nyílt modell válaszadás előtt gondolkodik. Fordításnál ez időt és kimeneti tokeneket pazarol. A mi beállításunkban egy 200 tokenes tesztkérés 199 tokent töltött gondolkodásra, és üres választ adott vissza.
Három gyakori kapcsolót próbáltunk ki. A /no_think hozzáadása a prompthez semmit sem ért el, és a chat_template_kwargs enable_thinking: false értékkel szintén semmit. A kérésben küldött "reasoning_effort": "none" kikapcsolta a gondolkodást: a válasz 0 gondolkodási tokent jelzett, és közvetlenül visszaadta a fordítást. Ez a paraméter nem szerepel az LM Studio chat completions oldalán, ezért tekintsd a 0.4.8-as verzióban ezzel a modellel megfigyelt viselkedésnek. Inkább a saját válaszaidban ellenőrizd a reasoning_tokens számát, mint hogy bármelyik kapcsolóban megbízz.
3. A darabolás előtt méretezd a kontextusablakot
A kontextusablaknak tartalmaznia kell az utasítást, a darabot és a teljes fordítást. A darabolt futtatásainkban egy 500–670 szavas német darab körülbelül 800–1 500 bemeneti tokent használt a szószedettől és a kontextustól függően, valamint 640–870 kimeneti tokent, így néhány ezer token elegendő. Az egyszeri, 3 179 szavas kéréshez 4 953 bemeneti és 3 930 kimeneti token kellett.
Az Ollama a rendelkezésre álló memória alapján állítja be az alapértelmezett kontextushosszt: 4k token 24 GiB VRAM alatt, 32k 24 és 48 GiB között, 256k pedig 48 GiB felett, a 2026. október 23-án ellenőrzött kontextushossz-dokumentációja szerint. Ezt az OLLAMA_CONTEXT_LENGTH értékkel növelheted. Az LM Studióban a modell betöltésekor állítsd be a kontextushosszt. Ha egy darab a fordításával együtt nem fér el, a kimenet levágódhat.
4. Darabolj bekezdések határán, körülbelül 600 szónál
Soha ne vágj ketté egy bekezdést vagy mondatot. A darabjaink célja 700 szó volt, és a legközelebbi bekezdéshatárnál értek véget, ami hat darabot eredményezett 243 és 667 szó között. A kisebb darabok kevésbe kerülnek: az A futtatás 10,4 percet vett igénybe az egyszeri kérés 9,5 percével szemben, és egy sikertelen darabot olcsó újrafuttatni.
Tartsd rövid és minden darabnál azonos utasítást. A miénk ez volt: fordíts angolra, minden bemeneti bekezdéshez pontosan egy kimeneti bekezdést adj, üres sorral elválasztva, és csak a fordítást add ki. Adj a szószedetet ugyanahhoz az utasításhoz: soronként egy nevet, címet vagy visszatérő kifejezést, Prokurist = chief clerk formában. A fordítási szószedet készítéséről szóló útmutatónk leírja, mit érdemes belefoglalni. A rövid darabokból elvész a környező történet, és a szószedet az, ami ezt hordozza.
5. Ellenőrizz minden darabot, mielőtt összefűzöd őket
Minden darabon három ellenőrzést futtass:
- Bekezdésszám. A kimenetnek ugyanannyi bekezdést kell tartalmaznia, mint a bemenetnek. Ez fogta meg a 2. hibát.
- Bekezdésenkénti hosszarány. Hasonlítsd össze minden fordított bekezdés szószámát a forrásával. Ez fogta meg az 1. hibát, amelyet a bekezdésszám nem vett észre.
- Bekezdésenkénti szószedeti kifejezések. Ahol egy forráskifejezés szerepel, ott a kötelező fordításának ugyanannyiszor kell szerepelnie. Ez fogta meg a 3. hibát, amelyet a másik két ellenőrzés egyaránt elmulasztott. A ragozó nyelveknél itt némi mérlegelésre lesz szükség, mert egy német vagy orosz kifejezés alakot vált.
Németről angolra fordított prózánál az A futtatás bekezdései 0,98 és 1,17 kimeneti szó között maradtak bemeneti szavanként. A C futtatás sérült bekezdése 0,82 volt. Állítsd be a saját tartományodat néhány megbízhatónak tartott bekezdés ellenőrzésével a saját nyelvpárodban; a szkriptünk alapértékei kiindulópontot jelentenek, nem szabványt.
Egy megjelölt bekezdés az, ahol először olvasnod érdemes, nem pedig a hiba bizonyítéka. Ezután olvasd el magát a fordítást, különösen a neveket, számokat, tagadásokat és mindent, ami alapján az olvasó cselekedne. A könyvfordítási QA-ellenőrzőlista lefedi ezt az átnézést.
6. Építsd újra a dokumentumot
A modell szöveget ad vissza. A címsorokat, lábjegyzeteket, táblázatokat, képeket, oldalelrendezést és stílusokat kézzel vagy konvertálóeszközzel kell visszahelyezni. Egy rövid jelentésnél ez jelentéktelen. Egy lábjegyzeteket és táblázatokat tartalmazó könyvnél ez tovább tarthat, mint maga a fordítás.
Mennyi ideig tart egy egész könyv
A darabolt futtatásunk 3 179 szót fordított le 10,4 perc alatt, ami ezen a gépen körülbelül 300 szó percenként. Ezzel az ütemben egy 90 000 szavas regény nagyjából öt órányi generálást venne igénybe, az ellenőrzések és újrafuttatások előtt. Ez egyszerű számítás egyetlen futtatásból, nem benchmark. A sebesség változik a modell méretével, a kvantálással, a hardverrel, a nyelvpárral és azzal, hogy a gép mennyi más feladatot végez.
A modellfájl 17,5 GB volt a lemezen, és a kontextus-gyorsítótárnak és a futásidejű puffereknek ezen felül memóriára van szükségük, így egy gépnek észrevehetően több szabad memóriára van szüksége, mint a fájlméret. Egy kisebb modell gyorsabban és kevesebb memóriával fut, általában valamelyes minőségromlás árán. Teszteld egy reprezentatív mintán, mielőtt egy egész könyv mellett elköteleződsz. A fordításhoz legjobb LLM útmutatónk elmagyarázza, hogyan építsd fel ezt a mintát, és hogyan hasonlítsd össze a modelleket tisztességesen.
Helyi LLM vagy dokumentumfordítási szolgáltatás
| Kérdés | Helyi LLM | Dokumentumfordítási szolgáltatás |
|---|---|---|
| Elhagyhatja a fájl a gépét? | Nem szükséges | Szükséges |
| Mi jön vissza | Sima szöveg, amit Ön állít össze | Lefordított fájl |
| Modellméret | A memóriája korlátozza | A szolgáltató korlátozza |
| Konzisztencia egy egész könyvön át | Az Ön feladata: szószedet, darabolás, ellenőrzések | Egyes szolgáltatásokba beépítve |
| Költség dokumentumonként | Az Ön hardvere és ideje | Dokumentumonkénti vagy szavankénti ár |
Ha a szabályai engedik a fájl feltöltését, egy dokumentumfordítási szolgáltatás a fenti munka nagy részét megszünteti. A BookTranslator teljes PDF-, EPUB- és DOCX-fájlokat fordít le, és lefordított fájlt ad vissza, a GYIK-je pedig azt mondja, hogy a feltöltött fájlokat és a fordítás kimenetét nem használják AI-modellek tanítására. Felhőszolgáltatás, így nem opció, ha a fájlnak a gépén kell maradnia. Ha azon gondolkodik, hogy maga futtasson modelleket, vagy fizessen egy szolgáltatásért, a mennyibe kerül valójában az LLM-fordítás bemutatja, hogyan tervezze meg a tokenek oldalát.
Töltse le a tesztfájlokat
Minden fájl a /files/blog/translate-with-local-llm/ mappában található:
local_llm_translation_test.py: a teljes teszt az LM Studio helyi API-ja ellen, mindhárom futással. Irányítsa egy másik modellre vagy forrásszövegre a teszt megismétléséhez.check_translation.py: bekezdésenként összehasonlít egy forrásszöveget és egy fordítást, és kiírja a bekezdésszám-eltéréseket, a tartományon kívüli hosszarányokat és a hiányzó szószedeti kifejezéseket (a--term "Prokurist=chief clerk"kapcsolóval). Bármely eszköz kimenetével működik.results.csv: minden kérés a bekezdés-, szó- és tokenszámokkal, valamint az idővel.failure-examples.txt: a német forrás és a nyers modellkimenet mindhárom hibához.
Futtasd a check_translation.py szkriptet a szószedet-kifejezéseiddel bármely hosszú fordítás esetén, mielőtt megbíznál benne. Másodpercek alatt lefut, és ebben a tesztben mindhárom hibát jelezte. Azt nem tudja megmondani, hogy egy folyékony mondat hibás-e, ezért a megjelölt bekezdéseknél kezdd az olvasást, nem ott fejezd be.
Kapcsolódó bejegyzések





