描述bug
在partition_docx
中,标题编号没有被解析。
重现方法
from unstructured.partition.docx import partition_docx
elements = partition_docx(filename="/path/to/test_heading_number.docx")
for e in elements:
print(e)
实际输出:
Introduction
Motivation
Problem Statement
预期行为
预期输出:
1. Introduction
1.1 Motivation
1.2 Problem Statement
截图
测试单词文档的截图
环境信息
操作系统版本:macOS-14.1-arm64-arm-64bit
Python版本:3.11.6
unstructured版本:0.10.30
2条答案
按热度按时间pjngdqdw1#
@bernhardschaefer 事实证明,这些数字实际上并不存在于.docx文件的文本中,而是由渲染器(在这种情况下是MS Word)在显示时计算得出。
以下是这些标题的实际XML,其中一些噪声(rsids、样板语言指定符等)已被移除。
您可以看到,每个段落的编号由段落样式设置(
w:p/w:pPr/w:pStyle/@w:val
)指示。该样式Map到一个编号定义,并根据该定义以及start-at
和restart
元素/属性的存在或缺失,以适当的级别(点状分段数)按顺序进行编号。可靠地计算这些数字,使它们与Word产生的结果相匹配是可能的,但非易事,也不是底层
python-docx
库今天能够做到的事情。因此,我认为这可能是一个可能的增强功能,而不是一个错误。
您能多说一些关于这些数字如何适应您的用例吗?这样我们就可以大致了解这个库的整体能力范围?
sz81bmfz2#
感谢@scanny的澄清。我需要标题编号的两个相关原因:
Normal
文本与多级列表的组合,因此将其解析为类型ListItem
而不是Title
。因此,我想使用基于标题编号的正则表达式来识别和转换标题。