对 输出的原始图纸文本进行清洗去噪与结构化分类,过滤轴线编号、图框信息、尺寸数字等无效噪声,将有效信息按"设计总说明/构件标识/配筋信息/材料强度"等类别归并输出。当用户说"清洗图纸文本"、"去掉噪声"、"整理提取结果"触发使用。
--- name: drawing-cleaner version: 1.0.0 description: 对 输出的原始图纸文本进行清洗去噪与结构化分类,过滤轴线编号、图框信息、尺寸数字等无效噪声,将有效信息按"设计总说明/构件标识/配筋信息/材料强度"等类别归并输出。当用户说"清洗图纸文本"、"去掉噪声"、"整理提取结果"触发使用。 --- # 图纸文本清洗器 (Drawing Text Cleaner) ## 执行指令 (Instructions) ### 第一步:确认输入文件 输入文件必须是 Markdown 文件(文件名通常以 `分栏提取_` 开头)。 ### 第二步:运行清洗脚本 执行以下命令: ```bash 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_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 文件,需要清洗后生成清单** ```bash # 第一步(已完成) 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` 的 `[图纸信息]` 分类确认楼层边界,或在运行清洗前按图纸拆分输入文件。 ---
don't have the plugin yet? install it then click "run inline in claude" again.