BookTranslator
BookTranslator

Cara Menerjemahkan File TXT Besar: Encoding, Bab, dan Pemenggalan Baris

Perbaiki encoding, tandai bab, dan satukan pemenggalan baris paksa sebelum menerjemahkan file .txt yang panjang. Dilengkapi file contoh, pemeriksa gratis, dan uji 9 kali jalan.

BookTranslator

BookTranslator Team

15 menit baca

Untuk menerjemahkan file TXT besar, siapkan tiga hal sebelum mengunggahnya ke mana pun. Pertama, pastikan teks terdekode dengan benar dan simpan sebagai UTF-8. Kedua, letakkan setiap judul bab pada barisnya sendiri dengan baris kosong di sekitarnya. Ketiga, jika file memenggal baris pada lebar tetap, satukan baris-baris itu sehingga setiap paragraf menjadi satu baris, dengan baris kosong di antara paragraf. Lalu terjemahkan seluruh file, dan setelah itu bandingkan jumlah paragraf dan bab antara sumber dan terjemahan.

File teks biasa tidak memiliki gaya, judul, maupun metadata. Segala yang diketahui alat penerjemah tentang strukturnya berasal dari byte dan pemenggalan baris. Itulah sebabnya tiga masalah yang sama terus muncul: byte dibaca dengan encoding yang salah, bab tidak dapat dibedakan dari baris biasa, atau pemenggalan baris tidak memberi petunjuk di mana kalimat berakhir.

Kami membuat file contoh dalam empat encoding, menulis pemeriksa gratis, dan menerjemahkan sebuah cerpen yang dipenggal paksa ke bahasa Mandarin Sederhana sembilan kali dengan model lokal. Model menangani pemenggalan paksa dengan baik saat melihat seluruh file. Model memutus kalimat dan memberikan tindakan satu tokoh kepada tokoh lain di ketiga percobaan ketika file dipotong menjadi beberapa bagian berdasarkan jumlah baris.

Daftar Periksa Singkat

PemeriksaanTampilan yang baikCara memperbaikinya
EncodingBaris-baris pertama terbaca dengan benar; file berformat UTF-8Buka kembali dengan encoding yang tepat, lalu simpan sebagai UTF-8
Byte order markTidak ada, atau ada yang Anda ketahuiSimpan sebagai "UTF-8" alih-alih "UTF-8 with BOM" jika ada alat yang mengeluh
Judul babMasing-masing berdiri sendiri di satu baris, dengan baris kosong sebelum dan sesudahnyaPerbaiki beberapa judul yang menyatu dengan teks
ParagrafSatu baris kosong di antara paragrafTambahkan baris kosong di tempat paragraf hanya dimulai dengan indentasi
Pemenggalan baris paksaSetiap paragraf menjadi satu baris panjangSatukan baris di dalam paragraf, tetapi biarkan puisi, surat, dan daftar apa adanya
Akhir barisSatu gaya di seluruh berkasKonversi akhir baris CR Mac lama; LF dan CRLF keduanya baik-baik saja
Teks rusakTidak ada karakter �Dapatkan salinan yang lebih baik. Konversi tidak dapat mengembalikan karakter yang hilang

Pemeriksa melaporkan setiap baris dan memperbaiki pengodean, tanda urutan byte, akhir baris, dan pembungkusan paksa. Judul bab dan baris kosong yang hilang harus Anda perbaiki 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 paragraf yang disatukan. Ini hanya memerlukan Python 3, dan tidak pernah mengubah berkas asli.

Langkah 1: Dapatkan Pengodean yang Tepat

Berkas TXT adalah rangkaian byte. Pengodean adalah aturan yang mengubah byte tersebut menjadi karakter, dan berkas tidak memberi tahu aturan mana yang digunakan. Jika program salah menebak, Anda akan mendapatkan mojibake: teks yang kacau, atau lebih buruk lagi, teks yang terlihat baik-baik saja tetapi bukan seperti yang ditulis.

Berikut adalah frasa Tionghoa yang sama, 最后一班渡轮 ("kapal feri terakhir"), yang dibaca dengan aturan yang salah. Kami membuatnya dengan codec bawaan Python, dan Anda dapat mereproduksinya dengan berkas contoh.

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

