OCR Teks Vertikal Bahasa Jepang: Pertahankan Urutan Kolom dan Tangani Furigana
Ekstrak teks vertikal bahasa Jepang dengan pengaturan tata letak yang tepat, pisahkan furigana dari teks utama, dan periksa hasil OCR nyata terhadap sampel yang dapat diunduh.

Untuk OCR teks vertikal bahasa Jepang, periksa arah penulisan sebelum mengubah filter gambar. Gunakan model bahasa Jepang dan pengaturan segmentasi yang dapat menangani teks vertikal, verifikasi kolom dalam urutan yang semestinya, dan tentukan apakah Anda hanya memerlukan teks utama atau juga furigana. Halaman yang penuh dengan karakter yang dapat dikenali tetap bisa menjadi transkripsi yang tidak dapat digunakan jika urutannya salah.
Kami menjalankan eksperimen lokal kecil yang dapat direproduksi untuk membuat keputusan tersebut menjadi konkret. Konfigurasi horizontal mengacak tiga kolom vertikal kami. Konfigurasi vertikal memulihkan teks utama polos, tetapi menambahkan furigana mengubah dua tanda baca, dan memotong bagian ruby tidak menghilangkan kesalahan tanda baca.
Itu adalah hasil dari sampel sintetis yang sengaja dibuat kecil, bukan klaim akurasi tentang semua buku bahasa Jepang. Pelajaran yang berguna lebih spesifik: evaluasi pengenalan karakter, urutan baca, dan penanganan anotasi secara terpisah. Jangan kirimkan hasilnya untuk diterjemahkan hanya karena teks tersebut terlihat seperti bahasa Jepang.
Pertama, identifikasi teks yang sebenarnya Anda inginkan
Dalam komposisi vertikal konvensional bahasa Jepang, karakter bergerak ke bawah dalam satu baris dan baris berjalan dari kanan ke kiri. Ruby adalah teks yang lebih kecil yang dikaitkan dengan karakter dasar; furigana umumnya menyediakan pelafalannya. Persyaratan Tata Letak Teks Jepang dari W3C menjelaskan arah penulisan dan hubungan ruby ini.
Sebelum OCR, beri label pada bagian halaman yang bermakna:
- kolom vertikal utama;
- ruby kecil di samping teks utama;
- judul horizontal, keterangan gambar, atau tabel;
- nomor halaman dan kepala halaman (running head);
- catatan pinggir atau halaman bersebelahan yang tidak terkait.
Jangan perlakukan setiap strip vertikal sebagai paragraf independen. Secarik kana kecil di samping 図書館 mungkin adalah cara pembacaannya, としょかん, bukan kalimat berikutnya.
Pilih kebijakan keluaran sebelum menilai OCR:
| Tugas pembaca | Hasil yang diinginkan | Apa yang dianggap sebagai masalah |
|---|---|---|
| Cari atau terjemahkan isi | Teks utama secara berurutan; bacaan yang berguna disimpan secara terpisah | Ruby yang dimasukkan ke dalam prosa, teks isi yang dihilangkan, kolom yang diurutkan ulang |
| Pelajari pelafalan | Teks utama ditambah bacaan yang dikaitkan dengan benar | Ruby yang hilang atau bacaan yang dilampirkan pada kata yang salah |
| Menghasilkan transkripsi yang akurat | Teks utama, hubungan anotasi, dan keputusan editorial dipertahankan | Penghapusan atau normalisasi materi secara diam-diam yang ingin Anda pertahankan |
Keluaran yang sama dapat lulus satu tugas dan gagal pada tugas lainnya. Eksperimen kami menggunakan transkripsi khusus isi sebagai target perbandingannya. Eksperimen ini tidak menganggap furigana yang hilang dapat diterima untuk edisi studi pelafalan.
Eksperimen OCR tiga kalimat nyata
Sampel menggunakan kalimat-kalimat buatan sendiri ini:
朝の図書館で本を読む。
古い地図には川が見える。
明日は友人と駅で会う。
Kalimat-kalimat tersebut mendeskripsikan membaca di perpustakaan, melihat sungai di peta lama, dan bertemu seorang teman di stasiun. Terdapat 34 titik sandi Unicode teks isi saat jeda baris dihapus, termasuk tiga tanda titik Jepang.
Kami merender isi yang sama dalam tiga bentuk:
- Teks mendatar.
- Tiga kolom vertikal, dibaca dari kanan ke kiri.
- Kolom vertikal yang sama dengan furigana di samping
図書館,地図,友人, dan駅.

