210 lines
5.7 KiB
Markdown
210 lines
5.7 KiB
Markdown
# AI智能模板处理说明
|
||
|
||
## 功能概述
|
||
|
||
两个脚本已升级为AI智能版本,使用硅基流动大模型API智能分析文档内容,识别需要替换为占位符的位置。
|
||
|
||
### 主要特性
|
||
|
||
1. **AI智能分析** - 使用大模型理解文档语义,识别可替换内容
|
||
2. **组合字段识别** - 能够识别组合字段,如"山西XXXX集团有限公司(职务+姓名)"
|
||
3. **规则匹配补充** - AI分析后,使用规则匹配作为补充
|
||
4. **置信度过滤** - 只应用置信度大于0.7的AI替换建议
|
||
|
||
## 脚本说明
|
||
|
||
### process_templates.py
|
||
- 处理原始模板(包含 .doc 转换)
|
||
- 支持 AI 智能分析
|
||
- 适用于需要自动转换 .doc 文件的场景
|
||
|
||
### process_templates_docx_only.py
|
||
- 处理已转换的 .docx 文件
|
||
- 支持 AI 智能分析
|
||
- 适用于文件已手动转换为 .docx 的场景
|
||
|
||
## 环境配置
|
||
|
||
### 1. 确保 .env 文件配置正确
|
||
|
||
```env
|
||
SILICONFLOW_API_KEY=你的API密钥
|
||
SILICONFLOW_MODEL=deepseek-ai/DeepSeek-V3.2-Exp
|
||
```
|
||
|
||
### 2. 安装依赖
|
||
|
||
```bash
|
||
pip install python-docx python-dotenv requests
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 运行脚本
|
||
|
||
```bash
|
||
# 处理已转换的 .docx 文件(推荐)
|
||
python process_templates_docx_only.py
|
||
|
||
# 或处理原始模板(包含 .doc 转换)
|
||
python process_templates.py
|
||
```
|
||
|
||
## AI分析能力
|
||
|
||
### 1. 识别明确的字段值
|
||
- 姓名、单位、职务等明确信息
|
||
- 示例:`张三` → `{{target_name}}`
|
||
|
||
### 2. 识别示例值
|
||
- XXX、待填等占位符
|
||
- 示例:`被核查人姓名: XXX` → `被核查人姓名: {{target_name}}`
|
||
|
||
### 3. 识别组合字段
|
||
- 包含多个字段信息的组合文本
|
||
- 示例:
|
||
- `山西XXXX集团有限公司(职务+姓名)` → `{{target_organization_and_position}}({{target_name}})`
|
||
- `张三,男,1980年5月` → `{{target_name}},{{target_gender}},{{target_date_of_birth}}`
|
||
|
||
### 4. 识别格式化值
|
||
- 日期、时间等格式化内容
|
||
- 示例:`2024年12月7日` → `{{date}}`
|
||
|
||
### 5. 识别上下文相关字段
|
||
- 根据上下文理解字段含义
|
||
- 示例:在"被核查人"上下文中,`张三` 会被识别为 `{{target_name}}`
|
||
|
||
## 处理流程
|
||
|
||
### 1. AI分析阶段
|
||
- 分析文档段落和表格单元格
|
||
- 识别可替换内容
|
||
- 生成替换建议(包含置信度)
|
||
|
||
### 2. 规则匹配阶段
|
||
- 使用正则表达式匹配字段名称
|
||
- 补充AI可能遗漏的替换
|
||
|
||
### 3. 应用替换
|
||
- 按置信度排序替换建议
|
||
- 只应用置信度 > 0.7 的替换
|
||
- 避免重复替换
|
||
|
||
## 输出示例
|
||
|
||
### 成功处理
|
||
```
|
||
处理: 1.请示报告卡(XXX).docx
|
||
类型: REPORT_CARD
|
||
输入: 模板\原始模板\...\1.请示报告卡(XXX).docx
|
||
输出: 模板\2-初核模版\1.初核请示\1.请示报告卡(XXX).docx
|
||
✓ AI分析已启用
|
||
处理: 1.请示报告卡(XXX).docx
|
||
✓ 处理成功,AI识别 5 处,规则匹配 2 处
|
||
```
|
||
|
||
### AI分析失败(自动降级)
|
||
```
|
||
处理: 2.初步核实审批表(XXX).docx
|
||
⚠ AI分析不可用: 未配置 SILICONFLOW_API_KEY,将使用基础模式
|
||
处理: 2.初步核实审批表(XXX).docx
|
||
✓ 处理成功,规则匹配 8 处
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
### 1. API配置
|
||
- 确保 `.env` 文件中配置了正确的 API 密钥
|
||
- 如果未配置,脚本会自动降级为规则匹配模式
|
||
|
||
### 2. API调用限制
|
||
- AI分析会增加处理时间(每个段落/单元格需要API调用)
|
||
- 如果API调用失败,会自动跳过AI分析,使用规则匹配
|
||
|
||
### 3. 置信度阈值
|
||
- 默认只应用置信度 > 0.7 的替换
|
||
- 可以在代码中调整阈值
|
||
|
||
### 4. 人工审核
|
||
- AI分析结果需要人工审核
|
||
- 某些复杂场景可能需要手动调整
|
||
|
||
## 常见问题
|
||
|
||
### Q1: AI分析失败怎么办?
|
||
|
||
**A:** 脚本会自动降级为规则匹配模式,不会影响处理流程。检查:
|
||
1. `.env` 文件中的 API 密钥是否正确
|
||
2. 网络连接是否正常
|
||
3. API 配额是否充足
|
||
|
||
### Q2: 某些内容没有被替换?
|
||
|
||
**A:** 可能原因:
|
||
1. AI置信度低于阈值(0.7)
|
||
2. 内容不在可用字段列表中
|
||
3. 内容格式特殊,AI无法识别
|
||
|
||
**解决方案:**
|
||
- 检查生成的模板
|
||
- 手动调整未替换的内容
|
||
- 可以降低置信度阈值(修改代码)
|
||
|
||
### Q3: 组合字段替换不正确?
|
||
|
||
**A:** AI会尝试识别组合字段,但可能不够准确。建议:
|
||
1. 检查AI识别的替换结果
|
||
2. 手动调整不正确的组合字段
|
||
3. 提供更多示例帮助AI学习
|
||
|
||
### Q4: 处理速度慢?
|
||
|
||
**A:** AI分析需要调用API,会增加处理时间。可以:
|
||
1. 只对重要文档使用AI分析
|
||
2. 批量处理时考虑API调用限制
|
||
3. 使用 `use_ai=False` 参数禁用AI分析
|
||
|
||
## 性能优化建议
|
||
|
||
1. **批量处理** - 一次性处理多个文件,减少API调用开销
|
||
2. **缓存结果** - 对于相同内容,可以缓存AI分析结果
|
||
3. **选择性使用** - 只对复杂文档使用AI分析,简单文档使用规则匹配
|
||
|
||
## 示例场景
|
||
|
||
### 场景1: 组合字段替换
|
||
```
|
||
原始文本: 山西XXXX集团有限公司(职务+姓名)
|
||
AI识别: 包含单位信息和姓名信息
|
||
替换结果: {{target_organization_and_position}}({{target_name}})
|
||
```
|
||
|
||
### 场景2: 上下文识别
|
||
```
|
||
原始文本: 被核查人:张三
|
||
AI识别: 在"被核查人"上下文中,"张三"是姓名
|
||
替换结果: 被核查人:{{target_name}}
|
||
```
|
||
|
||
### 场景3: 格式化日期
|
||
```
|
||
原始文本: 2024年12月7日
|
||
AI识别: 日期格式
|
||
替换结果: {{date}} 或 {{approval_time}}
|
||
```
|
||
|
||
## 下一步
|
||
|
||
1. **检查生成的模板** - 打开处理后的模板文件
|
||
2. **审核AI替换结果** - 确认占位符是否正确
|
||
3. **手动调整** - 修正不正确的替换
|
||
4. **运行初始化脚本** - `python init_all_templates.py`
|
||
|
||
## 技术支持
|
||
|
||
如有问题,请检查:
|
||
1. `.env` 文件配置
|
||
2. API 密钥有效性
|
||
3. 网络连接状态
|
||
4. 脚本输出日志
|