BookTranslator
BookTranslator

Cara Menterjemah Fail TXT Besar: Pengekodan, Bab, dan Pemenggalan Baris

Betulkan pengekodan, tandakan bab, dan satukan pemenggalan baris paksa sebelum anda menterjemah fail .txt yang panjang. Dengan fail contoh, pemeriksa percuma, dan ujian 9 kali jalan.

BookTranslator

BookTranslator Team

15 min baca

Untuk menterjemah fail TXT yang besar, sediakan tiga perkara sebelum anda memuat naiknya ke mana-mana. Pertama, pastikan teks dinyahkod dengan betul dan simpan sebagai UTF-8. Kedua, letakkan setiap tajuk bab pada barisnya sendiri dengan baris kosong di sekelilingnya. Ketiga, jika fail memenggal baris pada lebar tetap, satukan baris-baris itu supaya setiap perenggan menjadi satu baris, dengan baris kosong antara perenggan. Kemudian terjemah keseluruhan fail, dan selepas itu bandingkan bilangan perenggan dan bab antara sumber dan terjemahan.

Fail teks biasa tidak mempunyai gaya, tiada tajuk, dan tiada metadata. Segala yang diketahui oleh alat terjemahan tentang strukturnya datang daripada bait dan pemenggalan baris. Itulah sebabnya tiga masalah yang sama sering berulang: bait dibaca dalam pengekodan yang salah, bab tidak dapat dibezakan daripada baris biasa, atau pemenggalan baris tidak memberitahu di mana ayat berakhir.

Kami telah membuat fail contoh dalam empat pengekodan, menulis pemeriksa percuma, dan menterjemah sebuah cerpen yang dipenggal secara paksa ke dalam Bahasa Cina Ringkas sembilan kali menggunakan model setempat. Model itu mengendalikan pemenggalan paksa dengan baik apabila ia melihat keseluruhan fail. Ia memecahkan ayat dan memberikan tindakan satu watak kepada watak lain dalam ketiga-tiga jalanan di mana fail dipotong mengikut bilangan baris.

Senarai Semak Pantas

SemakRupa yang baikCara membetulkannya
PengekodanBaris pertama dibaca dengan betul; fail ialah UTF-8Buka semula dengan pengekodan yang betul, kemudian simpan sebagai UTF-8
Tanda susunan baitTiada, atau satu yang anda tahuSimpan sebagai "UTF-8" dan bukan "UTF-8 dengan BOM" jika alat merungut
Tajuk babSetiap satu bersendirian pada satu baris, dengan baris kosong sebelum dan selepasBetulkan beberapa tajuk yang bercantum dengan teks
PerengganSatu baris kosong antara perengganTambah baris kosong di tempat perenggan hanya bermula dengan inden
Pemenggalan paksaSetiap perenggan ialah satu baris panjangSatukan baris dalam perenggan, tetapi biarkan puisi, surat, dan senarai tidak diusik
Pengakhiran barisSatu gaya sepanjang dokumenTukar pengakhiran CR Mac lama; LF dan CRLF kedua-duanya boleh diterima
Teks rosakTiada aksara �Dapatkan salinan yang lebih baik. Penukaran tidak dapat mengembalikan aksara yang hilang

Pemeriksa melaporkan setiap baris dan membetulkan pengekodan, tanda susunan bait, pengakhiran baris, dan pembalutan keras. Tajuk bab dan baris kosong yang hilang perlu anda betulkan secara manual. Jalankan python3 check_txt.py inspect yourfile.txt untuk melihat laporan, dan python3 check_txt.py convert yourfile.txt clean.txt --unwrap untuk menulis salinan UTF-8 dengan perenggan disatukan. Ia hanya memerlukan Python 3, dan ia tidak pernah mengubah fail asal.

Langkah 1: Betulkan Pengekodan

