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

如何从XML格式表格中提取术语及对应定义的技术方案咨询

从XML文档提取带行内公式的术语及定义规则指导

目标区域定位规则

首先锁定术语定义的固定存放区域,避免遍历全文档浪费性能:

  • 先定位<title>标签内容为Symbole(符号说明)的章节,20份同类文档的术语都集中在该类章节下
  • 该章节下content-type="tabular.form"的<table-wrap>标签是核心提取容器,固定为两列表格,第一列存术语、第二列存对应定义

内容提取通用规则

术语列(第一列<td>)提取

按节点出现顺序拼接内容,无需调整顺序:

  • 普通格式化文本(如<italic>包裹的斜体字符)直接提取文本值,保留原格式标记
  • <inline-formula>包裹的MathML公式,可根据需求选择:直接保留原始MathML结构、转换为LaTeX格式、或渲染为图片存储,注意跳过无实际内容的空节点(如示例中class="generated type1"的<mrow>节点)
  • 示例中第一列提取后得到:*A* + MathML下标B,即 AB

定义列(第二列<td>)提取

混合拼接多类型节点,保证语义连贯:

  • 普通文本直接提取原值,自动清理首尾多余的换行、空白字符
  • 内嵌的<inline-formula>公式处理规则和术语列一致,示例中mm后的上标2要和前面的文本拼接完整,得到mm²
  • <xref>引用标签直接提取内部文本值即可,若需关联原文档引用可额外记录rid属性值
  • 示例中第二列提取后得到:effektive Gesamt-Querschnittsfläche aller Schrauben [mm²], Gleichung (36),可按需求翻译为对应中文

批量处理实现建议

用XPath定位可以大幅提升解析效率,核心参考代码如下:

# 定位所有符号定义的行节点
//*[title/text()='Symbole']//table-wrap[@content-type='tabular.form']/table/tbody/tr

# 提取当前行的所有术语节点
./td[1]/node()

# 提取当前行的所有定义节点
./td[2]/node()

技术栈推荐用Python的lxml库解析XML,搭配pylatexenc或mathjax可完成MathML到LaTeX/可显示格式的转换,20份文档可以批量遍历执行,无需手动调整规则。

校验规则

批量处理后建议加一层校验避免错误:

  • 校验术语和定义的一一对应关系,不会出现跨行匹配
  • 公式内容校验:确认上下标、特殊符号没有丢失
  • 单位拼接校验:定义中括号包裹的单位和公式部分不会拆分,避免出现mm ]这类错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:45:09