공문서 완전 자동화 해보기 - 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 全栈博客开发记
在第一次接触网页开发大约 1 年之后,我开始想着想要拥有一个属于自己的博客。于是我就大概花了 6 个月几乎只埋头做这件事。前端部分的功能,参考金度亨先生的博客就已经足够了。我用 mdx 搭建起一个博客,其实连一周都没花到。事实上,仅靠前端也并不会给博客运营带来什么大问题。有一阵子我也觉得,只要写 m...
使用 Caddy 实现 Next.js 无停机部署(本地服务器)
使用 Caddy 实现 Next.js 无停机部署(本地服务器)
每次一有想在主页上加点什么的念头就去 build,结果中间好像偶尔会有人访问。于是 Search Console 上的分数开始一点点往下掉。觉得这样不行,就开始思考要怎么做无停机部署。1. 两个项目文件夹 + 两个终端答案出乎意料地简单:开两个终端。在一个终端里 build,另一个终端里让服务器跑着...
谷歌搜索索引自动化 - Web Search Indexing API
谷歌搜索索引自动化 - Web Search Indexing API
继上次搞完 IndexNow 之后,也决定在谷歌这边做一下自动化。查了一下,发现谷歌是通过一个叫 Web Search Indexing 的 API 来支持这个功能的。1. 适用范围官方文档中,这个 API 正式支持的范围是招聘公告和流媒体视频服务。说是为了给对实时性要求高的内容创建索引用的,但搜了...
搜索索引生成自动化 - IndexNow
搜索索引生成自动化 - IndexNow
在向 Bing 提交站点收录时才发现,Bing 提供了一个叫做 IndexNow 的功能。核心在于,可以利用 API Key,在写完文章的瞬间就立刻发起索引请求。只要用 fetch 写出类似下面这样的请求,并把它串联到「写文章」流程里,就可以在把文章保存到 DB 的同时发送索引生成请求。POST /...
被入侵的 Nextjs、React 服务器经历
被入侵的 Nextjs、React 服务器经历
我最初接触到这次安全问题是在 12 月 5 日凌晨。据说在 React 中可以在未认证的情况下进行远程代码执行。看到这条新闻后,我虽然告诉了别人,但总觉得自己应该没事,就什么想法也没有地略过了。1. 发现被入侵的痕迹结果当我想登录更新博客代码时,在终端里发现了有命令被执行过的痕迹。/bin/sh:...
在博客中添加多语言功能(NextJS、next-intl、Vercel AI SDK)
在博客中添加多语言功能(NextJS、next-intl、Vercel AI SDK)
最近我觉得博客需要多语言功能。于是决定用 next-intl 来实现多语言服务。1.i18n首先,在做多语言服务时有一些必须遵守的原则。这被称为 internationalization,单词太长,所以把首字母 i 和尾字母 n,以及中间 18 个字母合在一起,写成 i18n。1) i18n 的原则...

댓글을 불러오는 중...