Fail TXT ialah urutan bait. Pengekodan ialah peraturan yang menukar bait tersebut menjadi aksara, dan fail itu tidak menyatakan peraturan mana yang digunakan. Jika program meneka dengan salah, anda akan mendapat mojibake: teks yang rosak, atau lebih teruk lagi, teks yang kelihatan betul tetapi bukan seperti yang ditulis.

Berikut ialah frasa Cina yang sama, 最后一班渡轮 ("feri terakhir"), dibaca dengan peraturan yang salah. Kami menjananya dengan codec terbina dalam Python, dan anda boleh menghasilkannya semula dengan fail sampel.

Disimpan sebagaiDibaca sebagaiApa yang anda lihat
GB18030Windows-1252×îºóÒ»°à¶ÉÂÖ
GB18030UTF-8���һ�����
UTF-8GBK鏈�鍚庝竴鐝�娓¤疆
Shift_JIS (Jepun 最後のフェリー)GBK嵟屻偺僼僃儕乕

Baris terakhir ialah yang berbahaya. Bait Jepun yang dibaca sebagai Cina menghasilkan aksara Cina sebenar, tanpa ralat dan tanpa �. Alat terjemahan akan menterjemahkannya dengan senang hati, dan hasilnya akan menjadi karut dengan tatabahasa yang baik.

Pemeriksa kami menunjukkan sebab anda tidak boleh bergantung pada "ia dibuka tanpa ralat." Apabila kami menjalankannya pada sampel Shift_JIS, dua pengekodan menyahkod keseluruhan fail tanpa satu pun ralat:

encoding: unknown (not UTF-8)
these legacy encodings decode without errors; read the previews,
because a wrong one can still produce real-looking characters:
  gb18030  戞堦榖丂嵟屻偺僼僃儕乕
  cp932    第一話 最後のフェリー

Hanya baris kedua ialah bahasa Jepun. Baris pertama ialah rentetan aksara Cina jarang yang tidak ditulis oleh sesiapa. Pada sampel Cina GB18030, lima pengekodan menyahkod tanpa ralat, dan hanya satu daripadanya, GB18030, menunjukkan tajuk bab 第一章 最后一班渡轮. Jadi peraturannya mudah: tentukan pengekodan dengan membaca baris pertama, bukan dengan sama ada program merungut.

Di sinilah tekaan biasanya tersasar:

  • Teks Cina daripada sistem Windows lama atau laman Cina selalunya GBK atau GB18030. GB18030 merangkumi semua yang GBK liputi, dan Piawaian Pengekodan WHATWG, yang diikuti oleh pelayar, melangkah lebih jauh: ia menyatakan "penyahkod GBK ialah penyahkod gb18030." Jika fail adalah GBK, membukanya sebagai GB18030 akan berfungsi.
  • Cina Tradisional dari Taiwan atau Hong Kong selalunya Big5.
  • Jepun selalunya Shift_JIS, atau versi lanjutan Microsoft daripadanya, yang dipanggil cp932 oleh Windows dan Python.
  • Korea selalunya EUC-KR.
  • Fail yang penuh dengan bait NUL, atau fail yang setiap aksara berselang kelihatan kosong, biasanya UTF-16 tanpa tanda susunan bait.

Tanda susunan bait (BOM) ialah kod pendek tidak kelihatan pada permulaan fail yang mengumumkan UTF-8, UTF-16, atau UTF-32. Apabila ia hadir, percayalah padanya. Piawaian yang sama menyatakan bahawa "tanda susunan bait lebih berwibawa daripada apa-apa pun." Pemeriksa kami membaca BOM terlebih dahulu dan hanya meneka apabila tiada.

Simpan fail sebagai UTF-8

Sebaik sahaja teks dibaca dengan betul, simpannya sebagai UTF-8. Piawaian WHATWG memanggil UTF-8 sebagai "pengekodan yang paling sesuai untuk pertukaran Unicode," dan ia adalah pilihan paling selamat untuk mana-mana alat terjemahan.

