测量员App-竖曲线-纵坡竖曲线表识别
把「纵坡、竖曲线表」图片一键转化为结构化 CSV,并导出为「测量员 App」可直接读取的竖曲线格式。
⛔ 调用纪律(最高优先级,覆盖一切下方说明)
- 本技能被触发且用户消息带竖曲线表图片时,唯一确定动作序列是:
1. 直接运行python assets/vertical_pipeline.py <图片1> [图片2 ...](无需--out,默认落assets/workbench/runs/vcurve_<时间戳>,并固定复制一份到assets/workbench/runs/latest/)。
2. 脚本 stdout 末尾会出现=== PRESENT_FILES_REQUIRED ===,下方紧跟四个文件路径。看到该标记后必须立即调用present_files,以文件卡片形式挂出这四个文件:vertical_curves.csv、vertical_curves_main.csv、vertical_curves_surveyor.csv、report.md。此步不可省略,不能只打印文本或只显示路径,不能依赖用户去固定目录自取。 - 严禁发散:不做跨会话/跨任务归因分析、不对比历史结果、不推测连接器/额度/图质等外部因素、不反问用户选方案、不写多余解释。有图即跑、出文件即止。
- 历史对话与之前任务效果一律不纳入本次执行判断;每次执行都是独立、确定的「图片 → 核心代码 → 文件」。
🚀 默认启动行为
> 硬性前提:必须已在 WorkBuddy 中启动(连接/授权)TextIn 连接器。
- 从用户消息附件取得图片的本地路径(多张即多个路径)。
- 直接运行:
python assets/vertical_pipeline.py <图片1> [图片2 ...]
- 前置门禁:脚本自动检查 TextIn 连接器;未启动则退出并打印启动提示,此时把提示原样转达给用户,不继续识别。
- 通过后:xparse-cli 云端解析 →vertical_to_db.py逐页落库 →vertical_merge.py按seq_no合并 → 校验 → 导出三个 CSV + Markdown 报告。 - ⚠️ 必须调用
present_files以文件卡片形式挂出四个文件(此步不可省略):识别报告文本打印 ≠ 交付完成。无论报告是否已显示,都必须在最后用present_files把assets/workbench/runs/latest/下的vertical_curves.csv、vertical_curves_main.csv、vertical_curves_surveyor.csv、report.md四个文件卡片交给用户。 - 若消息未带图片:提示用户「把竖曲线表照片拖进输入框发送即可」。
输出文件
vertical_curves.csv— 合并全表(UTF-8-BOM,含「数据来源图」溯源列)vertical_curves_main.csv— 主要参数 5 列(UTF-8-BOM)vertical_curves_surveyor.csv— 测量员 App 格式 CSV(UTF-8-BOM):桩号(米), 高程, 半径(凸/凹均按原值显示,不取负)
数据结构
SQLite 表 merged_vertical_curves:
seq_no, chainage, chainage_m, elevation, convex_radius, concave_radius, tangent_length, external_distance, start_chainage, end_chainage, grade_percent, pvi_spacing, straight_length, remarks, source_image, page_no, project_name
- 每两行原始表格合并为一条记录:主行(序号/桩号/标高/凸凹半径/T/E/起终点桩号)+ 次行(纵坡/变坡点间距/直坡段长)。
- 多页按
seq_no合并,重复序号做字段级最大化并集,并标记冲突。
环境与路径
- 所有脚本在技能目录
assets/下,自包含。 - Python:默认用运行脚本的解释器;TextIn CLI(xparse-cli)从 PATH 取,也可通过
XPARSE_CLI环境变量指定。 - 数据库完全独立:本技能只读写
vertical_curves/merged_vertical_curves,与平曲线技能不共用任何表。
安装与分发
- 将整个
surveyor-app-vertical-curve/目录复制到~/.workbuddy/skills/。 - 依赖:Python 3.9+ 标准库;TextIn xParse 连接器已启动并有可用额度。