Baris terakhir adalah yang berbahaya. Byte Jepang yang dibaca sebagai Tionghoa menghasilkan karakter Tionghoa asli, tanpa kesalahan dan tanpa �. Alat penerjemah akan dengan senang hati menerjemahkannya, dan hasilnya akan menjadi omong kosong dengan tata bahasa yang baik.

Pemeriksa kami menunjukkan mengapa Anda tidak dapat mengandalkan "berkas terbuka tanpa kesalahan." Saat kami menjalankannya pada contoh Shift_JIS, dua pengodean mendekode seluruh berkas tanpa satu pun kesalahan:

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 yang berbahasa Jepang. Baris pertama adalah rangkaian karakter Tionghoa langka yang tidak ditulis oleh siapa pun. Pada contoh Tionghoa GB18030, lima pengodean mendekode tanpa kesalahan, dan hanya satu di antaranya, GB18030, yang menampilkan judul bab 第一章 最后一班渡轮. Jadi aturannya sederhana: tentukan pengodean dengan membaca baris-baris pertama, bukan dari apakah program mengeluh.

Di sinilah tebakan biasanya meleset:

  • Teks Tionghoa dari sistem Windows lama atau situs Tionghoa sering kali berenkode GBK atau GB18030. GB18030 mencakup semua yang dicakup GBK, dan WHATWG Encoding Standard, yang diikuti peramban, melangkah lebih jauh: standar itu menyatakan "dekoder GBK adalah dekoder gb18030." Jika sebuah file berenkode GBK, membukanya sebagai GB18030 akan berhasil.
  • Tionghoa Tradisional dari Taiwan atau Hong Kong sering kali berenkode Big5.
  • Jepang sering kali berenkode Shift_JIS, atau versi perluasan dari Microsoft yang disebut cp932 oleh Windows dan Python.
  • Korea sering kali berenkode EUC-KR.
  • File yang penuh dengan byte NUL, atau file yang setiap karakter lainnya tampak kosong, biasanya berenkode UTF-16 tanpa byte order mark.

Byte order mark (BOM) adalah kode tak terlihat singkat di awal file yang mengumumkan UTF-8, UTF-16, atau UTF-32. Jika ada BOM, percayalah pada BOM itu. Standar yang sama menyatakan bahwa "byte order mark lebih berwenang daripada apa pun." Pemeriksa kami membaca BOM terlebih dahulu dan hanya menebak jika tidak ada BOM.

Simpan file sebagai UTF-8

Setelah teks terbaca dengan benar, simpan sebagai UTF-8. Standar WHATWG menyebut UTF-8 sebagai "encoding yang paling tepat untuk pertukaran Unicode," dan itu adalah pilihan teraman untuk alat penerjemah apa pun.

Ada alasan kedua yang khususnya penting untuk penerjemahan. Encoding lama hanya mencakup karakter dari wilayahnya sendiri. Shift_JIS tidak memiliki kode untuk 这, karakter pertama dari 这是最后一班渡轮, dan Big5 juga tidak memilikinya, karena itu adalah karakter Tionghoa Sederhana. Windows-1252 tidak dapat menyimpan huruf Kiril. Jika file terjemahan harus ditulis kembali dalam encoding lama asli, bahasa target mungkin tidak muat. Penerjemah TXT BookTranslator dikatakan mendeteksi encoding umum secara otomatis dan mengembalikan file terjemahan "dengan encoding yang sama seperti input," jadi memulai dari UTF-8 menghilangkan pertanyaan itu sepenuhnya.

Anda dapat mengonversi di editor teks (buka dengan encoding yang benar, lalu "Simpan sebagai" UTF-8), dengan iconv -f GB18030 -t UTF-8 in.txt > out.txt di macOS atau Linux, atau dengan pemeriksa:

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

Jika file sudah berisi karakter �, kerusakan terjadi sebelum Anda menerimanya. Mengonversi lagi tidak akan memulihkan karakter yang hilang. Carilah salinan sumber yang lebih baik.

Langkah 2: Buat Bab Mudah Ditemukan

Bab penting karena tiga alasan. File panjang diterjemahkan dalam potongan, dan jeda bab adalah tempat pemotongan yang paling bersih. Anda perlu memeriksa setiap bab setelah penerjemahan. Dan jika nanti Anda mengubah teks menjadi ebook, judul bab menjadi daftar isi.