Terdapat sebab kedua yang penting khususnya untuk terjemahan. Pengekodan legasi hanya meliputi aksara wilayahnya sendiri. Shift_JIS tiada kod untuk 这, aksara pertama bagi 这是最后一班渡轮, dan Big5 juga tiada kod untuknya, kerana ia ialah aksara Cina Ringkas. Windows-1252 tidak dapat menyimpan Cyrillic. Jika fail terjemahan perlu ditulis semula dalam pengekodan legasi asal, bahasa sasaran mungkin tidak muat. Penterjemah TXT BookTranslator menyatakan ia mengesan pengekodan biasa secara automatik dan mengembalikan fail terjemahan "dengan pengekodan yang sama seperti input," jadi bermula dengan UTF-8 menghapuskan persoalan itu sepenuhnya.

Anda boleh menukar dalam editor teks (buka dengan pengekodan yang betul, kemudian "Simpan sebagai" UTF-8), dengan iconv -f GB18030 -t UTF-8 in.txt > out.txt pada macOS atau Linux, atau dengan pemeriksa:

python3 check_txt.py convert book.txt book-utf8.txt --encoding gb18030

Jika fail sudah mengandungi aksara �, kerosakan berlaku sebelum anda menerimanya. Menukar semula tidak akan memulihkan aksara yang hilang. Cari salinan sumber yang lebih baik.

Langkah 2: Jadikan Bab Mudah Ditemui

Bab penting atas tiga sebab. Fail panjang diterjemah secara berperingkat, dan pemisah bab ialah tempat paling bersih untuk memotong. Anda perlu menyemak setiap bab selepas terjemahan. Dan jika kemudian anda menukar teks menjadi e-buku, tajuk bab menjadi senarai kandungan.

Letakkan setiap tajuk pada barisnya sendiri, dengan baris kosong sebelum dan selepasnya, dan gunakan satu corak sepanjang buku. Ini ialah corak yang dikira oleh pemeriksa kami:

  • Chapter 1, Chapter One: The Last Ferry, Part Two, Prologue, Epilogue
  • 第一章, 第12回, 第三話, 第二卷
  • nombor atau angka Rom sahaja pada satu baris, seperti 12 atau XII.

Jalankan inspect dan baca senarai tajuk yang ditemui. Jika buku mempunyai 40 bab dan pemeriksa menemui 37, tiga tajuk sedang tersembunyi: satu bercantum dengan ayat pertama, satu menggunakan perkataan berbeza seperti "Ch. 7," atau satu mempunyai teks pada baris yang sama. Betulkan ketiga-tiganya secara manual. Ia mengambil masa yang lebih singkat daripada mencari masalah dalam fail terjemahan.

Langkah 3: Buka Pemisah Baris Keras dengan Berhati-hati

Sesetengah fail TXT memisahkan setiap baris pada lebar tetap, supaya teks muat dalam terminal biasa atau tetingkap sempit. Teks yang disalin daripada PDF dan output OCR melakukan perkara yang sama pada lebar halaman bercetak. Dalam fail ini, pemisah baris bermaksud "baris itu penuh," bukan "ayat atau perenggan itu tamat."

Pembalutan keras mudah dikesan. Dalam sampel pembalutan keras kami, pemeriksa melaporkan:

non-empty lines: 43; longest line: 66 chars; 25 lines within 12 chars of the longest
line breaks inside paragraphs that do not end a sentence: 23
looks hard-wrapped: consider convert --unwrap

Pembetulannya ialah menggabungkan baris dalam setiap perenggan dan mengekalkan baris kosong antara perenggan. Perangkapnya ialah teks yang pemisah barisnya benar: puisi, lirik lagu, surat, alamat, resipi, dan senarai. Sampel kami termasuk surat lima baris:

My dear Mara,
The key is under the blue pot.
Do not let your uncle sell the boat.
With love, always,
Nonna

