공문서 완전 자동화 해보기 - ChatGPT, Claude, kordoc + python-hwpx

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

대한민국 공공기관은 여전히 .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로 공문서 만들기

어쩌다가 깃허브에서 공문서를 파싱하는 라이브러릐를 하나 발견했다.

이걸 이용하면 vscode나 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에 한글문서를 넣고 파싱하도록 해보았다.

커서에서 자동으로 공문서를 읽고 해당 내용을 요약해주었다.

공문서 완전 자동화 해보기 - 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에 대한 깃허브 링크는 아래에 달아둔다.

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、そしてその...

댓글을 불러오는 중...