Letakkan setiap judul di barisnya sendiri, dengan baris kosong sebelum dan sesudahnya, dan gunakan satu pola yang konsisten di seluruh buku. Berikut adalah pola yang dihitung oleh pemeriksa kami:

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

Jalankan inspect dan baca daftar judul yang ditemukan. Jika buku memiliki 40 bab dan pemeriksa menemukan 37, tiga judul tersembunyi: satu menyatu dengan kalimat pertama, satu menggunakan kata lain seperti "Ch. 7," atau satu memiliki teks di baris yang sama. Perbaiki ketiganya secara manual. Itu memakan waktu lebih sedikit daripada menemukan masalahnya di file terjemahan.

Langkah 3: Hapus Pemisah Baris Keras dengan Hati-hati

Beberapa file TXT memecah setiap baris pada lebar tetap, agar teks muat di terminal biasa atau jendela sempit. Teks yang disalin dari PDF dan hasil OCR melakukan hal yang sama pada lebar halaman cetak. Dalam file seperti ini, pemisah baris berarti "baris sudah penuh," bukan "kalimat atau paragraf berakhir."

Pembungkusan keras mudah dikenali. Dalam sampel pembungkusan 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

Perbaikannya adalah menggabungkan baris-baris di dalam setiap paragraf dan mempertahankan baris kosong di antara paragraf. Jebakannya adalah teks yang pemisah barisnya nyata: puisi, lirik lagu, surat, alamat, resep, dan daftar. Sampel kami menyertakan 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

Perintah sederhana "ganti setiap pemisah baris tunggal dengan spasi" akan mengubahnya menjadi satu baris panjang. Opsi --unwrap pada pemeriksa hanya menggabungkan paragraf jika sebagian besar barisnya mendekati lebar penuh, sehingga blok baris pendek seperti surat ini dibiarkan. Pada sampel kami, perintah itu merekonstruksi file asli yang belum dibungkus secara persis, byte demi byte, termasuk suratnya. Pada file Anda sendiri, periksa beberapa paragraf yang digabungkan dan setiap blok puisi sebelum Anda memercayainya.

Dua detail lagi. Saat menggabungkan baris teks Tionghoa atau Jepang, jangan menambahkan spasi di antaranya; pemeriksa menggabungkan baris CJK, termasuk baris yang berakhir dengan tanda baca CJK, tanpa spasi. Dan jika teks Anda berasal dari OCR, kata-kata mungkin juga terpisah dengan tanda hubung di akhir baris, yang memerlukan keputusan tersendiri. Panduan kami untuk memperbaiki pemisah baris dan tanda hubung OCR membahasnya.

Yang Kami Uji: Teks dengan Pembungkusan Keras, Utuh vs. Dipotong

Kami ingin mengetahui apakah pembungkusan keras benar-benar merusak terjemahan, atau hanya terlihat tidak rapi. Kami menulis cerita pendek 396 kata untuk pengujian: tiga bab, lima belas paragraf, dialog, surat di atas, dan jeda adegan * * *. Kami menyimpannya dua kali dengan kata-kata yang sama: tanpa pembungkusan, dengan satu paragraf per baris, dan dibungkus keras pada 66 karakter, yang memiliki 43 baris tidak kosong alih-alih 19.

Kemudian kami meminta model lokal untuk menerjemahkannya ke bahasa Mandarin Sederhana dengan tiga cara, masing-masing tiga kali:

  1. Dibungkus, seluruh file. File yang dibungkus keras dalam satu permintaan.
  2. Tanpa pembungkusan, seluruh file. File tanpa pembungkusan dalam satu permintaan.
  3. Dibungkus, dipotong setiap 12 baris. File yang dibungkus keras dipotong setiap 12 baris, satu permintaan per potongan, balasannya digabungkan kembali. Inilah yang terjadi ketika skrip atau alat memotong file panjang berdasarkan jumlah baris alih-alih berdasarkan paragraf.

Model yang digunakan adalah Qwen 3.6 27B (Q4_K_M) di LM Studio, dengan thinking dimatikan dan temperature 0,3, pada Apple M4 Max dengan memori 64 GB. Setiap permintaan menggunakan prompt satu kalimat yang sama. Kami menjalankannya pada 28 Oktober 2026. Skripnya adalah run_llm_txt_test.py, kesembilan output diterbitkan tanpa diedit, dan results.csv memiliki satu baris per eksekusi.

