公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx

힘센캥거루
2026년 4월 8일(수정됨)
5
21

大韓民国の公共機関では今でも .hwp 拡張子のファイルが多く使われている。

このファイルはハングルとコンピュータ社が作った独自規格の文書だ。

問題は、この形式が他のプログラムと完全には互換性がないという点にある。

文書を開いて中身を見ること自体は可能だ。

しかし、その内容を構造的に読み取り、データとして活用するのは全く別の問題だ。

そしてまさにこの点が、公文書をAIで処理しようとするとき最大の障害になる。

1. 公文書パースが難しい理由 - hwp

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-1

HWPは単なる文書ファイルではない。

ハングル専用のバイナリフォーマットなので、人間が目で読むことと機械が構造的に解釈することは全く別物だ。

ファイルを開いて中身を見ること自体はできるかもしれない。

しかし、段落・表・項目・書式といった意味単位で安定してパースすることははるかに難しい。

理由は単純だ。

  • 段落・スタイル・レイアウト構造が複雑に絡み合っており

  • テキストそのものより出力形態を中心に設計されていて

  • 表・図形・押しボタン(フォーム)などの要素が入ると難易度が急激に上がる

結局HWPは、人間から見れば文書だが、AIやコードの立場からすると扱いにくいフォーマットに近い。

最大の問題は、OOXMLやPDFのように広く使われている標準ベースの文書フローとは距離があるという点だ。

2. hwp VS hwpx

こうした限界を意識してか、最近は .hwpx 形式も併用されている。

HWPXは内部的にXMLベースの構造を採用している。

つまり、ファイルをzipのように展開し、XMLをパースする方式で扱うことができる。

この違いは思った以上に大きい。

HWPが読みづらいバイナリの塊だとすれば、HWPXは構造を解析できる文書に近い。

私もこの点を活用して、成就基準データを抽出し、データベースとして整理してみたことがある。

文書を単に読むレベルを超えてデータとして再利用できるという点で、HWPXは確かに意味のある変化だ。

3. hwpx + AIで公文書を作る

そうなると自然にこんな考えが浮かぶ。

公文書をHWPXとして扱えるなら、AIで読んだり書いたりすることもできるのでは?

そこでChatGPTとClaudeを使って、実際に公文書を読ませ、申請書を作成させてみた。

1) ChatGPTで公文書を作る

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-3

ChatGPTは公文書の内容をかなりよく読んでくれる。

要約やポイントの整理もかなり正確だ。

しかし申請書を作成してほしいと頼むと、完成した文書という形ではなく、内容だけをテキストとして出力する場合が多い。

ドラフトを作るには十分有用だが、そのまま提出できる文書を作るには限界がある。

2) Claudeで公文書を作る

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-4

Claudeにも同じように依頼してみた。

今度は .doc 形式の文書を生成してくれる。

様式もかなりきちんとしていて、内容も自然だ。

しかし結局、結果をコピーして既存の公文書フォーマットに貼り付け直さなければならない。

依然として完全な自動化とは言い難い。

4. kordoc + python-hwpxで公文書を作る

ひょんなことから、GitHubで公文書をパースするライブラリを一つ見つけた。

これを使えば、VS CodeやCursorでも公文書を作成できそうだと思った。

nodeベースなのでnpmを使ってインストールした。

korDocというフォルダを作成してインストールした。

mkdir korDoc
cd korDoc
npm i kordoc
公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-6

次はAIが利用できるようにMCPをインストールする番だ。

F1を押してMCPを検索する。

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-7

そしてTools&MCPに入り、カスタムMCPを追加した。

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-8

最初は公式ドキュメント通り、下記のようにMCPを追加した。

ところがエラーが…?

{
  "mcpServers": {
    "kordoc": {
      "command": "npx",
      "args": ["-y", "kordoc-mcp"]
    }
  }
}
2026-04-02 10:37:44.505 [error] npm error 404 'kordoc-mcp@*' is not in this registry.

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'pdfjs-dist' imported from C:\Users\fecu\AppData\Local\npm-cache\_npx\5ea84d466de2b626\node_modules\kordoc\dist\chunk-VOMMXHNQ.js

上のようなエラーが出たので、AI兄さんに聞いてみたところ、依存関係のせいだから下のように変えるようにと言われた。

このように登録すると、MCPをスムーズに登録できた。

{
  "mcpServers": {
    "kordoc": {
      "command": "npx",
      "args": ["-y", "-p", "kordoc", "-p", "pdfjs-dist", "kordoc-mcp"]
    }
  }
}

korDocにハングル文書を入れてパースさせてみた。

