标书查重与围串标风险初筛助手。当用户上传多份投标或招标文件需要检测文本雷同、关键信息(公司/电话/项目经理/造价师等)碰撞、文档属性一致、表格相似或两份文档差异比对时使用。基于大模型语义比对,输出含风险等级与定位的结构化检测报告,并支持导出 Word。适用于投标人自检与招标人初步筛查,不适用于评标委员会正式判定。
Documents
Bid Dup Check 1.1.0
Try it标书查重与围串标风险初筛助手。当用户上传多份投标或招标文件需要检测文本雷同、关键信息(公司/电话/项目经理/造价师等)碰撞、文档属性一致、表格相似或两份文档差异比对时使用。基于大模型语义比对,输出含风险等级与定位的结构化检测报告,并支持导出 Word。适用于投标人自检与招标人初步筛查,不适用于评标委员会正式判定。
What it does
标书查重与围串标风险初筛助手。当用户上传多份投标或招标文件需要检测文本雷同、关键信息(公司/电话/项目经理/造价师等)碰撞、文档属性一致、表格相似或两份文档差异比对时使用。基于大模型语义比对,输出含风险等级与定位的结构化检测报告,并支持导出 Word。适用于投标人自检与招标人初步筛查,不适用于评标委员会正式判定。
The skill document
标书查重专家(bid-dup-check)
Overview
将主流标书查重 / 围串标检测能力封装为轻量化专家技能(标书查重专家),实现「上传文件 → 自动解析 → 风险检测 → 结构化报告」的闭环。核心定位是标书风险快速初筛助手,而非专业查重系统:用大模型做语义比对与实体抽取,用脚本做确定性的文档解析与报告渲染,避免重计算与自建向量库。
适用:投标人自检、招标人初步筛查。不适用:评标委员会正式判定。仅支持中文标书。
本 Skill 是「给 AI 智能体的行为准则」,而非「给工程师的 SOP」。下面的每一步都同时规定做什么 + 怎么想 + 怎么输出 + 出错怎么办;核心推理(Step 4)的 Schema 已内联,不依赖你"去读外部文件才能知道字段"。
When To Use
出现以下意图时触发本 Skill:
- 「检查这几份标书有没有雷同 / 抄袭」
- 「这几份投标文件是不是串标 / 围标」
- 「对比两份标书,标出增删改」
- 「生成标书查重检测报告」
- 用户上传 2–10 份
.docx/.pdf(含文本层)/.txt标书,并要求查重或风险检测
未触发时勿主动调用。
Environment & Dependencies(P3-1 修订:版本与自动检测)
脚本运行于 WorkBuddy 托管 Python 环境。执行前先自动检测依赖是否就绪:
Python >= 3.9python-docx >= 0.8.11(docx 解析与报告生成)pypdf >= 3.0.0(pdf 文本与元数据)
检测与安装方式(用托管 Python 的 pip):
python -c "import docx, pypdf; print('deps ok')" || pip install python-docx pypdf
若导入失败,先安装再继续。若依赖安装失败,给出替代方案:提示用户将文档转为 .txt 后重新上传(.txt 仅需标准库即可解析)。
提取脚本会一并导出 docx 内嵌图片到 extracted_images/ 目录,供视觉 OCR 使用。
Path Resolution(P2-1 修订:路径变量规范化)
执行任何脚本前,必须先确定两个真实路径变量(严禁在命令中保留尖括号 < > 占位符):
SKILL_DIR:本 Skill 的根目录绝对路径,即本SKILL.md所在目录。其下的scripts/即脚本目录。WORKSPACE:当前会话的工作目录绝对路径,即用户上传文件所在目录(用pwd获取)。
命令模板(将 [...] 整体替换为真实绝对路径后再执行):
python "[SKILL_DIR]/scripts/extract_documents.py" \
--files "[FILE1]" "[FILE2]" \
[--bidding "[TENDER]"] \
--out "[WORKSPACE]/extracted.json"
若不确定
SKILL_DIR的真实位置,可在本会话中用文件检索定位scripts/extract_documents.py的真实绝对路径后代入。绝不要把字面量 `` /<工作目录>当作命令参数传给 Shell。
Workflow
Step 1 — 收集文件 + 启动确认(P2-2)
向用户确认待检测的投标文件(2–10 份)。若用户希望排除「大家都照抄招标文件」造成的误报,可一并收集招标文件用于基线剔除。
输入约束:单文件 ≤ 50 MB;格式 .docx / .pdf(文本层)/ .txt。扫描版 PDF 若无文本层,当前环境 OCR 默认不可用,需在报告中标注限制。
收到文件后立即回复启动确认(P2-2):
已收到 N 份文件:[文件名列表]。正在进行文档解析,预计需要 X 分钟……
估算规则(供填 X 参考,不要求精确):总段落数 ≤ 100 → 约 1–2 分钟;100 < 总段落数 ≤ 300 → 约 3–5 分钟;> 300 → 约 5–10 分钟;若含扫描件 OCR,每张图片额外增加 5–10 秒。
仅上传 1 份文件时:提示至少需要 2 份才能比对,并询问是否仅做单文档结构分析(此时只输出结构概览,不做碰撞检测)。
Step 2 — 提取结构化内容
运行提取脚本,将文档转为统一 JSON(路径按上文 Path Resolution 规范处理):
python "[SKILL_DIR]/scripts/extract_documents.py" \
--files "[FILE1]" "[FILE2]" \
[--bidding "[TENDER]"] \
--out "[WORKSPACE]/extracted.json"
进度反馈:解析完成后简要告知:
✅ 文本提取完成,共解析 N 个段落 / M 份文档。
输出 JSON 含每份文档的段落、表格、元数据与图片路径。若 extracted.json 中出现 errors 或文档 warnings(如 PDF 无文本层),按 Step 6 的错误处理策略处理。
Step 3 — 图片 / 扫描件处理(P1-3 修订:OCR 职责澄清)
⚠️ 本步解决原文档的矛盾:原 Step 3 说"用视觉能力做 OCR",Notes 又说"OCR 默认不可用",导致职责不清。职责归属如下:
3.1 检查 extracted.json 中每个文档的 char_count:若某文档文本量极少(< 100 字/页)但图片极多 → 判定为扫描件。
3.2 若你具备视觉多模态能力:
- 对
extracted_images/下该文档的图片逐张进行 OCR 文字提取; - 将识别文字作为「伪段落」补回该文档文本,并在来源中标注
source: vision_ocr; - 每张图片处理后简要告知用户进度。
3.3 若无视觉能力或 OCR 不可用:
- 跳过该图片;
- 在最终 findings 的
limitations中记录:文档 [文件名] 含 N 张图片/扫描页,未提取文字,风险检测覆盖率不完整。
⚠️ 严禁对图片做图像哈希或 Logo 比对,本 Skill 仅聚焦图片中的文字内容(如 Logo 上的文字、资质证书编号)。
Step 4 — 语义分析与碰撞检测(LLM 核心推理环节 · 内联 Schema + 思维链)
⚠️ 本步骤是整个 Skill 的核心,必须严格按子步骤顺序执行,不得跳过。references/detection_rules.md 含敏感字段与补充规则的详细说明,可在需要时通过文件读取工具查看;但本步内联的字段清单、定级标准与输出 Schema 为唯一权威——两者冲突时一律以本步为准,不得自行增删字段。
4.0 前置分流(应对长文档)
- 统计
extracted.json中所有文档的总段落数total_paragraphs; - 若
total_paragraphs ≤ 200:直接进入 4.1 全量比对; - 若
total_paragraphs > 200:先执行摘要阶段——每份文档生成章节级摘要(格式:{"chapter": "技术方案", "key_entities": ["张三", "1000万"], "data_points": ["工期365天"]});仅对摘要中命中敏感字段或高度相似的章节进入 4.3 精比;未命中的章节在报告中标注「摘要阶段未命中,未进入精比」。
4.1 实体归一化与敏感字段清单(降噪前置 + 字段内联,避免依赖外部文件)
先对齐本步检测的敏感字段清单(确定性与一致性以此为准,不得自行增删):
公司名称 / 公司简称、项目经理、造价师、联系电话、邮箱、开户行与账号、法人 / 授权代表、注册地址、统一社会信用代码。
实体归一化:
- 公司名称模糊匹配:
中建三局=中建三局集团有限公司; - 人名去注释:
李四(项目经理)→李四; - 数字统一:
10年=十年=10 年。
4.2 基线剔除(关键降噪,P0 采纳)
- 若提供了招标文件(
--bidding):雷同文本同时出现在招标文件和 ≥2 份投标文件中 → 标记baseline,level设为低,reason注明「该段文本源自招标文件第 X 章,属正常引用」; - 仅计算投标文件之间独有的雷同;
- 若未提供招标文件:直接互比,并在
limitations注明「未启用基线剔除,存在基线误报可能」。
4.3 风险检测(按优先级执行,低成本高价值优先)
- 关键信息碰撞(人员 / 资质 / 地址 / 联系方式)
- 文档属性比对(作者 / 最后作者 / 公司 / 创建修改时间)
- 文本语义相似度(仅针对粗筛命中的段落,见 Context Management)
- 表格结构相似度(报价表 / 清单表)
4.3.5 差异比对(仅当投标文件数 = 2 时触发)
- 若用户上传的投标文件恰好为 2 份,执行段落级 diff(增 / 删 / 改);
- 若文件数 > 2,跳过 diff(避免组合爆炸),并在
conclusion或limitations中说明「文件数超过 2 份,差异比对暂不适用,建议两两单独比对」。
4.4 相似度定级标准(P0-2 修订:定性锚定,替代"感觉分数")
| 等级 | 代表 score | 定性特征(满足任一即判定) | 示例 |
|---|---|---|---|
| 高 | 0.90 | 连续 50 字以上完全相同;或仅替换公司名称其余逐字一致;或核心句子相同且多个关键数据(单价/工期/编号)完全一致 | 技术方案整段逐字复制 |
| 中 | 0.60 | 表述逻辑/结构一致但句式与用词有明显调整(同义改写);或表格结构一致但数据有细微变化;或最后作者相同/创建时间高度接近 | "具有10年经验" vs "拥有十年工作经验" |
| 低 | 0.30 | 仅个别通用术语或招标原文重合;非核心字段雷同 | 行业套话"根据招标文件要求" |
场景修正规则:
- 技术方案章节:整体下调一档(行业术语趋同属正常);
- 商务报价章节:整体上调一档(报价格式趋同属正常);
- 通用条款 / 法律法规引用:直接标记
低,不计入风险。
输出要求:每条 text_similarity 必须含 level、score(取上表对应档位代表值)、reason(解释定级依据的定性特征)、type(直接复制 / 同义改写 / 结构相似)。
4.5 强制输出 Schema(严格按此输出,禁止增删顶层字段)
{
"overview": {
"file_count": 2,
"risk_total": 5,
"high_risk_count": 2,
"avg_similarity": 0.42,
"summary": "一句话概述"
},
"key_info_collisions": [
{
"field": "项目经理",
"value": "张三",
"files": ["a.docx", "b.pdf"],
"locations": ["a.docx 第12段", "b.pdf 第8段"],
"level": "高",
"reason": "两家投标文件的项目经理为同一自然人"
}
],
"text_similarity": [
{
"file_a": "a.docx",
"file_b": "b.pdf",
"score": 0.90,
"level": "高",
"type": "直接复制",
"reason": "连续三段落结构完全一致,且关键数据相同",
"segments": [
{"text": "(前50字)……", "location": "a.docx 第X段 / b.pdf 第Y段"}
]
}
],
"attribute_warnings": [
{
"file": "a.docx",
"level": "高",
"fields": {"author": "张三", "company": "XX"},
"detail": "作者/公司相同",
"reason": "不同投标方文档的作者元数据相同"
}
],
"table_similarity": [
{
"file_a": "a.docx",
"file_b": "b.pdf",
"level": "中",
"detail": "表格结构相似",
"reason": "报价表行列结构一致,仅单价尾数不同"
}
],
"diff": [
{"type": "add|delete|change", "file_a": "a.docx", "file_b": "b.pdf", "content": "……"}
],
"limitations": [
"文档 c.txt 含 N 张扫描页未提取文字,覆盖率不完整"
],
"baseline_note": "已使用招标文件做基线剔除",
"conclusion": "综合建议文本"
}
level 取值仅限 高 / 中 / 低 三选一;score 取 4.4 表对应档位代表值;baseline_note 未启用时为 null;conclusion 必填。
4.5.1 limitations 字段填充规则(合并以下来源,去重后输出字符串数组)
- 来自
extracted.json中各文档的warnings(如「PDF 无文本层」); - 来自 Step 3.3 的 OCR 跳过记录;
- 来自 Step 6 错误处理中「部分文件解析失败」的记录;
- 若未提供招标文件,追加:「未启用基线剔除,招标文件原文片段可能被误报为雷同」;
- 若某文档总字数 < 500 且图片占比 > 50%,追加:「[文件名] 疑似扫描件,文字覆盖率低,检测结果参考价值有限」。
4.6 自检清单(输出前必须逐项确认)
- 所有
level∈ {高, 中, 低} - 所有文件路径与
extracted.json中的filename完全一致 - 无风险的部分输出空数组
[],严禁省略该字段 - 每条 finding 都含
reason字段 -
overview.risk_total/high_risk_count与各数组长度一致 -
limitations已记录解析失败 / 扫描件未识别等覆盖缺口
确认无误后,将 JSON 写入 [WORKSPACE]/findings.json。
Step 5 — 渲染报告
将 findings JSON 写入文件后渲染报告(路径按 Path Resolution 规范):
python "[SKILL_DIR]/scripts/build_report.py" \
--findings "[WORKSPACE]/findings.json" \
--out "[WORKSPACE]/标书查重报告.docx" \
[--markdown "[WORKSPACE]/标书查重报告.md"]
结果交付(三层递进,P2-2):
- 3 句话风险摘要(如:"检测到 2 处高危雷同、1 处关键人员重叠,建议重点关注技术方案章节");
- 结构化详细报告(先展示 Markdown,再提供
.docx下载); - 文件下载链接。
报告须含七部分:检测概览 → 一、关键信息碰撞 → 二、文本语义相似度 → 三、文档属性预警 → 四、表格内容相似度 → 五、差异比对 → 六、综合结论与建议 →(附)限制与免责声明。
所有对外生成内容(对话摘要、Markdown 报告、docx 报告)末尾必须自动附统一署名与反馈脚注(由 build_report.py 渲染,护栏铁律级,不可省略):「署名:一线评标专家&ChesaraM | 反馈/交流:微信公众号「一线评标专家」(使用问题、误报反馈、实务建议,欢迎留言交流)」。
追问支持(P2-2):用户可针对任意一条 finding 追问。定位原文时回读 extracted.json 中对应文档该段落前后各 1–2 段作为上下文展示,而非仅依赖 segments 中的截取片段;若 segments 的位置信息(如「第 12 段」)不明确,用关键词在原文中模糊搜索回补。同时解释定级理由、建议进一步核实方向。
Step 6 — 边界、错误处理与免责声明
在对话或报告末尾说明:本 Skill 为初筛/辅助工具,不替代专业查重系统或法律判定;高利害场景须人工复核。不承诺「100% 检出」或「绝对判定围串标」。
错误与降级处理(P1-1,异常不得静默退出):
| 异常场景 | 处理策略 |
|---|---|
| 文件格式不支持 | 提示用户转换格式,列出支持清单(docx/pdf/txt) |
| 文件损坏 / 加密 | 标记该文件「无法解析」,继续处理其余文件,报告中注明 |
| 提取内容为空(疑似扫描版) | 提示可能是扫描版 PDF,建议提供文本版或启用视觉 OCR |
| 脚本执行超时 | 建议减少文件数量或拆分处理 |
| 依赖安装失败 | 给出替代方案:提示用户将文档转为 .txt 后重新上传 |
| 仅上传 1 份文件 | 提示至少需 2 份才能比对,询问是否仅做单文档结构分析 |
| findings 为空 | 报告正文写「未发现显著围串标特征」,仍渲染报告骨架(概览 + 免责声明) |
| 部分文件解析失败 | 在 limitations 记录,报告中标注覆盖率不完整 |
通用原则:脚本报错时立即终止后续脚本执行,读取 stderr,用通俗语言向用户解释;任何步骤失败都必须给出明确反馈,不得静默退出。
Resources
scripts/
extract_documents.py— 从 docx/pdf/txt 提取段落、表格、元数据、内嵌图片路径,输出统一 JSON(含 errors/warnings)。build_report.py— 读取 findings JSON,渲染 docx(及可选 markdown)检测报告,安全展示 reason/type/limitations。
references/
detection_rules.md— 敏感字段清单、风险等级、相似度定性评分锚点、基线剔除规则、报告 schema 与免责声明。作为 Step 4 的补充参考(Step 4 内联 Schema 为唯一权威)。
Context Management Strategy(P1-2)
标书篇幅长、多份两两比对时上下文压力大。提取脚本已将文档结构化为 JSON,分析在 JSON 上进行;额外策略:
- 段落切分:按文档标题层级切分,每段 ≤ 500 字;无标题时按 300 字滑窗切分(重叠 50 字);表格作独立单元不拆分。
- 分批(文档总段落数 > 200 时):先摘要后精比两阶段 —— 阶段一(粗筛)每份文档生成结构化摘要(章节标题 + 关键实体 + 数据点);阶段二(精比)仅对摘要中标记高相似的章节逐段精比。
- 比对优先级:关键信息碰撞(低成本高价值)→ 文档属性比对(零成本)→ 文本语义相似度(高成本,仅精比命中段落)→ 表格相似度。
Interaction Protocol(P2-2 汇总)
- 启动确认:收到文件即回复「已收到 N 份文件……预计 X 分钟」。
- 进度反馈:每完成一步简要告知(✅ 文本提取完成 / 正在进行语义比对(第 2/5 组)/ 分析完成,正在生成报告)。
- 交付:3 句话摘要 → 结构化报告 → 下载链接。
- 追问:对任意 finding 回读
extracted.json原文上下文(前后各 1–2 段)、解释理由、给核实建议。
Privacy & Security(P2-3)
- 所有文件仅在当前会话中处理,不持久化存储于 Skill 外部。
- 处理完成后,提示用户清理工作目录临时文件(
extracted.json、extracted_images/)。 - 不将标书内容用于模型训练或任何二次用途。
- 报告中涉及个人信息(身份证号、手机号)时脱敏展示(如
138****5678)。 - 若检测到文件中含明显敏感信息,主动提醒用户注意。
Notes & Limitations
- 不纳入 Skill 的能力:图片感知哈希、大规模自建库查重、专业逐字/LCS 算法、人工审核工作流、硬件/系统级报告操作(刻录/打印)。
- 扫描版 PDF OCR:依赖视觉多模态能力;若无能力则跳过并在
limitations标注(见 Step 3)。 - 上下文限制:单次 2–10 份常规标书;过多会导致上下文过长、成本与响应时间上升(见 Context Management)。
报告结构摘要(P3-2)
- 检测概览:文件清单、检测时间、总体风险等级、平均相似度。
- 关键信息碰撞:人员 / 资质 / 地址等硬指标重叠。
- 文本语义相似度:按风险等级排序的段落对比(含 reason/type)。
- 文档属性预警:作者 / 修改时间 / 软件版本等。
- 表格内容相似度:报价表 / 清单表结构对比。
- 差异比对(可选):两两文档差异摘要。
- 综合结论与建议:含限制说明与免责声明。
署名:一线评标专家&ChesaraM | 反馈/交流:微信公众号「一线评标专家」(使用问题、误报反馈、实务建议,欢迎留言交流)
Related skills
上传招标/投标文件,AI 一站式完成智能解读(废标红线/评分标准/控标洞察)、成品投标文件(.docx)生成、标书审查(分级风险+雷同检测)和标书查重(2-3份投标文件相似/雷同风险检查)。覆盖投标、招标、标书、投标文件、竞标、围标、控标、废标、评分标准、资格条件、技术标、商务标、暗标、响应文件、应答文件、雷同检测、相似检查、标书查重等场景——当用户提供或提及招标/投标文件、问「这个标能不能投 / 有哪些废标红线 / 帮我写投标书 / 检查标书有没有问题 / 两份投标文件像不像 / 会不会被判雷同」,或想解读招标文件、生成投标文件、做标书审查或查重时使用。需百炼®标书 Api Key(手机号注
上传招标/投标文件,AI 一站式完成智能解读(废标红线/评分标准/控标洞察)、成品投标文件(.docx)生成、标书审查(分级风险+雷同检测)和标书查重(2-3份投标文件相似/雷同风险检查)。覆盖投标、招标、标书、投标文件、竞标、围标、控标、废标、评分标准、资格条件、技术标、商务标、暗标、响应文件、应答文件、雷同检测、相似检查、标书查重等场景——当用户提供或提及招标/投标文件、问「这个标能不能投 / 有哪些废标红线 / 帮我写投标书 / 检查标书有没有问题 / 两份投标文件像不像 / 会不会被判雷同」,或想解读招标文件、生成投标文件、做标书审查或查重时使用。需百炼®标书 Api Key(手机号注
上传招标/投标文件,AI 一站式完成智能解读(废标红线/评分标准/控标洞察)、成品投标文件(.docx)生成、标书审查(分级风险+雷同检测)和标书查重(2-3份投标文件相似/雷同风险检查)。覆盖投标、招标、标书、投标文件、竞标、围标、控标、废标、评分标准、资格条件、技术标、商务标、暗标、响应文件、应答文件、雷同检测、相似检查、标书查重等场景——当用户提供或提及招标/投标文件、问「这个标能不能投 / 有哪些废标红线 / 帮我写投标书 / 检查标书有没有问题 / 两份投标文件像不像 / 会不会被判雷同」,或想解读招标文件、生成投标文件、做标书审查或查重时使用。需百炼®标书 Api Key(手机号注
上传招标/投标文件,AI 一站式完成智能解读(废标红线/评分标准/控标洞察)、成品投标文件(.docx)生成、标书审查(分级风险+雷同检测)和标书查重(2-3份投标文件相似/雷同风险检查)。覆盖投标、招标、标书、投标文件、竞标、围标、控标、废标、评分标准、资格条件、技术标、商务标、暗标、响应文件、应答文件、雷同检测、相似检查、标书查重等场景——当用户提供或提及招标/投标文件、问「这个标能不能投 / 有哪些废标红线 / 帮我写投标书 / 检查标书有没有问题 / 两份投标文件像不像 / 会不会被判雷同」,或想解读招标文件、生成投标文件、做标书审查或查重时使用。需百炼®标书 Api Key(手机号注
上传招标/投标文件,AI 一站式完成智能解读(废标红线/评分标准/控标洞察)、成品投标文件(.docx)生成、标书审查(分级风险+雷同检测)和标书查重(2-3份投标文件相似/雷同风险检查)。覆盖投标、招标、标书、投标文件、竞标、围标、控标、废标、评分标准、资格条件、技术标、商务标、暗标、响应文件、应答文件、雷同检测、相似检查、标书查重等场景——当用户提供或提及招标/投标文件、问「这个标能不能投 / 有哪些废标红线 / 帮我写投标书 / 检查标书有没有问题 / 两份投标文件像不像 / 会不会被判雷同」,或想解读招标文件、生成投标文件、做标书审查或查重时使用。需百炼®标书 Api Key(手机号注