Dibungkus, seluruh fileTanpa pembungkusan, seluruh fileDibungkus, dipotong setiap 12 baris
Paragraf dipertahankan (15)3 dari 3 eksekusi3 dari 3 eksekusi0 dari 3 (14 setiap kali)
Judul bab dipertahankan (3)3 dari 33 dari 33 dari 3
Surat dipertahankan sebagai lima baris3 dari 33 dari 33 dari 3
Kalimat terpotong pada titik pemisahan003 di setiap eksekusi
Aksi diberikan kepada karakter yang salah003 dari 3 percobaan

Temuan pertama mengejutkan kami. Saat model melihat seluruh file yang dibungkus keras, ia menyatukan baris-baris itu sendiri. Ketiga keluaran memiliki satu paragraf per baris, 19 baris yang sama dengan percobaan tanpa pembungkusan, dan terbaca sama baiknya. Jadi pembungkusan keras saja tidak merugikan model ini pada file pendek ini.

Memotong file berdasarkan jumlah baris memang merugikan, di tempat yang sama setiap kali. Tiga dari 12 potongan baris berakhir di tengah kalimat. Potongan pertama berakhir pada "He pointed with his" dan potongan berikutnya dimulai dengan "pen at a three-storey building on the corner." Diterjemahkan terpisah, paruh kedua kehilangan subjeknya. Dalam dua percobaan hasilnya kembali sebagai 她瞥了一眼街角那栋三层楼的建筑, "she glanced at the three-storey building on the corner." Pada percobaan ketiga, hasilnya berakhir dengan 随后她重新回到填字游戏上, "then she went back to the crossword." Dalam cerita, pria di bilik tiket menunjuk dan kembali ke teka-teki silangnya. Dalam ketiga percobaan, pembaca bahasa Mandarin akan mengira Mara yang melakukannya.

Potongan kedua, antara "the careful, slightly old-fashioned hand she had learned at a" dan "convent school," membuat kalimat Mandarin menggantung pada 那是她在, "that was where she," dalam ketiga percobaan (satu percobaan menambahkan 一 yang tersesat), dan kata "learned" menghilang. Potongan ketiga membagi kalimat tentang jendela ke dalam dua baris, dan paruh kedua mengubah "painted, not well, but not long ago" menjadi cat yang mengelupas: 油漆虽已斑驳 dalam dua percobaan dan 油漆剥落 pada percobaan ketiga. Dan karena potongan-potongan disatukan dengan satu jeda baris, baris kosong sebelum jeda adegan hilang, itulah sebabnya setiap percobaan memiliki 14 paragraf bukan 15. Pemeriksa kami menangkap jumlah paragraf. Ia tidak dapat menangkap karakter yang salah; kami menemukannya dengan membaca.

Apa artinya ini untuk file Anda:

  • Membuka pembungkusan melindungi Anda dari pemecah yang tidak Anda kendalikan. Setiap file panjang dipotong di suatu tempat, entah oleh skrip Anda sendiri, batas jendela obrolan, atau alat yang Anda unggah. Jika paragraf adalah baris tunggal yang dipisahkan baris kosong, pemecah mana pun yang wajar dapat memotong di antara paragraf alih-alih di dalam kalimat.
  • Kesalahan terburuknya lancar. "She glanced at the building" adalah bahasa Mandarin yang baik. Pembaca akan menyadari jeda baris yang aneh di setiap potongan dan 那是她在 yang menggantung, tetapi tidak ada yang menandai karakter yang salah atau cat yang mengelupas sebagai kesalahan. Kesalahan pada titik potong adalah kesalahan makna terlebih dahulu, kesalahan format kedua.
  • Ini satu model dan satu cerita pendek. File sependek ini muat dalam satu permintaan, jadi percobaan seluruh file tidak pernah perlu memotong apa pun. Novel lengkap memang harus dipotong, dan justru di situlah persiapan pada Langkah 1 hingga 3 membuahkan hasil. File-file ini menguji persiapan dan pemotongan, bukan pipeline BookTranslator sendiri.

