Konverter Hangeul berbasis Pandoc - memperkenalkan alat open source untuk mengonversi md, html, docx ke hwpx.
(github.com/msjang)Dikembangkan untuk mengatasi ketidaknyamanan dalam pekerjaan dokumen HWP setelah 9 tahun bekerja di lembaga penelitian pemerintah.
Latar belakang pengembangan
- 2018: Saat masih pemula di Python, mencoba konverter HML/HWPML berbasis regular expression - https://github.com/msjang/md2hml
- Januari 2025: mengembangkan hwpfy
- Mengompilasi laporan kerja mingguan dari sekitar 20 orang berbasis wiki kolaboratif penyuntingan real-time
- Wiki → ekspor ke DOCX → konversi ke DOCX dengan format formulir pegawai negeri (hwpfy) → buka di aplikasi Hangeul lalu simpan sebagai HWPX → bagikan ke departemen atasan internal dalam format HWPX
- Desember 2025: pypandoc-hwpx
- Saya merasa kemampuan saya kini sudah cukup matang, jadi saya meluangkan waktu dan mengembangkannya dengan serius.
Cara pengembangan
- Saya membuat DOCX dengan format yang diinginkan lalu menyimpannya sebagai HWPX.
- Saya men-unzip DOCX dan HWPX yang dihasilkan, lalu melihat XML-nya, menghapus atribut yang tidak diperlukan, dan merapikannya. Setelah itu saya juga memastikan file tersebut bisa dibuka dengan baik di Word dan aplikasi Hangeul.
- Saya membuat dokumen yang membandingkan format md, html, docx, hwpx. - https://github.com/msjang/pypandoc-hwpx/…
- Awalnya saya ingin melihat
format_comparison.mddi atas lalu menyuruh LLM menulis kodenya, tetapi kemudian saya sadar bahwa saya sebenarnya sudah memiliki HWPX jawaban yang benar. - Saya membuatnya sambil beberapa kali menerima umpan balik dari Antigravity (Gemini Pro 3). Karena hasilnya tidak keluar dalam format yang diinginkan, saya menelaah XML secara rinci dan memberi umpan balik. Saya memang tidak secara langsung menyebut dokumen perbandingan format itu, tetapi memahami isinya sangat membantu saat meninjau hasilnya.
Rencana selanjutnya
Saya ingin menghapus bagian Python dari Pypandoc, lalu menulisnya dalam Haskell untuk berkontribusi HWPX writer ke Pandoc.
7 komentar
Rasanya ini jenis produk yang seharusnya lebih dulu dikembangkan oleh Hancom... kalau Hancom memang punya niat untuk berekspansi ke luar negeri.
Saya mendukung kontribusi Haskell!
Awalnya saya ingin membuatnya pelan-pelan selama satu atau dua bulan, tetapi kemarin berita https://youtu.be/8cSqPRsM_Yg sudah keluar, jadi saya buru-buru membuatnya.
Keren sekali.
Namun mohon maaf, bukankah arah konversi yang diinginkan presiden adalah
hwp* -> .md, docs, pdf plain text ...? Apakah proyek ini juga mendukung konversi ke arah sebaliknya?Sudah sejak lama ada banyak library yang mem-parsing
hwpatauhwpx. Untuk yang berbasis Java, yang ini cukup terkenal.https://github.com/neolord0/hwplib
https://github.com/neolord0/hwpxlib
Di Python ada yang membungkus Hancom win32 api. Ini yang sering muncul di materi awal otomatisasi HWP. Intinya mengendalikan aplikasi HWP untuk Windows dari backend.
https://pypi.org/project/pyhwpx/
Kalau dengan Python ingin menangani HWPX secara mandiri tanpa program terpisah, ada ini. Bisa untuk membaca atau mengganti isi, dan juga bisa menambahkan paragraf maupun tabel. https://github.com/airmang/python-hwpx
Tapi kalau dipikir-pikir, kebanyakan dari kita berinteraksi dengan aplikasi LLM. Kita mengakses ChatGPT, Claude, dan Gemini lewat browser web lalu berkomunikasi lewat chat. Bahkan saat menjalankan model lokal dengan OpenWebUI, kita juga mengakses dan memakainya lewat browser web. Hasil komunikasi melalui mode suara di aplikasi ChatGPT pada smartphone juga bisa dicek log chat-nya di browser web. Dan output dari LLM, kalau tombol salin ditekan lalu ditempel ke Notepad, akan terlihat bahwa itu adalah markdown.
LLM menghasilkan markdown atau html, lalu adakah library yang bisa langsung mengubahnya menjadi hwpx untuk disimpan? Tidak ada.
Saat memikirkan ide paten dengan GEMINI Pro, kadang ia bertanya apakah ingin dijadikan dokumen. Lalu ketika tombol ditekan, draf spesifikasi paten sudah dibuat sebagai dokumen Google Docs. Pada dasarnya hanya mengonversi markdown menjadi dokumen, tetapi hasilnya cukup enak dilihat.
Suka atau tidak, Korea Selatan telah menjadikan HWP sebagai standar untuk pelaksanaan pekerjaan dan komunikasi. Dan dalam alur kerja kita, pembuatan HWP bisa dibilang hal yang wajar.
Setelah mendengarkan seluruh isi rapat lewat mode suara ChatGPT, saat meminta hal-hal seperti “tolong rangkum jadi notulen rapat dan kirim lewat email ke para peserta” atau “tolong ubah hasil brainstorming menjadi draf spesifikasi paten”, menurut saya output-nya seharusnya berupa HWP.
Sampai sekarang, hasil dari LLM masih harus disalin orang dari browser web ke aplikasi Hangeul, lalu melalui proses menyesuaikan format, rajin mengatur lebar karakter dan spasi antarhuruf, serta menyusun tata letaknya.
Di era ketika GEMINI bisa membuatkan Google Docs, bukankah model dan layanan LLM yang didanai pajak Korea Selatan juga seharusnya bisa membuat HWPX tanpa campur tangan manusia?
Saya punya kebutuhan seperti ini untuk otomatisasi pekerjaan, dan karena itulah saya membuatnya.
Tambahan.
HWP sendiri relatif mudah diparse lalu diubah menjadi teks. Google sudah membuatnya sejak era 2000-an untuk mengindeks dokumen berbahasa Korea dan menerapkannya secara internal, dan hal ini juga cukup memungkinkan dengan proyek-proyek open source yang disebutkan di atas.
Jika menerapkan gaya tingkat outline 1~6 yang sesuai dengan
h1~h6di HTML, dokumen juga bisa dibuat sambil mempertahankan hierarki dokumennya.Namun, HWP memiliki terlalu banyak fitur di editornya, dan para penggunanya berfokus pada penerapan format agar hasil cetak di kertas terlihat bagus, sehingga mereka tidak berupaya menerapkan tingkat outline saat memberi format.
Contoh yang paling jelas adalah ketika sebuah dokumen HWP setebal 300 halaman di lembaga riset disimpan sebagai PDF, informasi bookmark sama sekali tidak dibuat. Akibatnya, meskipun itu dokumen elektronik, orang tetap harus mencarinya dengan menggulir satu per satu. Sangat tidak nyaman. Selain itu, PDF berukuran besar akan sangat tersendat jika digulir cepat untuk menelusuri isinya, bahkan di komputer yang bagus sekalipun.
Karena hal seperti ini tidak mungkin dilakukan saat evaluasi lembaga, laporan setebal ratusan halaman dicetak menumpuk sebanyak jumlah reviewer untuk evaluasi, lalu langsung dibuang setelah evaluasi selesai.
Sebaliknya, untuk laporan dari luar negeri, ketika menerima laporan PDF setebal 400 halaman, daftar isinya saja bisa 16 halaman dan setiap entri di daftar isi memiliki tautan sehingga bisa diklik untuk berpindah ke halaman terkait. Jika melihat outline-nya, bookmark-nya juga tersusun sangat rinci dan rapi. Ini berarti bahwa di alat yang digunakan, informasi tersebut dapat dimasukkan dengan mudah tanpa perlu disadari secara khusus oleh manusia, lalu dibuat secara otomatis.
Bagaimanapun, kembali ke pokoknya, dari HWP yang dibuat berdasarkan kebiasaan mayoritas saat ini yang menggunakan Hangul Word Processor, kita memang bisa memperoleh teksnya, tetapi sulit memperoleh informasi hierarki dokumennya.
Namun, jika HWP dibuat oleh LLM tanpa campur tangan manusia, hal-hal seperti ini bisa dipertimbangkan dan dibuat secara otomatis.
https://velog.io/@wjsdj2009/…
Ada artikel seperti ini, mungkin bisa coba menghubungi para politisi...?