Install
openclaw skills install @chesaram/bid-blind-bid-format-scanner本技能用于投标人在封装或上传投标文件前,对"暗标"部分(技术标/施工组织设计/技术方案)执行盲审格式化条款的机械合规扫描。当用户说"暗标格式检查""盲标排版""暗标废标风险""检查技术标格式是否符合暗标要求""扫描标书里有没有泄露公司名/Logo/项目负责人""页边距字体页码页眉页脚是否合规",或上传 Word/PDF 技术暗标要求做封标前体检时触发。技能逐条比对招标文件"暗标编制要求"与当前文件,输出"要求 vs 现状"差异清单、风险等级(废标级/扣分零分级)与一键修订指令,并扫描文档元数据与全文是否残留投标人身份信息。仅做机械格式检查,不评价技术方案内容优劣。
openclaw skills install @chesaram/bid-blind-bid-format-scanner面向投标人侧的封标前"防盲"体检工具。暗标评审普遍实行"一票否决"或"扣分/零分制",而判定依据纯机械:页边距偏 1 毫米、标题用了微软雅黑而非宋体、页码位置不对、文档属性残留作者名——都可能直接废标或零分,毫无商榷余地。本技能用确定性脚本提取 Word/PDF 的格式属性与元数据,结合招标文件"暗标编制要求",逐项比对并输出差异清单、风险等级与修订指令;同时扫描全文与文档属性,揪出任何残留的投标人身份信息。
触发场景(任一项即触发):
references/self_check_list.md 的可打印清单供手动核对。不触发:技术方案内容优劣评价、报价评分预测、商务标明标检查——这些超出本技能边界,应引导至对应专家技能。
references/blind_bid_specs.md)仅在招标条款完全缺失某维度时作回退默认值,且须在报告中显式标注"依据通用标尺假设",不得冒充招标要求。若招标写了但模糊(如"字体美观大方"),不得用标尺补全,须标"待确认"并反问用户向其招标方澄清(见 references/blind_bid_specs.md 顶部失效场景说明)。--allow 避免误报。若槽位 1 缺失,主动询问用户提供招标文件的暗标编制要求;若槽位 2 缺失,提示上传文件。槽位 3/4/5 可留空,仅影响对应建议的精细度。
从用户提供的"暗标编制要求"中提取结构化画像,逐项记录;若用户给的是完整招标文件,先自动定位暗标编制要求所在章节(常在"投标人须知""评标办法"或单独附件)再提取。
回退与降级规则(关键):
references/blind_bid_specs.md 通用标尺填入,标注 (假设)。待确认,并在下方确认环节反问用户向招标方澄清。(假设) 或 待确认,主动提示"⚠️ 当前解析可能有偏差,建议重新粘贴原文或上传清晰截图;以下比对基准可能不准确"。解析维度:
🔒 阻塞式确认(必须):Step 1 解析完成后,先向用户展示"要求画像"并请求确认,用户未确认不得进入 Step 2。若用户直接上传了文件且画像清晰,可一并展示画像与"确认后我即开始扫描"的提示,但仍须等用户明确确认(如"对,开始")再运行脚本。
⚠️ 常见踩坑提醒(解析后主动推送):结合 references/blind_bid_failure_cases.md,向用户提示本项目高频雷区,例如:
优先用 .docx 路径。使用受管 Python 运行 scripts/scan_docx.py;PDF 用 scripts/scan_pdf.py。
# Word(最可靠):
C:/Users/Meng/.workbuddy/binaries/python/envs/default/bin/python \
<skill>/scripts/scan_docx.py "<暗标文件.docx>" \
--identifiers "公司全称,公司简称,项目负责人姓名,既往项目名称" \
--allow "我公司,我单位" \
> scan_result.json
# PDF(最佳努力,字体/页边距不可靠):
C:/Users/Meng/.workbuddy/binaries/python/envs/default/bin/python \
<skill>/scripts/scan_pdf.py "<暗标文件.pdf>" \
--identifiers "公司全称,公司简称,项目负责人姓名" \
--allow "我公司,我单位"
--identifiers:请用户列出可识别身份信息(公司全称/简称/英文缩写/Logo文字/项目负责人/既往项目名),这是精确扫描的关键。--allow:白名单(逗号分隔)。若本项目允许使用某些自称/术语(如允许"我公司"),填入后命中不报,避免误报。仅精确匹配。python-docx / pypdf,先安装再运行:.../envs/default/bin/pip install python-docx pypdf。context),避免上下文爆炸。scan_result.json 等中间产物(护栏铁律 2)。AI 按以下字段解析脚本返回值(以 scan_docx.py 为例;scan_pdf.py 字段略少,见其 unreliable_fields):
{
"file": "技术暗标.docx",
"format": "docx",
"sections": [ // 每个分节(首页边距/页眉页脚)
{"index":0,"page_width_cm":21.0,"page_height_cm":29.7,"orientation":"portrait",
"margin_top_cm":2.5,"margin_bottom_cm":2.0,"margin_left_cm":2.0,"margin_right_cm":2.0,
"has_header":false,"has_footer":false,
"header_has_page_number":false,"footer_has_page_number":false}
],
"font_stats": { // 字体/字号/字形画像
"eastasia_fonts":["宋体"],"ascii_fonts":["Times New Roman"],"sizes_pt":[14.0],
"any_bold":false,"any_italic":false,"any_underline":false,"any_colored_text":false
},
"alignment_dist": {"LEFT":120,"JUSTIFY":3}, // 对齐分布
"line_spacing_dist": {"EXACTLY:30.0pt":118}, // 行距分布
"indent_dist": {"0.74cm":118}, // 首行缩进分布
"title_number_samples":["一、工程概况","二、施工方案"], // 标题编号采样(判断采用哪套方案)
"doc_properties": { // 元数据(身份显形)
"author":"张三","last_modified_by":"李四","company":"XX建设集团","title":"施工组织设计"
},
"leakage_hits": [ // 身份命中(含上下文)
{"type":"identifier","match":"XX建设集团","pos":123,
"context":"……我公司承建的XX建设集团高速公路项目……"}
],
"text_length":15230,
"errors":[]
}
注:脚本不输出"页码/页数"逐页信息,
pos为全文字符偏移(非页码)。PDF 路径见scan_pdf.py的unreliable_fields——字体/行距/页边距等标不可靠,比对时按references/blind_bid_specs.md的"PDF 可靠性矩阵"处理。
将脚本输出与 Step 1 画像逐条对照,对每条格式项给出:要求值 / 当前值 / 是否相符 / 风险等级 / 修订指令。比对容差严格按 references/blind_bid_specs.md 的「容差与判定规则表」(字体、对齐、页码、字形、颜色为零容差;页边距 ±0.2cm、行距 ±2 磅、字号 ±0.5 磅、缩进 ±0.5 字符为默认容差)。重点检查:
any_* 标记,零容差)。has_header/footer、*_has_page_number 任一为 true 即 🔴(若招标禁止,零容差)。title_number_samples 判断当前采用哪套方案,与画像对照。doc_properties 中 author/company/last_modified_by 非空即 🔴,给出清零指令。--identifiers 返回的 leakage_hits(type=identifier)全部 🔴,必须处理;给出安全改写(如"XX建设集团"→"投标人")。context 判断是否为真实泄漏,再给改写建议(如"我公司承建"→"本项目实施")。禁止单凭词命中即判废标。--allow,命中已在脚本层剔除,不在此重复报告。references/identity_patterns.md 第三节主动提示用户逐项自查——图片内嵌文字(OCR)、图片 EXIF/XMP(ExifTool)、表格边框颜色、图表内字体、图片水印、图签栏公司名/签章(🔴)、修订痕迹批注者(🔴)、超链接蓝色(🟡)。这些项一律标"⚠️ 需人工复核",不计入自动判定。误报分级与白名单机制详见
references/identity_patterns.md第〇节。原则:宁可漏报提示、不可误伤废标。
当页数 > 上限(或用户担心超限):给出"精简优先级建议",原则——保留关键工期、质量保证措施、核心方案;优先压缩:附图(合并/缩印/移图表内说明)、冗长工艺描述、重复章节、可移至商务明标的内容。不替用户删改技术内容,只给可执行的裁剪方向。
结合评分权重(若用户提供评分标准):在裁剪建议中增加"该章节评分权重"列——
按下方模板输出"招标文件要求 vs 当前文件现状"对照表 + 修订指令清单 + 身份扫描结果。报告末尾附技能署名与反馈脚注(护栏要求,见文末)。
| 能力 | 实现方式 |
|---|---|
| 1. 格式硬检 | scan_docx.py 提取页边距/字体/字号/行距/对齐/缩进/页码页眉页脚 + Step 3 按容差表比对 |
| 2. 身份显形扫描 | 脚本 --identifiers 精确命中(🔴) + 启发式词表(🟡) + --allow 白名单 + 元数据检查 + 图片/表格人工复核提醒 |
| 3. 篇幅逻辑裁剪 | Step 5 优先级建议(结合评分权重,不删改内容) |
| 4. 一键差异报告 | Step 6 模板输出,附 🤖批处理(VBA/Python)/👤人工 分级修订指令 |
| 5. 复检闭环 | 用户修订后上传并输入"复检",仅复查上次不合格项 |
| 6. 智能提取 / 自检清单 | 接收完整招标文件自动定位暗标要求;输出可打印自检清单 |
【暗标格式"防盲"合规扫描报告】
文件:<文件名> | 扫描时间:<时间> | 要求来源:<招标文件章节/通用标尺假设>
(若含通用标尺假设或待确认项,在此顶部红色提示)
一、格式逐项比对
| # | 检查项 | 招标要求 | 当前现状 | 结论 | 风险 | 修订指令 |
|---|--------|---------|---------|------|------|---------|
| 1 | 页边距(上/下/左/右) | 2.5/2/2/2 cm | 2.5/2/2/2.3 cm | 不符 | 🟡 | 右页边距由2.3改为2.0cm |
| 2 | 正文字体 | 宋体四号常规 | 微软雅黑四号 | 不符 | 🟡 | 全文字体替换为宋体 |
| 3 | 页码/页眉页脚 | 禁止 | 检测到页脚页码 | 不符 | 🔴 | 删除页脚及页码域 |
| ... | ... | ... | ... | ... | ... | ... |
二、身份"显形"扫描
🔴 精确命中:公司名"XX建设集团"出现于第N段:"……"(建议替换为"投标人")
🔴 文档元数据:author=张三、company=XX建设集团(建议清零,见下"批处理脚本")
🟡 启发式:出现"我公司承建"(前后文:"……我公司承建XX公路……",建议改为"本项目实施")
⚠️ 人工复核:图片EXIF/图签栏/修订痕迹须自行核查(见第四部分)
三、篇幅
当前约 N 页 / 上限 M 页 → 未超限 / 超限。
[若有评分标准] 高权重章节(如"工期保证")不建议删减;低权重/无权重章节(如冗长工艺描述)优先压缩。
四、修订指令汇总
🤖 可批处理(一键执行):
1. 全文字体→宋体四号常规,清除加粗/倾斜/下划线/彩色
2. 页边距统一 上2.5 下/左/右2 cm;行距固定值30磅
3. 删除页眉页脚及页码;首行缩进2字符、去空格空行
4. 文档属性 author/company/lastModifiedBy 清零
5. 替换/删除所有精确标识符残留
▸ Word 宏(Alt+F11 粘贴运行):
Sub FixBlindBidFormat()
With ActiveDocument.Content.Font
.Name = "宋体": .NameFarEast = "宋体": .Size = 14
End With
With ActiveDocument.Content.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly: .LineSpacing = 25
End With
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Delete
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Delete
ActiveDocument.BuiltInDocumentProperties("Author").Value = ""
ActiveDocument.BuiltInDocumentProperties("Company").Value = ""
End Sub
▸ 元数据清零(技术用户,Python):
python -c "from docx import Document; d=Document('技术暗标.docx'); d.core_properties.author=''; d.core_properties.company=''; d.core_properties.last_modified_by=''; d.save('技术暗标_clean.docx')"
👤 需人工核对(AI 不代决):
1. 启发式命中"我公司/荣获"等:逐句判断上下文,手动改为"投标人/本项目实施"
2. 压缩附图与冗长工艺:人工选择保留哪些、删减哪些
3. 图片EXIF(ExifTool)、图签栏公司名、修订痕迹批注者:逐项人工核查去标识
五、风险结论
🔴 废标级 N 项(须 100% 修复后封标)| 🟡 扣分零分级 M 项(建议修复)
六、复检与声明
· 修订完成后,请重新上传文件并输入"复检",我将仅针对本次不合格项定向复查(✅已修复 / ❌仍未修复)。
· ⚠️ 本检查为辅助性工具,最终合规性以评标委员会认定为准;图片EXIF、隐藏图层、扫描件、图签栏等项需人工复核。
PDF 输入时,字体/行距/页边距/对齐等项在报告中标注"PDF 不可靠,建议转 docx 后复检",且不计入 🔴 判定(见
references/blind_bid_specs.mdPDF 可靠性矩阵)。
署名:一线评标专家&ChesaraM | 反馈/交流:微信公众号「一线评标专家」(使用问题、误报反馈、实务建议,欢迎留言交流)