Cursorから自動的に公文書を読み込み、その内容を要約してくれた。

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-9公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-10

あとは申請書を作成するよう指示するだけなのだが…

問題は、kordocにはhwp, hwpxを作成する機能がないことだ。

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-11

そこで次に見つけたのがpython-hwpxだ。

これは学校にいらっしゃる情報科の先生が作ってくださったものだ。

hwpxがXMLをサポートしている点を活用し、文書を生成できるように作られている。

これもMCPをサポートしているので、依存関係と合わせてインストールする。

MCPについてのGitHubリンクは下に貼っておく。

pip install uv
pip install python-hwpx

先ほどと同様に、カスタムMCPを登録する。

{
  "mcpServers": {
    "hwpx": {
      "command": "uv",
      "args": ["tool", "run", "hwpx-mcp-server"]
    }
  }
}

そして下のようなコマンドを出してみた。

동아리 정보를 바탕으로 신청서 작성해줘.

するとこのように申請書を作成してくれた。

内容は提出できる程度には充実しているが、依然として様式は整っていない状態だ。

公文書の完全自動化に挑戦してみる - ChatGPT, Claude, kordoc + python-hwpx-14

5. 感想

さまざまなAIツールとライブラリを活用して公文書を扱ってみた。

HWPXのような構造化された文書が登場したことで、確かに自動化の可能性は以前より高まった。

しかしそれでも限界ははっきりしている。

HWPベースの文書は構造的に自動化に不利であり、AIが安定して理解するのにも適していないフォーマットだ。

最近ある文章で、「スクリーンに押せるハンコを開発した日本を笑うべきではない」という言葉を目にしたことがある。

私もこれに共感している。

国産ソフトウェアを守るために、ガラパゴスのような生態系をこのまま維持し続けるのか?

それとも国際標準ベースの文書体系を受け入れるのか?

いまや公務員社会も、この問題を真剣に考えるべき時期に来ている。

관련 글

Next.js フルスタックブログ開発記
Next.js フルスタックブログ開発記
Web開発に初めて触れてから1年ほど経った頃、自分だけのブログを持ちたいと思うようになった。そこで、およそ6か月これだけにかかりきりになって作ってみることにした。フロントエンド側の機能については、下記のキム・ドヒョンさんのブログを参考にするだけで十分だと思う。自分も mdx を使ってブログを作るだけ...
Caddyを利用した Next.js 無停止デプロイ(ローカルサーバー)
Caddyを利用した Next.js 無停止デプロイ(ローカルサーバー)
ホームページに何かをちょこちょこ載せたくなるたびにビルドしていたら、そのタイミング에 가끔 접속하는人がいるようだった。そうしているうちに、サーチコンソールでスコアがどんどん下がる現象が起きた。このままではまずいと思い、無停止デプロイをする方法を考えてみることにした。1. プロジェクトフォルダ2つ+...
Google検索インデックスの自動化 - Web Search Indexing API
Google検索インデックスの自動化 - Web Search Indexing API
前回の IndexNow に続いて、Google でも自動化してみることにした。調べてみると、Google は API として Web Search Indexing というものを提供していた。1. 対象範囲公式にこの API がサポートしている範囲は、求人情報とストリーミング動画サービスである。リ...
検索インデックス生成の自動化 - IndexNow
検索インデックス生成の自動化 - IndexNow
Bingにサイト登録をしている途中で知ったのだが、Bingでは IndexNow という機能を提供している。ポイントは、APIキーを使って、記事を書いた直後にすぐインデックス作成リクエストを飛ばせるということ。下のようなリクエストを fetch で作り、投稿機能に連動させておけば、記事をDBに保存す...
Nextjs、React サーバーがハッキングされた経験
Nextjs、React サーバーがハッキングされた経験
最初にセキュリティ問題に気づいたのは、12月5日の未明だった。React で認証なしにリモートコード実行が可能だということ。そのニュースを見て他の人には共有したものの、自分は大丈夫だろうと思って特に気にも留めなかった。1. ハッキングの痕跡を発見ところが、ブログのコードを更新しようとアクセスしてみる...
ブログに多言語機能を追加する(NextJS・next-intl・Vercel AI SDK)
ブログに多言語機能を追加する(NextJS・next-intl・Vercel AI SDK)
最近、ブログに多言語対応機能が必要だと感じた。そこで next-intl を使って多言語サービスを実装してみることにした。1.i18nまず多言語サービスを行うときには、守るべき原則がある。これを internationalization と呼ぶが、かなり長いので、先頭の i と末尾の n、そしてその...

댓글을 불러오는 중...