Drawing Cleaner

对 输出的原始图纸文本进行清洗去噪与结构化分类,过滤轴线编号、图框信息、尺寸数字等无效噪声,将有效信息按"设计总说明/构件标识/配筋信息/材料强度"等类别归并输出。当用户说"清洗图纸文本"、"去掉噪声"、"整理提取结果"触发使用。

Audits

Pass

Install

openclaw skills install drawing-cleaner

图纸文本清洗器 (Drawing Text Cleaner)

执行指令 (Instructions)

第一步:确认输入文件

输入文件必须是 Markdown 文件(文件名通常以 分栏提取_ 开头)。

第二步:运行清洗脚本

执行以下命令:

python scripts/clean_drawing.py [分栏提取_XXX.md] --output [清洗结果_XXX.md]

不指定输出路径时,脚本自动在输入文件同目录生成 清洗结果_XXX_cleaned.md

脚本将依次执行:

  1. 去噪过滤:按噪声模式列表过滤轴线号、图框字段、孤立尺寸数字、残留乱码等无效行
  2. 片段拆分:将上游按列合并的多片段行(以 | 分隔)拆开,逐段独立处理
  3. 语义分类:将保留文本按正则规则归入 7 个分类(见下方分类说明)
  4. 去重归并:同一分类内完全相同的文本只保留一条

第三步:输出结构化文本

脚本输出包含以下信息头的 Markdown 文件:

> 输入行数:XXX | 去噪行数:XXX | 保留行数:XXX | 去噪率:XX%

随后按优先级顺序输出各分类内容:

分类标签包含内容示例对清单的价值
[图纸信息]结构设计总说明、梁平法施工图定位图纸范围与楼层
[设计总说明]项目概况、抗震等级、混凝土强度等级、 钢筋连接影响全局套价参数
[材料强度]C30、HRB400、M10构件特征匹配必要条件
[构件标识]KL1(3) 300×500、KZ1 500×500直接对应清单子目
[配筋信息]4C20、C8@200、加密区钢筋清单计量依据
[标高尺寸]±0.000、层高=3300辅助计算工程量
[节点做法]锚固长度 laE、植筋要求措施项目与特殊工艺
[其他]无法归类的保留文本人工复核

第四步:质量核查

完成清洗后,向用户报告去噪率。如去噪率 低于 40%高于 85%,主动提示:

  • 低于 40%:原始文本可能质量较好,或噪声规则覆盖不足,建议抽查 [其他] 分类中的内容
  • 高于 85%:过滤可能过激,建议检查 [构件标识] 分类是否有漏判,确认关键构件标注未被误删

如用户确认有漏判,记录到本 Skill 的 NOISE_PATTERNSCATEGORY_RULES 中进行迭代。


分类规则说明 (Classification Logic)

分类采用优先级从高到低的正则匹配,一条文本只归入第一个命中的分类。规则文件位于 scripts/clean_drawing.pyCATEGORY_RULES 常量中,可按项目需要扩展。

构件标识的识别依据平法标注规范(16G101系列):

  • 梁:KLWKLLLALJL 等前缀 + 编号 + 截面尺寸
  • 柱:KZGZYZ 等前缀 + 编号
  • 板:LBWBDB 等前缀 + 编号 + 板厚
  • 墙:YQAQJQ 等前缀 + 编号 + 墙厚
  • 基础:JCCTDJJJZL

使用示例 (Examples)

场景:上游已完成提取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 条子目

常见问题 (Troubleshooting)

问题:关键构件标注(如 KL3)被误过滤,在输出中找不到 原因: 图纸中该构件标注与截面尺寸分在了两行,脚本单独识别 KL3 未能命中带截面尺寸的正则,若同时触发了噪声规则(如极短文本)则被误删。 解决:CATEGORY_RULES 的构件标识 patterns 中补充仅含前缀+编号的宽松匹配:r'^(KL|KZ|LB)\d+',或降低噪声规则中单字符过滤的严格程度。

问题:去噪率只有 20%,输出仍然很庞杂 原因: 图纸中包含大量设计说明正文(长段文字),这些内容不触发噪声规则,会全部保留在 [设计总说明][其他] 中。 解决: 这属于正常情况,长段文字本身对清单有参考价值。可将 [其他] 中内容交给大模型做一轮摘要压缩,再送入 boq-generator

问题:同一构件标注出现多次(如图纸有多张平面图) 原因: 脚本的去重是全局字符串精确匹配,如果同一构件在不同楼层有相同编号但不同截面,会被误判为重复而只保留一条。 解决: 先用 dxf-text-extractor[图纸信息] 分类确认楼层边界,或在运行清洗前按图纸拆分输入文件。