这条 Prompt 用于让 AI 直接生成一个“PDF 红线对比与差异报告”在线工具:用户上传两份 PDF(旧版/新版),系统自动做结构化对比,输出可视化红线标注(新增/删除/修改)、差异摘要、逐页定位信息,并提供可下载的 HTML/PDF 报告与 JSON 明细。
合同版本核对、招投标文件变更检查、论文/报告修订审阅、法务与合规材料比对、对外发布前的版式与内容一致性检查。强调:本工具不生成任何图片或渲染海报,只对用户提供的现有 PDF 内容做解析、对比与报告输出。
输入:PDF A(旧版)、PDF B(新版)。可选:对比模式(文本优先/版式优先/混合)、忽略项(页眉页脚/页码/水印/时间戳等)、阈值(相似度/容错)。
输出:1) 在线预览:逐页红线叠加与差异列表;2) 下载:差异报告(HTML 可打印)与差异明细(JSON/CSV);3) 复现信息:对比参数与版本信息。
1) PDF 上传与本地解析(前端)+ 可选后端处理(大文件/并发)。2) 逐页文本抽取与坐标映射,支持中英文混排。3) 逐段/逐行/逐词差异计算,生成新增/删除/替换的差异片段。4) 将差异映射回页面坐标并做红线高亮(红=新增,删线=删除,黄=替换)。5) 差异摘要:总变更数、页分布、Top 变更片段。6) 报告导出:HTML 模板 + 打印样式;可选用 headless 浏览器把 HTML 转 PDF。7) 隐私与安全:默认不上传云端,提供“仅本地处理”模式;如启用后端,必须注明存储策略与清理策略。
前端用 PDF.js 渲染页面与抽取文本;差异算法用 Myers diff 或 patience diff(对 token 序列);坐标映射可用 PDF.js 的 textContent + transform 做近似定位,并在 UI 中允许用户调节容差。对页眉页脚的忽略可用“页面顶部/底部区域屏蔽 + 高频重复行过滤”。
AI 必须输出:完整项目源码、清晰的文件树、安装/运行命令、环境变量说明、Docker 一键启动、至少一种云端部署方式(例如 Vercel/Render/Fly.io 任一)、自动化测试用例或 QA checklist(覆盖上传、对比、导出、异常处理、性能边界)。
你是一名资深全栈工程师与产品工程化负责人。请从零生成一个可运行、可构建、可部署的“PDF 红线对比与差异报告”在线工具项目。目标是让普通用户在浏览器里上传两份 PDF(旧版/新版),自动生成可视化红线标注与差异报告,并可下载报告与明细文件。
硬性输出(必须全部给出):
1) 完整项目源码(按文件逐个输出,包含每个文件的路径与内容)。
2) 清晰的文件树(tree 形式)。
3) 本地运行命令(npm/pnpm 任选其一,包含安装、开发、构建、启动)。
4) Docker 部署:提供 Dockerfile +(如需要)docker-compose.yml,并给出一键启动命令。
5) 云端部署说明:选择一种可行方案(Vercel/Render/Fly.io/自建 Nginx 反代任选其一),写出具体步骤与注意事项。
6) 测试用例或 QA checklist:至少覆盖 20 条,包含功能、异常、性能、浏览器兼容与安全相关检查。
功能需求(必须实现):
A) 上传两份 PDF(支持拖拽),显示文件基本信息(页数、大小、哈希)。
B) 逐页预览 PDF,并提供“红线叠加视图”:对比结果以半透明高亮叠加在页面上。
C) 差异列表:按“页 -> 变更块”分组,点击条目可跳转到对应页并定位。
D) 对比模式:文本优先 / 版式优先 / 混合;并提供可调阈值(相似度/容差)。
E) 忽略策略:可选忽略页眉页脚、页码、水印;实现方式要可解释(例如按区域屏蔽 + 高频重复行过滤)。
F) 导出:生成差异报告(HTML,含打印样式)+ 差异明细(JSON,字段包含 pageIndex、type(add/del/replace)、oldText、newText、bbox 坐标、confidence)。另外提供 CSV 导出(可选)。
G) 隐私与安全:默认“本地处理模式”(尽量在浏览器内完成);如果引入后端用于大文件处理,必须提供“开关”与明确的数据生命周期说明(例如仅内存处理、不落盘,或临时目录 10 分钟清理)。
技术选型(建议但可调整):
- 前端:Next.js + React + Type + Tailwind(或等价方案)。
- PDF 渲染与文本抽取:PDF.js。
- 差异算法:Myers diff(对 token 序列),并解释 tokenization(按词/按字/按行)对效果的影响;给出默认策略与可配置项。
- 坐标映射:使用 PDF.js textContent 的 transform 计算近似 bbox;对无法精确定位的差异要有降级策略(例如在页侧边差异列表提示“定位不确定”并给出 confidence)。
工程化要求:
- 代码必须可直接运行,不允许伪代码。
- 必须有清晰的错误提示(例如 PDF 解析失败、密码保护、超大文件、浏览器内存不足)。
- 必须有性能边界说明与优化建议(例如分页处理、Web Worker、增量 diff、缓存)。
- UI 不要花哨,重点是稳定与可用;不要引导生成任何图片/插画/海报/渲染图。
交付格式要求:
- 先给出项目概览与关键设计决策(不超过 30 行)。
- 再输出文件树。
- 然后按文件路径逐个输出文件内容,所有代码块必须可复制。
- 最后给出运行命令、Docker、部署与 QA checklist。
1) 上传 PDF A/B 后能正确显示页数与大小。2) 两个文件互换时结果应一致(对称性或说明差异)。3) 只改动一个词时能正确定位并标注。4) 仅改动页眉页脚时在开启“忽略页眉页脚”后不应提示大量差异。5) 对密码保护 PDF 给出明确提示。6) 对 200+ 页 PDF 不崩溃并有进度条。7) 导出的 HTML 报告可离线打开且打印样式正常。8) JSON 明细字段完整且可复现定位。9) 不会把用户 PDF 内容上传到第三方(除非用户明确开启后端并在界面提示)。10) XSS/注入风险:导出的报告对文本做转义。