Install
openclaw skills install drawing-cleaner对 输出的原始图纸文本进行清洗去噪与结构化分类,过滤轴线编号、图框信息、尺寸数字等无效噪声,将有效信息按"设计总说明/构件标识/配筋信息/材料强度"等类别归并输出。当用户说"清洗图纸文本"、"去掉噪声"、"整理提取结果"触发使用。
openclaw skills install drawing-cleaner输入文件必须是 Markdown 文件(文件名通常以 分栏提取_ 开头)。
执行以下命令:
python scripts/clean_drawing.py [分栏提取_XXX.md] --output [清洗结果_XXX.md]
不指定输出路径时,脚本自动在输入文件同目录生成 清洗结果_XXX_cleaned.md。
脚本将依次执行:
| 分隔)拆开,逐段独立处理脚本输出包含以下信息头的 Markdown 文件:
> 输入行数:XXX | 去噪行数:XXX | 保留行数:XXX | 去噪率:XX%
随后按优先级顺序输出各分类内容:
| 分类标签 | 包含内容示例 | 对清单的价值 |
|---|---|---|
[图纸信息] | 结构设计总说明、梁平法施工图 | 定位图纸范围与楼层 |
[设计总说明] | 项目概况、抗震等级、混凝土强度等级、 钢筋连接 | 影响全局套价参数 |
[材料强度] | C30、HRB400、M10 | 构件特征匹配必要条件 |
[构件标识] | KL1(3) 300×500、KZ1 500×500 | 直接对应清单子目 |
[配筋信息] | 4C20、C8@200、加密区 | 钢筋清单计量依据 |
[标高尺寸] | ±0.000、层高=3300 | 辅助计算工程量 |
[节点做法] | 锚固长度 laE、植筋要求 | 措施项目与特殊工艺 |
[其他] | 无法归类的保留文本 | 人工复核 |
完成清洗后,向用户报告去噪率。如去噪率 低于 40% 或 高于 85%,主动提示:
[其他] 分类中的内容[构件标识] 分类是否有漏判,确认关键构件标注未被误删如用户确认有漏判,记录到本 Skill 的 NOISE_PATTERNS 或 CATEGORY_RULES 中进行迭代。
分类采用优先级从高到低的正则匹配,一条文本只归入第一个命中的分类。规则文件位于 scripts/clean_drawing.py 的 CATEGORY_RULES 常量中,可按项目需要扩展。
构件标识的识别依据平法标注规范(16G101系列):
KL、WKL、LL、AL、JL 等前缀 + 编号 + 截面尺寸KZ、GZ、YZ 等前缀 + 编号LB、WB、DB 等前缀 + 编号 + 板厚YQ、AQ、JQ 等前缀 + 编号 + 墙厚JC、CT、DJJ、JZL 等场景:上游已完成提取Markdown 文件,需要清洗后生成清单
# 第一步(已完成)
dxf-text-extractor skill
→ 生成 分栏提取_总说明.md(共 2300 行)
# 第二步(本 Skill)
python scripts/clean_drawing.py 分栏提取_2F_梁平法施工图.md
# → 生成 清洗结果_2F_梁平法施工图_cleaned.md(保留 420 行,去噪率 81.7%)
# 第三步
boq-generator skill
→ 生成 最终工程量清单.md,包含 150 条子目
问题:关键构件标注(如 KL3)被误过滤,在输出中找不到
原因: 图纸中该构件标注与截面尺寸分在了两行,脚本单独识别 KL3 未能命中带截面尺寸的正则,若同时触发了噪声规则(如极短文本)则被误删。
解决: 在 CATEGORY_RULES 的构件标识 patterns 中补充仅含前缀+编号的宽松匹配:r'^(KL|KZ|LB)\d+',或降低噪声规则中单字符过滤的严格程度。
问题:去噪率只有 20%,输出仍然很庞杂
原因: 图纸中包含大量设计说明正文(长段文字),这些内容不触发噪声规则,会全部保留在 [设计总说明] 或 [其他] 中。
解决: 这属于正常情况,长段文字本身对清单有参考价值。可将 [其他] 中内容交给大模型做一轮摘要压缩,再送入 boq-generator。
问题:同一构件标注出现多次(如图纸有多张平面图)
原因: 脚本的去重是全局字符串精确匹配,如果同一构件在不同楼层有相同编号但不同截面,会被误判为重复而只保留一条。
解决: 先用 dxf-text-extractor 的 [图纸信息] 分类确认楼层边界,或在运行清洗前按图纸拆分输入文件。