WordExtractor 是一个用于从 Word 文档 (.docx
) 中批量提取数据并将其导出到 Excel 文件的工具。它通过用户定义的提取规则来定位和提取所需信息。
- 批量处理: 支持一次性处理多个 Word 文档。
- 灵活的提取规则: 支持多种提取方式,包括正则表达式、位置、书签和多种表格提取。
- 规则管理: 方便地创建、编辑、删除、排序、导入和导出提取规则。
- 数据导出: 将提取的数据导出为 Excel (
.xlsx
) 文件。 - 用户友好界面: 提供图形用户界面,易于操作。
- 规则测试: 支持对单个规则进行测试,方便调试。
如果您有可执行文件 (WordExtractor.exe
),直接双击运行即可。
程序主界面通常包含以下几个主要区域:
- 规则管理区: 用于添加、编辑、删除和管理提取规则。
- 文件列表区: 用于添加待处理的 Word 文档。
- 输出设置区: 设置输出 Excel 文件的路径和选项。
- 控制区: 开始、停止提取任务。
- 状态/日志区: 显示任务进度和结果信息。
- 添加规则:
- 点击“添加规则”按钮。
- 在弹出的对话框中,填写规则名称、输出表头名、选择提取模式并配置相应的参数。
- 点击“确定”保存规则。
- 编辑规则:
- 在规则列表中选中要编辑的规则。
- 点击“编辑规则”按钮或双击规则。
- 修改后点击“确定”保存。
- 删除规则:
- 选中规则,点击“删除规则”按钮。
- 调整规则顺序:
- 选中规则,使用“上移”或“下移”按钮调整其在列表中的顺序。规则按列表顺序应用于文档。
- 启用/禁用规则:
- 可以通过勾选或特定按钮来启用或禁用某条规则,被禁用的规则在提取过程中会被跳过。
- 导入/导出规则:
- 使用“导入规则”和“导出规则”功能可以加载或保存规则配置(通常为
.json
文件),方便复用。
- 使用“导入规则”和“导出规则”功能可以加载或保存规则配置(通常为
- 添加文件: 点击“添加文件”或类似按钮,选择一个或多个
.docx
文件。也可以支持添加文件夹。 - 设置输出: 指定提取结果要保存到的 Excel 文件名和路径。可以选择是否追加到现有文件、是否包含文件信息等。
- 开始提取: 点击“开始处理”或类似按钮启动提取过程。
- 监控进度: 界面会显示当前处理进度、已完成任务数、失败任务数等。
提取完成后,打开指定的 Excel 文件即可查看提取到的数据。每一行通常对应一个源 Word 文档,每一列对应一条提取规则定义的字段。
提取规则是 WordExtractor 的核心,它告诉程序如何从文档中找到并提取您需要的信息。
每条规则通常包含以下基本信息:
- 字段名 (Field Name): 规则的描述性名称,方便用户识别。
- 表头名 (Header Name): 提取出的数据在最终 Excel 文件中对应的列标题。
- 提取模式 (Extraction Mode): 定义了提取数据所使用的方法。
- 配置 (Config): 根据所选提取模式,提供具体参数。
- 是否启用 (Enabled): 标记此规则是否在提取过程中生效。
以下是支持的提取模式及其配置:
通过正则表达式匹配并提取文本。
- 配置参数:
pattern
(字符串): 用于匹配文本的正则表达式。group
(整数, 可选, 默认 0): 指定返回哪个捕获组。0 表示整个匹配项,1 表示第一个捕获组,以此类推。
- 示例:
- 提取合同编号 "HT-2023-001":
pattern
:(HT-\d{4}-\d{3})
group
:1
(或0
如果不需要括号内的特定部分)
- 提取合同编号 "HT-2023-001":
根据文本在文档中的起止字符位置提取。注意:这种方式对文档结构变化非常敏感。
- 配置参数:
start_index
(整数, 可选, 默认 0): 提取开始的字符索引(从0开始)。end_index
(整数, 可选): 提取结束的字符索引(不包含此索引处的字符)。如果省略,则提取到文本末尾。
- 示例:
- 提取文档前10个字符:
start_index
:0
end_index
:10
- 提取文档前10个字符:
提取 Word 文档中预定义书签所标记的内容。
- 配置参数:
bookmark_name
(字符串): Word 文档中书签的名称。
- 示例:
- 提取名为 "ApplicantName" 的书签内容:
bookmark_name
:ApplicantName
- 提取名为 "ApplicantName" 的书签内容:
提取指定表格中特定单元格的内容。
- 配置参数:
table_index
(整数, 可选, 默认 0): 表格在文档中的索引(从0开始,即第一个表格为0)。row_index
(整数, 可选, 默认 0): 单元格所在行的索引(从0开始)。column_index
(整数, 可选, 默认 0): 单元格所在列的索引(从0开始)。
- 示例:
- 提取文档中第一个表格的第2行第3列的单元格内容:
table_index
:0
row_index
:1
column_index
:2
- 提取文档中第一个表格的第2行第3列的单元格内容:
提取指定表格中特定列的所有单元格内容。结果通常是一个列表或以特定分隔符连接的字符串。
- 配置参数:
table_index
(整数, 可选, 默认 0): 表格索引。column_index
(整数, 可选, 默认 0): 列索引。has_header
(布尔值, 可选, 默认True
): 表格是否有标题行。如果为True
,则提取时不包含第一行(假定为表头)。
- 示例:
- 提取第一个表格的第二列数据(不包括表头):
table_index
:0
column_index
:1
has_header
:True
- 提取第一个表格的第二列数据(不包括表头):
提取指定表格中特定行的所有单元格内容。结果通常是一个列表或以特定分隔符连接的字符串。
- 配置参数:
table_index
(整数, 可选, 默认 0): 表格索引。row_index
(整数, 可选, 默认 0): 行索引。
- 示例:
- 提取第一个表格的第三行数据:
table_index
:0
row_index
:2
- 提取第一个表格的第三行数据:
提取指定表格的全部内容。结果可能是多维列表或特定格式的文本。
- 配置参数:
table_index
(整数, 可选, 默认 0): 表格索引。has_header
(布尔值, 可选, 默认True
): 表格是否有标题行。影响数据的解析方式。
- 示例:
- 提取第一个表格的全部内容(包含表头):
table_index
:0
has_header
:False
(如果希望表头也作为数据一部分) 或True
(如果希望分别处理表头)
- 提取第一个表格的全部内容(包含表头):
- 启用/禁用: 每条规则都可以被设置为启用或禁用。禁用的规则在批量处理时会被跳过。
- 顺序: 规则列表中的顺序很重要,因为它们会按照这个顺序依次应用于文档。某些情况下,一个规则的输出可能影响后续规则的上下文(尽管在此工具中,规则通常是独立应用的)。
- 保存规则: 您可以将当前配置的一组规则保存到文件中(通常是
.json
格式)。这允许您为不同类型的文档或提取任务创建不同的规则集。 - 加载规则: 您可以从之前保存的文件中加载规则集,而不必每次都重新创建。
如果您希望从源代码运行或构建此应用:
-
克隆仓库:
git clone https://github.com/xihan123/WordExtractor cd WordExtractor
-
设置 Python 环境: 建议使用虚拟环境。确保您安装了 Python (版本如
requirements.txt
或构建脚本中指定,例如 Python 3.13)。python -m venv venv # Windows venv\Scripts\activate # macOS/Linux # source venv/bin/activate
-
安装依赖:
python -m pip install --upgrade pip pip install -r requirements.txt
如果需要构建可执行文件,还需安装 PyInstaller:
pip install pyinstaller
-
运行应用:
python main.py
-
使用 PyInstaller 构建: (参考
.github/workflows/build.yml
中的构建命令)pyinstaller --noconfirm --onefile --windowed --clean --uac-admin --icon=resources/app_icon.ico --name "WordExtractor" --add-data "resources;resources" main.py
可执行文件将生成在
dist
目录下。
如果您觉得这个工具有用,请考虑给项目点个 ⭐️!