You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无Hancom Office环境下用纯Python解析hwpx文件?

纯Python处理.hwpx文件方案

由于.hwpx是基于XML的压缩包(类似Office的docx格式),无需安装Hancom Office即可用纯Python工具解析提取内容,以下是可行方案:

1. 手动解析(无额外依赖,灵活可控)

hwpx本质是zip压缩包,先解压再读取内部XML结构:

  • 用Python标准库zipfile解压文件:
    import zipfile
    
    with zipfile.ZipFile("target.hwpx", "r") as zf:
        # 查看内部文件结构,确认核心文件位置
        print(zf.namelist())
        # 读取主内容XML文件
        content_data = zf.read("Contents/content.xml").decode("utf-8")
        # 读取元数据XML文件
        meta_data = zf.read("DocInfo/meta.xml").decode("utf-8")
    
  • 用标准库xml.etree.ElementTree或第三方库lxml解析XML:
    • 文本内容一般在<text:span>或<text:p>标签下
    • 表格数据集中在<table:table>相关节点
    • 元数据(作者、创建时间等)可从meta.xml中提取

2. 第三方库辅助简化

目前没有专门针对hwpx的成熟纯Python库,但可通过通用工具组合降低开发成本:

  • lxml:支持XPath查询,比标准库XML解析更高效,便于精准定位节点
  • pandas:解析表格数据后可直接转为DataFrame,轻松导出为JSON或Markdown格式

3. 导出为Markdown/JSON

解析得到内容后,可自行实现简单转换逻辑:

  • 文本段落按换行分割,标题对应XML中的<text:h>标签层级
  • 表格遍历行与单元格,拼接成Markdown表格格式
  • 所有提取内容(文本、表格、元数据)可通过json.dump()直接导出为JSON

关键注意点

  • hwpx的XML带有命名空间,解析时需指定前缀,示例:
    import xml.etree.ElementTree as ET
    
    ns_map = {
        "text": "urn:oasis:names:tc:opendocument:xmlns:text:1.0",
        "table": "urn:oasis:names:tc:opendocument:xmlns:table:1.0"
    }
    root = ET.fromstring(content_data)
    # 提取所有段落
    paragraphs = root.findall(".//text:p", ns_map)
    
  • 不同版本的hwpx可能存在XML结构差异,建议先解压样本文件确认节点路径

内容的提问来源于stack exchange,提问作者SxA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 03:47:31