Back to skills
extension
Category: Data & AnalyticsNo API key required

Drawing Cleaner

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

personAuthor: lialia691691-althubclawhub

图纸文本清洗器 (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[图纸信息] 分类确认楼层边界,或在运行清洗前按图纸拆分输入文件。