Tindakan kasar "ganti setiap pemisah baris tunggal dengan ruang" menjadikannya satu baris berterusan. --unwrap pemeriksa hanya menggabungkan perenggan apabila kebanyakan barisnya hampir mencapai lebar penuh, jadi blok baris pendek seperti surat ini dibiarkan. Pada sampel kami, ia membina semula fail asal yang tidak dibalut dengan tepat, bait demi bait, termasuk surat. Pada fail anda sendiri, semak beberapa perenggan yang digabungkan dan setiap blok puisi sebelum anda mempercayainya.

Dua lagi perincian. Apabila anda menggabungkan baris teks Cina atau Jepun, jangan tambah ruang di antaranya; pemeriksa menggabungkan baris CJK, termasuk baris yang berakhir dengan tanda baca CJK, tanpa ruang. Dan jika teks anda berasal daripada OCR, perkataan mungkin juga dipisahkan dengan sengkang pada hujung baris, yang memerlukan keputusan tersendiri. Panduan kami untuk membetulkan pemisah baris OCR dan penyengkangan merangkumi perkara itu.

Apa yang Kami Uji: Teks Berbalut Keras, Keseluruhan vs. Dipotong

Kami ingin tahu sama ada pembalutan keras benar-benar menjejaskan terjemahan, atau hanya kelihatan tidak kemas. Kami menulis cerpen 396 patah perkataan untuk ujian ini: tiga bab, lima belas perenggan, dialog, surat di atas, dan pemisah babak * * *. Kami menyimpannya dua kali dengan perkataan yang sama: tanpa pembalutan, dengan satu perenggan setiap baris, dan dibalut keras pada 66 aksara, yang mempunyai 43 baris bukan kosong berbanding 19.

Kemudian kami meminta model tempatan menterjemahkannya ke bahasa Cina Ringkas dalam tiga cara, tiga larian setiap satu:

  1. Dibalut, fail penuh. Fail yang dibalut keras dalam satu permintaan.
  2. Tanpa pembalutan, fail penuh. Fail tanpa pembalutan dalam satu permintaan.
  3. Dibalut, dipotong setiap 12 baris. Fail yang dibalut keras dipotong setiap 12 baris, satu permintaan bagi setiap bahagian, dan balasan dicantumkan semula. Inilah yang berlaku apabila skrip atau alat memotong fail panjang mengikut bilangan baris dan bukannya mengikut perenggan.

Model yang digunakan ialah Qwen 3.6 27B (Q4_K_M) dalam LM Studio, dengan mod berfikir dimatikan dan suhu 0.3, pada Apple M4 Max dengan memori 64 GB. Setiap permintaan menggunakan gesaan satu ayat yang sama. Kami menjalankannya pada 28 Oktober 2026. Skripnya ialah run_llm_txt_test.py, kesemua sembilan output diterbitkan tanpa suntingan, dan results.csv mempunyai satu baris bagi setiap larian.

Dibalut, fail penuhTanpa pembalutan, fail penuhDibalut, dipotong setiap 12 baris
Perenggan dikekalkan (15)3 daripada 3 larian3 daripada 3 larian0 daripada 3 (14 setiap kali)
Tajuk bab dikekalkan (3)3 daripada 33 daripada 33 daripada 3
Surat dikekalkan sebagai lima baris3 daripada 33 daripada 33 daripada 3
Ayat terpotong pada titik pemisahan003 dalam setiap larian
Tindakan diberikan kepada watak yang salah003 daripada 3 percubaan

Penemuan pertama mengejutkan kami. Apabila model melihat keseluruhan fail yang dibalut keras, ia menyatukan baris itu sendiri. Ketiga-tiga output mempunyai satu perenggan setiap baris, 19 baris yang sama seperti percubaan tanpa balutan, dan dibaca sama baiknya. Jadi pembalutan keras sahaja tidak menjejaskan model ini pada fail pendek ini.

