Install
openclaw skills install @zl19851022-commits/inspection-balloon-annotator机械图纸(矢量/扫描PDF或图片)检验气泡标注一体化工具:生成红色圆圈+编号的"检验气泡标注图"(PDF+PNG),并产出单一合并检验表(5 sheet:检验记录表/标注图纸(气泡图)/未注公差基准/汇总/关键特性专项)。当用户要求"做气泡图/检验气泡图""标关键尺寸/形位公差""生成检验表/首件检验清单(FAI)/全尺寸检验报告/IQC-OQC检验表""尺寸与公差 Excel 报表"时使用。自动高分辨率渲染、多方向OCR精确定位、编号自动避让+吸附、一般公差(GB/T1804-f / GB/T1184-H)套用、覆盖性自检。关键词:检验气泡图 气泡标注 首件检验 FAI 全尺寸检验 品质QC
openclaw skills install @zl19851022-commits/inspection-balloon-annotator把机械图纸上的关键尺寸、公差、形位公差用带编号的红色圆圈气泡标注出来,并生成与气泡序号一一对应的两份检验表,作为品质/QC 首件检验(FAI)、全尺寸检验、IQC/OQC 的标准交付物。
本技能由「图纸气泡标准助手」(标注图方案) 与「检验气泡图」(QC 检验表方案) 合并而成:
dims_table.py / balloons.json 生成,不维护双数据模型。资深产品工程师 + 质量工程师,精通 GB/T 14689、GB/T 1804、GB/T 1184、ISO 2768、ASME Y14.5 与主机厂特性体系。
| 产出 | 文件 | 说明 |
|---|---|---|
| 标注图(矢量,可选) | <图号>_气泡标注图_p1.pdf | PyMuPDF 矢量叠加,原图不位图化;加 --no-pdf 可不输出 |
| 标注图(位图,默认) | <图号>_气泡标注图_p1.png | 300 DPI,用于目视复核与内嵌检验表 |
| 合并检验表 | <图号>_检验记录表.xlsx | 单一 xlsx,5 个 sheet:检验记录表 / 标注图纸(气泡图) / 未注公差基准 / 汇总 / 关键特性专项(原"尺寸明细检验表"的汇总与关键特性专项已并入;18 列"尺寸明细"sheet 不再单独输出,因检验记录表已逐条列出) |
| 自检报告 | work/coverage_report.json | 覆盖性 + 布局校验 + 待确认清单 + 交付前 10 项 |
交付时用
present_files一并给出标注图(PDF/PNG) + 合并检验表,并说明:① 气泡号与检验记录表序号一一对应;② 未注公差基准来源;③ 坐标由 OCR 定位,正式使用前建议目视复核关键项。
适用绝大多数图纸。脚本依次自动完成:渲染 → 多方向OCR → 自动抽取尺寸(初稿) → 气泡标注图(PDF/PNG) → 合并检验表(单一 xlsx:检验记录表+气泡图+未注公差基准+汇总+关键特性专项,尺寸明细不输出) → 覆盖性自检 + 交付前10项。无需手工逐步操作。
python scripts/auto_run.py --pdf <图纸.pdf> --base <输出根目录> [--name 输出主名] [--dims 已有dims_table.py] [--cp 控制计划编号] [--force-render] [--force-ocr] [--render-dpi 300] [--no-pdf] [--no-png]
# 例(默认:300dpi+白边裁切+同时出 PDF 与 PNG):
python scripts/auto_run.py --pdf "腔体 A3.pdf" --base ./out
--base 下自动建 work/(中间产物:render.png / labels.json / dims_table.py / balloons.json / coverage_report.json)与 outputs/(标注图 PNG + 两份检验表 + 自检报告)。ocr_labels.py 对 0°/90°/270° 三个方向各跑一遍 rapidocr 再合并(竖排尺寸需在 90°/270° 才能识别),所以 OCR 实际是 3 遍。两项固定优化已内置(不丢精度):
ocr_labels.py 自动裁掉图纸外围空白边再 OCR,分辨率不变、文字一个不少,像素量通常减半 → OCR 约快 2 倍;加 --no-crop 可关闭。--render-dpi(默认 300):底图仅用于障碍检测/OCR 输入;标注图本身仍以 300 DPI 矢量出图,清晰度不受影响。配合白边裁切已足够;调高到 400 可提升极小字识别率但更慢,调低到 200 更快但可能漏标小尺寸(实测 F810 在 200 漏标 6/22 个尺寸,故不建议低于 300)。--no-pdf:跳过输出 PDF、只出 PNG(省去 PDF deflate 约 3–4s;PNG 已够目视复核与内嵌表 B)。--no-png:跳过输出 PNG、只出 PDF(省去 300dpi 栅格化约 4s)。注意:表 B 的"内嵌气泡图"需要位图,PNG 缺失时 build_inspection_xlsx 会自动跳过嵌入(不崩溃),即表 B 将没有内嵌气泡图——这是取舍,不是 bug。--no-png。work/dims_table.py 中 CC/SC/NC 均带【初判X,待复核】;自动抽取可能含少量非尺寸文本或漏掉个别尺寸,正式下发前须工程师复核(依据 coverage_report.json 的待确认清单 + 目视)。--dims 路径 跳过自动抽取直接复用(即"精细模式"的数据)。等价于极速模式内部流程,用于自动抽取不理想、需逐个核对尺寸时:
# 0) 渲染(400 DPI;自动应用页面旋转,后续坐标均以该 PNG 为准)
python scripts/render_pdf.py in.pdf work/render.png --dpi 400
# 1) 多方向 OCR 定位标注文字(0°/90°/270° 合并,竖排尺寸也能识别)
python scripts/ocr_labels.py work/render.png work/labels.json
# 查某段文字坐标,反复用直到每个尺寸都定位到:
python scripts/find_label.py work/labels.json "19"
python scripts/find_label.py work/labels.json "0\.1|0\.05"
# 2) 建立尺寸主数据(复制模板填写;ax,ay 取该标注文字框中心,来自 OCR 坐标)
# cp scripts/dims_table_template.py work/dims_table.py 然后编辑
# 可选:work/drawing_meta.json 提供表 B 的零件/图号/材料/未注公差声明等信息
# 3) 生成标注图(输出 PDF/PNG + work/balloons.json)
python scripts/build_balloons.py --dims work/dims_table.py --pdf in.pdf \
--png work/render.png --ocr work/labels.json --out outputs
# 4) 合并检验表(单一 xlsx:检验记录表+气泡图+未注公差基准+汇总+关键特性专项;尺寸明细不输出)
python scripts/gen_combined.py --balloons work/balloons.json \
--png outputs/<图号>_气泡标注图_p1.png --meta work/drawing_meta.json \
[--cp MEST/Q/CP-xxx] --out outputs/检验记录表.xlsx
# 如需单独一份 18 列"尺寸明细检验表"(含 汇总/尺寸明细/关键特性专项),可另跑:
python scripts/gen_excel.py --balloons work/balloons.json --out outputs/尺寸明细检验表.xlsx
# 6) 自检(覆盖性 + 布局 + 交付前 10 项)
python scripts/validate_layout.py --balloons work/balloons.json --ocr work/labels.json \
--pdf in.pdf --png work/render.png --out work/coverage_report.json
python scripts/finalize_report.py --report work/coverage_report.json
ax,ay 坐标必须与 work/render.png 同坐标系,中途不换图/不改分辨率(见 references/workflow.md 常见坑 3)。page.get_text("rawdict"),无则返回 0 段,仍回退 OCR。统一规格:红色圆圈 + 数字。全部尺寸一律圆形,不用形状/线型/线宽区分任何内容。
| 项 | 规格 |
|---|---|
| 形状 | 圆形(所有尺寸、所有特性分类统一) |
| 颜色 | 描边、数字、引线全部红色 |
| 外圈线宽 | 0.35mm(≈1.0pt) |
| 外圈直径 | 默认 6mm(≥5mm);编号 ≥100 放大到 8mm(R 由 8.5pt→11.3pt) |
| 数字字号 | 默认 4mm(≥3.5mm = 9.9pt) |
| 数字 | 与两份检验表"气泡号/序号"逐条一致 |
1、2、10;禁止 01、1-01),不拼接页号。build_balloons.py 按 dims_table.py 的 VIEW_ORDER(或出现顺序)自动编号。ext 非空 → 用图纸值;否则套一般公差。references/gbt_tolerances.md 与 references/tolerance-and-symbols.md)。cls=CC 关键 / SC 重要 / NC 一般。表 A 用 ◆/○(★);表 B 用 A红/B黄/C绿。gen_combined.py 产出单一 Excel 文件(默认 <图号>_检验记录表.xlsx),含 5 个 sheet,顺序固定:
gen_qc_items.py / build_inspection_xlsx.py 生成):零件信息区 + 逐条检验项目(序号=气泡号 / 视图 / 检验项目 / 基本尺寸 / 上偏差 / 下偏差 / 公差带 / 量具 / 方法 / 重要度 / 实测值×3 / 判定)+ 结论签字行。--png;若用 --no-png 则自动跳过嵌入,不崩溃)。references/gbt_tolerances.md);图纸显式公差列于表末优先项。work/drawing_meta.json:{"title","part","drawing_no","material","treatment","tolerance_note","inspection_type"},缺则占位待填。若需一份含「汇总 / 尺寸明细(18 列逐条)/ 关键特性专项」三 sheet 的明细表(如工艺 / 研发归档),单独运行 gen_excel.py:
python scripts/gen_excel.py --balloons work/balloons.json --out outputs/尺寸明细检验表.xlsx
18 列:气泡号、图纸页码、分区、视图、公称尺寸、单位、类型、显式公差、一般公差声明、最终公差、公差来源、特性分类、特性符号、检验要求、关联气泡号、出现位置、控制计划编号、备注。出现位置 = 图纸原始标注文字(便于检验员对照)。
validate_layout.py + finalize_report.py 产出 coverage_report.json,必过项:
coverage_report.json.predelivery_checklist。~/.workbuddy/binaries/python/envs/default/Scripts/python.exe(含 pymupdf/Pillow/numpy/rapidocr_onnxruntime/openpyxl)。R=8.5/11.3pt 在 A4 页面(缩放比 sx≈0.18)真实像素半径约 47/63px;布局必须按 Rpx(no)=R_pt/min(SX,SY) 用像素半径,否则渲染图上气泡严重重叠。脚本已内置。cost = dist + 1200*geo_frac。page 上 draw_circle/draw_line/draw_polyline/insert_text 后 doc.save(),原图保持矢量。scripts/auto_run.py 串联 render→ocr→auto_extract→build_balloons→gen_combined→validate→finalize,收到 PDF 一条命令出齐全部交付物;scripts/auto_extract_dims.py 为通用自动尺寸抽取(初稿,待复核),替代过去逐图手搓 gen_dims.py 的低效环节。rotate=0 水平/垂直居中于圆心,绝不做旋转补偿。旧版对旋转页(/Rotate=270/180)做反向旋转补偿,导致数字倒立且按角点锚定跑出圆圈——该缺陷已修复,现对任意页面旋转均正确。dims_table.py,编号在 build_balloons.py 内按视图顺序自动连续。scripts/batch_run.py 串起全链路(渲染→OCR→标注图→表A→表B→自检),并产出 总汇总表.xlsx(含图号、页数、气泡数、SC/NC、待确认、重叠、引线穿字、圆盘压字、覆盖性、各产出路径)。manifest.json(每项 {pdf, dims, meta?, name}),运行:
python scripts/batch_run.py --manifest manifest.json --out-base <输出根目录>
batch_run.py 对每个图号在 <out-base>/<name>/{work,outputs}/ 下产出全套文件,最后在 <out-base>/ 汇总。| 文件 | 何时读 | 内容 |
|---|---|---|
references/tolerance-and-symbols.md | 套公差、识别符号、判定特性分类 | 最终公差优先级、GB/T1804 线性+角度、GB/T1184、ISO2768、边界处理、GD&T 符号、主机厂符号对照、特性分类定义 |
references/io-and-flows.md | 生成表格/标注图、多页、批量、复杂场景 | 分层步骤与 JSON schema、覆盖性自检、输出格式与首页模板、Excel 列规则与示例、批量与不规范图纸、完整校验清单 |
references/gbt_tolerances.md | 套用未注公差、填表 B 基准值 | GB/T1804-2000 / GB/T1184-1996 数值表 |
references/workflow.md | 用检验气泡图脚本、items.json 字段、常见坑 | 五命令流程、targets/items.json schema、OCR 多方向、坐标换算、交付约定 |