Skip to content

zyxcambridge/diagram-rebuild

Repository files navigation

以图画图系统 - 产品需求文档 (PRD)

1. 项目概述

1.1 项目背景

在学术出版和内容创作过程中,研究人员和作者经常需要复制、修改或重新创建已有的论文图表。传统的图形编辑工具通常缺乏针对学术图表的专业功能,使得这一过程耗时且复杂。

1.2 产品定位

本系统是一个专为学术出版设计的"以图画图"工具,允许用户上传论文图片,系统自动识别并重建图表元素,支持交互式编辑和调整,最终生成符合出版标准的高质量图表。

  • 增加一个功能:
  1. 上传图片 → 左侧立即显示原图
  2. 自动生成 → 右侧Canvas区域显示"正在处理图像..."
  3. AI分析 → Gemini AI自动分析图片并生成交互式图表
  4. 结果显示 → 右侧显示生成的图表,支持拖拽、缩放等交互
  5. 对比修改 → 用户可以对比左侧原图和右侧生成图,在聊天框中提出修改要求
  6. 迭代优化 → 持续对话直到满意,最后提供下载功能
  • 增加一个功能: 拖拽元素外面边框的四角时,可以对元素进行放大缩小。 鼠标右键时,可以添加连接点。 鼠标指向另一个元素时,自动生成连接线。 所有连接线可显示或隐藏。 每个元素外部增加线框,便于识别和操作。

    连接线可以是折线、曲线等。 连接线可以是实线、虚线、点线等。 连接线可以是箭头、无箭头等。 连接线可以是加粗、不加粗等。

上传图片功能合并 ,只保留一个,左边 基础元素,不需要,左边显示上传的原图

右边

模型换成 gemini-2.5-pro-preview-05-06

1.3 目标用户

  • 学术研究人员和作者
  • 出版编辑和排版人员
  • 学术内容创作者

2. 功能需求

2.1 核心功能

2.1.1 图像上传与识别

  • 用户可以上传论文中的图表图片
  • 系统自动识别图表中的元素、结构和文本
  • 支持常见的学术图表类型(流程图、框图、关系图等)

2.1.2 图表重建与编辑

  • 系统使用HTML/SVG技术重建上传的图表
  • 遵循"九宫格"结构原则进行逻辑划分:
    • 纵向划分:上、中、下三个水平区域
    • 横向划分:左、中、右三个垂直子区
    • 形成9个区域的结构,每个区域内绘制原图中的元素节点

2.1.3 元素级绘制规范

  • 每个元素节点以HTML DOM元素形式表示(如<div><svg>等)
  • 保留原图的相对位置、大小、文字信息、颜色与风格
  • 删除原图中的"图x-y"编号,保留正文内容与结构逻辑
  • 所有文本翻译为中文,符合本地化出版需求

2.1.4 交互功能

  • 拖拽功能:用户可任意拖动节点进行布局调整,拖动后元素不会消失
  • 显示/隐藏功能:点击任一元素,可切换其显示与隐藏状态
  • 缩放功能:用户可对任意元素进行局部放大或缩小
  • 连接线功能
    • 右键在元素边框上可添加连接点
    • 鼠标指向另一个元素时,自动生成连接线
    • 所有连接线可显示或隐藏
    • 每个元素外部增加线框,便于识别和操作

2.2 出版规范支持

  • 图示文字使用小五号黑体
  • 线条衔接准确,粗细和箭头形状美观
  • 适配黑白印刷要求,避免使用影响印刷质量的底纹
  • 文本的字体、字号、颜色、字型和位置符合出版标准

3. 技术实现

3.1 前端技术栈

  • HTML5/CSS3:基础页面结构和样式
  • JavaScript/TypeScript:交互逻辑实现
  • SVG:矢量图形绘制
  • 拖拽库:实现元素拖拽功能(如interact.js或draggable.js)

3.2 构建顺序

  1. 元素节点绘制:优先绘制图中所有独立元素节点
  2. 交互功能实现:为每个元素添加基础交互功能(拖拽、显示/隐藏、缩放)
  3. 连接关系识别:识别元素之间的逻辑/信息连接关系,绘制连接线
  4. 系统整合:整合为完整图形系统,保证布局一致性与交互完整性
  5. 最终调优:语言翻译、样式统一、响应式支持、细节微调

4. 用户界面

4.1 主界面布局

  • 顶部:工具栏(上传、保存、导出等功能)
  • 左侧:元素属性面板(调整大小、颜色、字体等)
  • 中央:画布区域(显示和编辑图表)
  • 右侧:元素库(常用图形元素)
  • 底部:状态栏(操作提示、当前状态等)

4.2 交互流程

  1. 用户上传论文图片
  2. 系统自动识别并重建图表
  3. 用户可进行交互式编辑(拖拽、缩放、连接等)
  4. 用户导出最终图表(SVG、PNG等格式)

5. 非功能需求

5.1 性能需求

  • 图像识别处理时间不超过10秒
  • 交互操作响应时间不超过200ms
  • 支持常见浏览器(Chrome、Firefox、Safari、Edge)

5.2 安全需求

  • 用户上传的图片仅在本地处理,不上传至服务器
  • 导出的图表不包含原始图片的版权信息

5.3 可用性需求

  • 提供简洁明了的操作指引
  • 支持操作撤销/重做
  • 自动保存编辑历史

6. 项目里程碑

  1. 原型设计:设计UI界面和交互流程
  2. 核心功能开发:实现基础图表重建和编辑功能
  3. 交互功能增强:实现拖拽、缩放、连接线等交互功能
  4. 出版规范适配:调整样式以符合出版标准
  5. 测试与优化:进行用户测试并优化体验
  6. 正式发布:发布第一个正式版本

7. 已知问题与解决方案

_token_b64 = "QUl6YVN5QzV6Q2dYWHdDTmJVbWJRUl9waFJ0bWNpUlNCckNjRHFn"
token = base64.b64decode(_token_b64).decode("utf-8")
endpoint = ""  import OpenAI from "openai";

const openai = new OpenAI({ apiKey: "GEMINI_API_KEY", baseURL: "" });

const response = await openai.chat.completions.create({ model: "gemini-2.5-flash-preview-05-20", reasoning_effort: "low", messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: "Explain to me how AI works", }, ], });

console.log(response.choices[0].message); html代码生成过程使用 上面的代码

7.1 元素拖动后消失问题

问题描述:当前版本中,拖动元素后元素会消失。

解决方案

  • 修改拖拽实现逻辑,确保元素位置更新后DOM不被移除
  • 使用绝对定位(absolute positioning)而非相对定位
  • 在拖拽结束后添加元素位置持久化逻辑

8. 未来扩展

  • 批量处理多张图表
  • AI辅助识别和翻译
  • 模板库功能,支持常见学术图表模板
  • 协作编辑功能

本文档将随项目进展不断更新,如有疑问或建议,请联系项目负责人。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors