Drawing Cleaner — 绘图清理工具
v1.0.0对输出的原始图纸文本进行清洗去噪与结构化分类,过滤轴线编号、图框信息、尺寸数字等无效噪声,将有效信息按"设计总说明/构件标识/配筋信息/材料强度"等类别归并输出。当用户说"清洗图纸文本"、"去掉噪声"、"整理提取结果"时触发使用。
运行时依赖
安装命令
点击复制技能文档
图纸文本清洗器 (Drawing Text Cleaner) 执行指令 (Instructions)
第一步:确认输入文件 输入文件必须是 Markdown 文件(文件名通常以 分栏提取_ 开头)。
第二步:运行清洗脚本 执行以下命令: python scripts/clean_drawing.py [分栏提取_XXX.md] --output [清洗结果_XXX.md] 不指定输出路径时,脚本自动在输入文件同目录生成 清洗结果_XXX_cleaned.md。 脚本将依次执行: 去噪过滤:按噪声模式列表过滤轴线号、图框字段、孤立尺寸数字、残留乱码等无效行 片段拆分:将上游按列合并的多片段行(以 | 分隔)拆开,逐段独立处理 语义分类:将保留文本按正则规则归入 7 个分类(见下方分类说明) 去重归并:同一分类内完全相同的文本只保留一条
第三步:输出结构化文本 脚本输出包含以下信息头的 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_PATTERNS 或 CATEGORY_RULES 中进行迭代。
分类规则说明 (Classification Logic) 分类采用优先级从高到低的正则匹配,一条文本只归入第一个命中的分类。规则文件位于 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 等
使用示例 (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 的 [图纸信息] 分类确认楼层边界,或在运行清洗前按图纸拆分输入文件。