Ini adalah gambar pengajaran yang bersih, bukan halaman pindaian dari sebuah buku. Renderer menggunakan Noto Sans CJK JP, karakter isi 64 piksel, ruby 24 piksel, dan penempatan vertikal glif-demi-glif yang disederhanakan. Renderer menggambar titik vertikal sebagai lingkaran bergaris besar kecil pada posisi yang dipilih secara manual alih-alih menggunakan pemosisian glif vertikal yang tepat dari font; oleh karena itu, hasil tanda baca tidak menetapkan bagaimana kinerja OCR pada buku yang ditata secara tepat. Hal ini tidak mereproduksi setiap aturan tata huruf Jepang. Tidak ada keburaman, kemiringan, tekstur kertas, tulisan tangan, jenis huruf historis, atau halaman dengan arah campuran dalam pengujian ini.
Mesin, model, dan pengaturan
Eksperimen ini berjalan pada 7 September 2026, menggunakan Tesseract.js 7.0.0 dengan Tesseract.js-core 7.0.0 secara lokal di macOS ARM64. Semua pemanggilan yang berhasil menggunakan tessdata_fast model pada commit 87416418657359cb625c412a48b6e1d6d41c29bd, dengan OEM 1, mode mesin khusus LSTM.
Repositori model resmi Tesseract menyediakan file jpn dan jpn_vert terpisah. Dokumentasinya menjelaskan PSM 5 sebagai blok rata vertikal seragam dan PSM 6 sebagai blok teks seragam; pilih asumsi segmentasi yang sesuai dengan wilayah yang dikenali. Lihat dokumentasi segmentasi halaman.
Kasus yang kami catat menggunakan jpn dengan PSM 6 untuk teks horizontal, jpn_vert dengan PSM 5 untuk teks vertikal, dan kontrol vertikal jpn/PSM 6 yang sengaja tidak cocok. Baik model maupun segmentasi berubah di antara kedua konfigurasi vertikal tersebut, jadi ini adalah perbandingan alur kerja, bukan eksperimen yang mengisolasi efek dari salah satu pengaturan saja.
Percobaan awal dengan tessdata_best dibatalkan di inti WebAssembly yang tersedia sebelum menghasilkan teks OCR. Kami beralih ke model integer resmi tessdata_fast demi kompatibilitas dan mencatat kegagalan tersebut. Tidak ada kesimpulan tentang akurasi satu keluarga model yang dapat ditarik dari peralihan tersebut.
Apa yang sebenarnya dikembalikan
Perbandingan ini menghapus spasi putih dan menerapkan normalisasi Unicode NFC. Ini tidak mengganti tanda baca, mengoreksi kanji, atau menyusun ulang teks. Lengkapnya keluaran mentah dan hash versi/model, CSV perbandingan bodi, dan anotasi kesalahan dapat diunduh.
| Masukan dan konfigurasi | Hasil yang diamati terhadap target khusus teks utama |
|---|---|
Horizontal, jpn, PSM 6 | Semua 34 titik kode cocok setelah penghapusan spasi |
Vertikal, jpn, kontrol PSM 6 | Output berjalan melintasi kolom dan menyertakan substitusi karakter; bukan prosa yang dapat digunakan |
Vertikal, jpn_vert, PSM 5 | Semua 34 titik kode cocok setelah penghapusan spasi; urutan kolom sudah benar |
Vertikal dengan furigana, jpn_vert, PSM 5 | Teks utama tetap sesuai urutan, tetapi dua 。 tanda menjadi ASCII .; ruby tidak dikembalikan sebagai bacaan terpisah |
Tiga potongan kolom tubuh dari gambar furigana, jpn_vert, PSM 5 | Kolom pertama diakhiri dengan ., yang kedua dengan ,, yang ketiga dengan 。; pemotongan tidak menghilangkan semua cacat tanda baca |
Misalnya, kasus furigana menghasilkan baris pertama ini:
Expected: 朝の図書館で本を読む。
Observed: 朝 の 図書 館 で 本 を 読む .
Spasi diabaikan oleh aturan perbandingan yang kami nyatakan. Tanda baca akhir tidak diabaikan. Alur kerja berbasis pencarian saja mungkin mentolerir perbedaan tersebut, tetapi transkripsi yang setia harus mencatat dan memperbaikinya.
Kontrol vertikal yang tidak cocok dimulai dengan 明 古 昌, melompat melintasi karakter teratas kolom daripada mengikuti kalimat pertama yang dimaksudkan. Hasilnya menggambarkan mengapa mengenali simbol individual tidak sama dengan merekonstruksi urutan pembacaan.
Ada tujuh panggilan OCR yang diselesaikan: empat kasus gambar utuh dan tiga potongan. Kami mempertahankan setiap hasil. Satu agen membandingkan hasil tersebut dengan kebenaran dasar yang ditulis dan memeriksa gambar secara visual; tidak ada tinjauan manusia yang disamarkan atau korpus tolok ukur yang luas. Eksperimen ini tidak menetapkan mesin terbaik secara universal, tingkat keakuratan tingkat buku, atau kinerja pada pemindaian Anda.
Gunakan alur kerja berbasis wilayah pada halaman Anda sendiri
1. Pertahankan sumber dan pilih satu halaman yang sulit
Biarkan gambar atau PDF asli tetap tidak berubah. Bekerjalah pada salinan, dan catat nomor halamannya. Pilih halaman yang berisi masalah yang coba Anda selesaikan: ruby yang padat, selokan sempit, judul horizontal di atas teks vertikal, atau jenis huruf yang sangat kecil.
Halaman judul yang bersih bukanlah uji penerimaan yang berguna untuk buku yang halaman isinya memiliki tata letak berbeda. Jika sumbernya adalah PDF, ekstrak ataurender halaman yang dipilih menggunakan alat yang Anda percaya sebelum menjalankan alur kerja OCR khusus gambar. Skrip artikel ini menerima file PNG; mereka tidak memproses PDF atau membangun lapisan PDF yang dapat dicari.
Untuk proses persiapan dan terjemahan dokumen pindaian lengkap, gunakan alur kerja PDF pindaian yang lebih luas. Panduan ini berfokus pada arah bahasa Jepang, segmentasi, ruby, dan keputusan transkripsi.
2. Koreksi cacat pengambilan tanpa merusak teks kecil
Periksa karakter aktual pada tingkat zum yang berguna. Luruskan kemiringan yang tidak disengaja, hapus batas halaman yang tidak terkait, dan pertahankan kontras yang cukup untuk membedakan kana kecil dan tanda baca. Hindari memperlakukan ambang batas agresif atau penajaman sebagai peningkatan otomatis: bandingkan gambar yang dihasilkan dengan yang asli sebelum mempercayai OCR.
Panduan kualitas gambar Tesseract mencakup resolusi, derau, kemiringan, dan batas. Hal tersebut terpisah dari arah penulisan. Meluruskan halaman yang difoto pada suatu sudut bukanlah operasi yang sama dengan memutar teks vertikal Jepang tegak ke samping.
File sampel membawa metadata 300 dpi, tetapi angka tersebut tidak menciptakan detail yang hilang. Ukuran glyph isi aktualnya adalah 64 piksel. Foto resolusi rendah yang diberi label ulang “300 dpi” tetap merupakan foto resolusi rendah yang sama.
3. Pisahkan wilayah ketika halaman melanggar satu asumsi tata letak
Coba blok vertikal utama secara mandiri sebelum meminta satu panggilan OCR untuk menangani judul horizontal, prosa vertikal, ilustrasi, dan nomor halaman. Simpan catatan wilayah yang sederhana seperti “halaman 12, isi, kolom 1 dari kanan.” Catatan tersebut membuat perakitan selanjutnya dapat diaudit.
Untuk materi dengan arah campuran, kenali wilayah horizontal dengan pengaturan horizontal yang sesuai dan wilayah vertikal dengan pengaturan vertikal, lalu kumpulkan dalam urutan yang dimaksudkan oleh dokumen. Ini adalah alur kerja yang disarankan untuk diuji pada file Anda, bukan kemampuan tata letak campuran yang diukur oleh tiga gambar sampel kami.
Eksperimen potongan kami menggunakan koordinat pasti yang diketahui untuk mengecualikan strip ruby di samping setiap kolom sintetis sambil tetap mempertahankan teks isinya dan margin putih. Ini adalah demonstrasi pemilihan wilayah manual, bukan algoritma penghilangan furigana otomatis. Jangan terapkan koordinatnya pada halaman buku nyata.
4. Periksa kolom sebelum mengoreksi karakter individual
Bandingkan karakter isi pertama dan terakhir dari setiap kolom, bekerja dalam arah yang dimaksudkan. Konfirmasikan bahwa tidak ada kolom yang hilang, duplikat, terbalik, atau berbaur dengan tetangganya. Kemudian periksa kalimat di batas kolom.
Hanya setelah itu Anda harus mengoreksi masing-masing kanji, kana, tanda baca, angka, dan nama. Jika tidak, Anda dapat menghabiskan waktu menyempurnakan fragmen yang dirangkai ke dalam paragraf yang salah.
Tinjauan tiga tahap yang berguna adalah:
- Wilayah dan urutan: setiap wilayah teks yang dimaksud hadir satu kali dan sesuai urutan.
- Karakter: bandingkan gambar aktual dengan teks, termasuk tanda baca kecil dan tanda kana.
- Anotasi: tentukan apakah setiap item ruby, catatan, atau label marjinal dipertahankan, dipisahkan, atau sengaja dikecualikan.
Nilai keyakinan mesin bukanlah pengganti untuk pemeriksaan ini. Kontrol acak kami tetap mengembalikan angka keyakinan yang dilaporkan oleh mesin; hal itu tidak membuat urutan pembacaannya dapat diterima.
Jangan menghapus furigana sampai Anda tahu alasannya
Untuk ekstraksi teks saja, ruby sebaiknya tidak secara tidak sengaja menjadi lapisan prosa kedua. Namun, menghapus setiap string kana kecil bukanlah aturan umum yang aman. Bacaan dapat membantu memperjelas nama, mempertahankan pengeluaran pilihan penulis, atau mendukung tugas belajar pembaca.
Dalam gambar furigana kami, keluaran OCR berisi kanji utama tetapi tidak mengembalikan keempat bacaan sebagai set anotasi terpisah. Hal itu mungkin sudah cukup setelah koreksi tanda baca untuk tugas pencarian teks saja. Hal itu tidak cukup jika hasil yang dijanjikan menjanjikan informasi pengucapan.
Simpan bacaan penting secara terpisah dan kaitkan dengan kemunculan yang tepat. Contohnya:
Page: sample 1
Column: 1 from the right
Base text: 図書館
Reading shown: としょかん
Decision: retain body text; save reading in the annotation record
Sampel transkripsi ruby terpisah membuat kebijakan tersebut menjadi eksplisit. Itu adalah kebenaran dasar yang dibuat bersama gambar, bukan klaim keberhasilan OCR.
Jika OCR mencampur kana ke dalam suatu kata atau kehilangan asosiasinya, bandingkan dengan gambar dan perbaiki transkripsinya. Jangan meminta model bahasa untuk menebak sumber dan menyajikan tebakan tersebut sebagai teks yang dipulihkan. Tandai bacaan yang tidak pasti untuk ditinjau sebagai gantinya.
Hasil potongan juga menentang aturan sederhana "hapus ruby dan semuanya membaik": dua perbedaan tanda baca tetap ada, dan akhir kalimat yang terpengaruh berubah. Pengamatan tersebut milik perlengkapan bersih tertentu ini. Pengamatan itu memberi tahu kita untuk memverifikasi hasil setelah segmentasi, bukan bahwa pemotongan secara umum membantu atau merusak OCR.
Reproduksi pengujian atau simpan log tinjauan
Unduh README eksperimen untuk sumber model dan fon yang disematkan, versi dependensi, deskripsi file, dan perintah. generator sampel, menjalankan OCR, dan skrip perbandingan pemisahan pembuatan gambar, pengenalan, dan evaluasi.
Runner ini menggunakan API pekerja Tesseract.js yang didokumentasikan. Untuk wilayah vertikal, pengaturan esensialnya adalah:
const worker = await createWorker("jpn_vert", 1, {
langPath: modelDirectory,
gzip: false,
cacheMethod: "none",
});
await worker.setParameters({
tessedit_pageseg_mode: "5",
user_defined_dpi: "300",
});
modelDirectory harus berisi file jpn_vert.traineddata yang telah diunduh dan didekompresi. Ini adalah kutipan, bukan program lengkap; runner yang disediakan juga menyimpan hasil mentah dan menghentikan pekerja.
Jika Anda menggunakan aplikasi OCR lain, pertahankan bukti yang sama meskipun nama pengaturannya berbeda: wilayah sumber, file asli, versi model atau alat, arah, pilihan segmentasi, keluaran aktual, teks yang dikoreksi, dan karakter yang belum diselesaikan. templat log peninjauan kosong sehingga tidak menyiratkan bahwa halaman Anda sudah lulus.
Jangan mengubah hasil kecocokan persis yang kecil ini menjadi persentase yang dijanjikan untuk seluruh novel. Berbagai font, kolom yang padat, bentuk historis, pemindaian berkualitas rendah, dan balon teks manga memerlukan pengujian representatifnya sendiri. Tata letak manga dan pengenalan tulisan tangan berada di luar eksperimen ini.
Terjemahkan hanya jika sumber yang dipulihkan dapat dipercaya
Jika tujuan Anda adalah mencari, menyalin kutipan, atau pencarian kamus, teks Jepang yang telah diverifikasi mungkin merupakan hasil akhir. Anda tidak perlu menerjemahkan seluruh dokumen hanya karena OCR terlibat.
Jika hambatan bahasa masih menghalangi pembacaan dan Anda memiliki file yang dapat digunakan untuk diunggah, lanjutkan dengan alur kerja terjemahan PDF. Pertahankan pemindaian asli dan transkripsi yang dicentang sehingga Anda dapat membedakan kesalahan pengenalan dari kesalahan terjemahan. Runner sampel menghasilkan file teks dan TSV, bukan PDF yang siap untuk diunggah otomatis; siapkan format input aktual yang dibutuhkan alat Anda berikutnya.
Mode OCR BookTranslator merekonstruksi konten yang diterjemahkan alih-alih menjamin tata letak vertikal asli. Jangan berasumsi bahwa mode ini akan mempertahankan setiap asosiasi ruby atau memperbaiki kesalahan pengenalan yang belum diverifikasi. Tinjau urutan baca dan pemformatan dokumen akhir menggunakan panduan preservasi format PDF dan daftar periksa QA PDF akhir.
Penyerahan yang andal bukanlah "OCR selesai." Melainkan "teks Jepang yang dimaksudkan sudah ada, urutannya telah diperiksa, dan penanganan anotasi didokumentasikan."
Artikel Terkait