Satu pengamatan lebih kecil: di enam percobaan seluruh file, model menulis nama Mara sebagai 玛拉 dalam lima percobaan dan 马拉 dalam satu. Setiap keluaran konsisten dengan dirinya sendiri, tetapi permintaan terpisah tidak saling sepakat. Untuk buku panjang yang diterjemahkan dalam banyak potongan, daftar nama dan ejaan yang disepakati menjaga setiap bab tetap selaras. Panduan glosarium kami menunjukkan cara membuatnya.

Langkah 4: Terjemahkan, Lalu Periksa Jumlahnya

Saat file sudah bersih, menerjemahkannya adalah bagian yang mudah. Anda dapat mengunggahnya ke penerjemah TXT BookTranslator, yang menerima file .txt, .md, dan .mdx, menyatakan dapat menangani file TXT hingga 300 MB, dan menampilkan harga sebelum pembayaran. Tidak ada terjemahan lengkap gratis, tetapi unggahan itu sendiri memberi tahu Anda biayanya. Jika Anda lebih suka bekerja dengan model obrolan atau LLM lokal, potong file sendiri di batas bab atau paragraf dan simpan glosarium untuk nama. Jika teks Anda adalah Markdown bukan prosa biasa, lihat panduan terjemahan Markdown kami, karena sintaks Markdown memerlukan aturannya sendiri.

Setelah terjemahan, bandingkan kedua file:

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

Jika salah satu file bukan UTF-8, tambahkan --source-encoding atau --translated-encoding. Pemeriksaan bab mengenali pola judul bahasa Inggris dan Mandarin/Jepang; untuk bahasa target lain, tambahkan kata lokal untuk "bab" ke pola di bagian atas skrip.

Ini adalah laporan untuk salah satu percobaan terpotong 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:

  • Paragraf dan judul bab harus cocok. Paragraf yang hilang sering berarti dua paragraf digabung atau satu dihilangkan.
  • Baris tidak kosong bisa berbeda karena alasan yang baik. Percobaan seluruh file yang dibungkus kami berubah dari 43 baris menjadi 19 karena model menyatukan baris yang dibungkus keras, yang merupakan peningkatan. Bandingkan baris hanya jika sumbernya sudah tidak dibungkus.
  • Karakter skrip sumber yang tersisa menunjuk ke bagian yang tidak diterjemahkan sama sekali. Beberapa adalah normal untuk nama, istilah produk, atau kutipan; rangkaian karakter tersebut adalah bagian yang terlewat.
  • Karakter pengganti dalam terjemahan berarti masalah pengodean pada saat keluaran.

Jumlah tidak dapat memberi tahu Anda apakah terjemahannya benar. Bacalah paragraf pertama dan terakhir setiap bab, dan paragraf di kedua sisi setiap tempat file dipotong. Di situlah pengujian kami menemukan setiap kesalahan serius.

Pertanyaan yang Sering Diajukan

Mengapa file TXT saya terlihat baik di satu program dan rusak di program lain?

Kedua program menebak pengodean yang berbeda. Satu menebak dengan benar. Temukan pengodean yang menampilkan teks dengan benar, lalu simpan file sebagai UTF-8 agar setiap program membacanya dengan cara yang sama.

Haruskah saya mengonversi file TXT ke EPUB atau DOCX sebelum menerjemahkan?

Hanya jika Anda menginginkan tambahan yang ditawarkan format tersebut. File TXT bersih dengan bab yang jelas dapat diterjemahkan dengan baik apa adanya. Jika Anda menginginkan daftar isi, navigasi bab, dan ebook yang dapat dibaca di perangkat, panduan kami untuk mengubah novel web menjadi EPUB siap terjemahan membahasnya secara lengkap.

Bisakah saya menerjemahkan file TXT dengan bahasa campuran?

Bisa, tetapi beri tahu penerjemah apa yang harus dibiarkan. Kutipan atau istilah dalam bahasa ketiga, serta nama yang harus tetap dalam aksara aslinya, lebih mudah dilindungi dengan glosarium atau instruksi singkat daripada diperbaiki setelahnya.

Bagaimana dengan file TXT yang saya unduh dari situs web?

Pastikan Anda berhak menggunakannya. Untuk buku dalam domain publik atau file yang Anda tulis sendiri, langkah-langkah di atas berlaku. Encoding atau format file tidak memberi tahu apa pun tentang hak ciptanya.

Artikel Terkait