Memotong fail mengikut bilangan baris memang menjejaskan, di tempat yang sama setiap kali. Tiga daripada 12 kepingan 12 baris berakhir di tengah ayat. Yang pertama berakhir pada "He pointed with his" dan kepingan seterusnya bermula dengan "pen at a three-storey building on the corner." Diterjemah secara berasingan, separuh kedua kehilangan subjeknya. Dalam dua percubaan ia kembali sebagai 她瞥了一眼街角那栋三层楼的建筑, "dia melirik bangunan tiga tingkat di sudut jalan." Dalam percubaan ketiga, ia berakhir dengan 随后她重新回到填字游戏上, "kemudian dia kembali ke teka-teki silang kata." Dalam cerita, lelaki di pondok tiket itu menunjuk dan kembali ke teka-teki silang katanya. Dalam ketiga-tiga percubaan, pembaca bahasa Cina akan menyangka Mara yang melakukannya.

Potongan kedua, antara "the careful, slightly old-fashioned hand she had learned at a" dan "convent school," membiarkan ayat Cina tergantung pada 那是她在, "di situlah dia," dalam ketiga-tiga percubaan (satu percubaan menambah 一 yang tersasar), dan perkataan "learned" hilang. Potongan ketiga memisahkan ayat tentang bidai merentasi dua baris, dan separuh kedua menukar "painted, not well, but not long ago" menjadi cat yang mengelupas: 油漆虽已斑驳 dalam dua percubaan dan 油漆剥落 dalam percubaan ketiga. Dan kerana kepingan itu digabungkan dengan satu pemisah baris, baris kosong sebelum pemisah bab lenyap, sebab itulah setiap percubaan mempunyai 14 perenggan dan bukannya 15. Pemeriksa kami menangkap bilangan perenggan. Ia tidak dapat menangkap watak yang salah; kami menemuinya dengan membaca.

Apa maksudnya untuk fail anda:

  • Membuka balutan melindungi anda daripada pemisah yang tidak anda kawal. Setiap fail panjang dipisahkan di suatu tempat, sama ada oleh skrip anda sendiri, had tetingkap sembang, atau alat yang anda muat naik. Jika perenggan adalah baris tunggal yang dipisahkan oleh baris kosong, mana-mana pemisah yang munasabah boleh memotong antara perenggan dan bukannya di dalam ayat.
  • Kesilapan paling teruk adalah lancar. "Dia melirik bangunan itu" adalah bahasa Cina yang baik. Pembaca akan perasan pemisah baris yang pelik pada setiap potongan dan 那是她在 yang tergantung, tetapi tiada apa yang menandakan watak yang salah atau cat yang mengelupas itu sebagai kesilapan. Kesilapan pada titik pemisah adalah kesilapan makna dahulu, kesilapan format kedua.
  • Ini adalah satu model dan satu cerita pendek. Fail sependek ini muat dalam satu permintaan, jadi percubaan keseluruhan fail tidak perlu memisahkan apa-apa. Novel penuh memang perlu dipisahkan, dan ketika itulah persediaan dalam Langkah 1 hingga 3 berbaloi. Fail-fail ini menguji persediaan dan pemisahan, bukan saluran paip BookTranslator sendiri.

Satu pemerhatian kecil: merentasi enam percubaan keseluruhan fail, model menulis nama Mara sebagai 玛拉 dalam lima dan 马拉 dalam satu. Setiap output konsisten dengan dirinya sendiri, tetapi permintaan berasingan tidak bersetuju antara satu sama lain. Untuk buku panjang yang diterjemah dalam banyak kepingan, senarai nama dan ejaan yang dipersetujui memastikan setiap bab selaras. Panduan glosari kami menunjukkan cara membinanya.

Langkah 4: Terjemah, Kemudian Semak Kiraan

