尝试实现公文完全自动化——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

接下来轮到安装 MCP,让 AI 可以调用它。

按 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 全栈博客开发记
在第一次接触网页开发大约 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 的原则...

댓글을 불러오는 중...