Apabila fail itu bersih, menterjemahnya adalah bahagian yang mudah. Anda boleh memuat naiknya ke penterjemah TXT BookTranslator, yang menerima fail .txt, .md, dan .mdx, menyatakan ia mengendalikan fail TXT sehingga 300 MB, dan menunjukkan harga sebelum pembayaran. Tiada terjemahan penuh percuma, tetapi muat naik itu sendiri memberitahu anda kosnya. Jika anda lebih suka bekerja dengan model sembang atau LLM tempatan, pisahkan fail itu pada sempadan bab atau perenggan sendiri dan simpan glosari untuk nama. Jika teks anda adalah Markdown dan bukan prosa biasa, lihat panduan terjemahan Markdown kami, kerana sintaks Markdown memerlukan peraturan tersendiri.

Selepas terjemahan, bandingkan kedua-dua fail:

python3 check_txt.py compare book-utf8.txt book-translated.txt

Jika mana-mana fail bukan UTF-8, tambah --source-encoding atau --translated-encoding. Semakan bab mengetahui corak tajuk bahasa Inggeris dan Cina/Jepun; untuk bahasa sasaran lain, tambah perkataan tempatan untuk "bab" pada corak di bahagian atas skrip.

Ini adalah laporan untuk salah satu percubaan potongan kami:

                            source  translated
paragraphs                      15          14  <- differs
chapter headings                 3           3
non-empty lines                 43          24  <- differs
scene breaks (* * *)             1           1
replacement chars                0           0
source script LATIN characters left in translation: 0

Bacalah seperti ini:

  • Perenggan dan tajuk bab sepatutnya sepadan. Perenggan yang hilang selalunya bermaksud dua telah digabungkan atau satu telah digugurkan.
  • Baris tidak kosong boleh berbeza atas sebab yang baik. Percubaan keseluruhan fail yang dibalut kami berubah daripada 43 baris kepada 19 kerana model menyatukan baris yang dibalut keras, yang merupakan satu penambahbaikan. Bandingkan baris hanya apabila sumber itu sudah tidak dibalut.
  • Watak skrip sumber yang tertinggal menunjukkan petikan yang tidak diterjemah sama sekali. Beberapa adalah normal untuk nama, istilah produk, atau petikan; satu rentetan daripadanya adalah bahagian yang dilangkau.
  • Watak pengganti dalam terjemahan bermaksud masalah pengekodan pada jalan keluar.

Kiraan tidak dapat memberitahu anda sama ada terjemahan itu betul. Baca perenggan pertama dan terakhir setiap bab, dan perenggan pada kedua-dua belah setiap tempat fail itu dipisahkan. Di situlah ujian kami menemui setiap kesilapan serius.

Soalan Lazim

Mengapakah fail TXT saya kelihatan baik dalam satu program dan rosak dalam program lain?

Kedua-dua program meneka pengekodan yang berbeza. Satu meneka dengan betul. Cari pengekodan yang menunjukkan teks dengan betul, kemudian simpan fail sebagai UTF-8 supaya setiap program membacanya dengan cara yang sama.

Patutkah saya menukar fail TXT kepada EPUB atau DOCX sebelum menterjemah?

Hanya jika anda mahukan apa yang format tersebut tambahkan. Fail TXT yang bersih dengan bab yang jelas boleh diterjemah dengan baik sebagaimana adanya. Jika anda mahukan jadual kandungan, navigasi bab, dan e-buku yang boleh dibaca pada peranti, panduan kami tentang menukar novel web menjadi EPUB yang sedia untuk diterjemah membincangkan perkara itu.

Bolehkah saya menterjemah fail TXT yang mengandungi bahasa bercampur?

Boleh, tetapi beritahu penterjemah apa yang perlu dibiarkan. Petikan atau istilah dalam bahasa ketiga, dan nama yang perlu kekal dalam tulisan asalnya, lebih mudah dilindungi dengan glosari atau arahan ringkas daripada dibetulkan kemudian.

Bagaimana pula dengan fail TXT yang saya muat turun dari laman web?

Pastikan anda mempunyai hak untuk menggunakannya. Untuk buku dalam domain awam atau fail yang anda tulis sendiri, langkah-langkah di atas terpakai. Pengekodan atau format fail tidak memberitahu anda apa-apa tentang hak ciptanya.

Catatan Berkaitan