在学术出版和内容创作过程中,研究人员和作者经常需要复制、修改或重新创建已有的论文图表。传统的图形编辑工具通常缺乏针对学术图表的专业功能,使得这一过程耗时且复杂。
本系统是一个专为学术出版设计的"以图画图"工具,允许用户上传论文图片,系统自动识别并重建图表元素,支持交互式编辑和调整,最终生成符合出版标准的高质量图表。
- 增加一个功能:
- 上传图片 → 左侧立即显示原图
- 自动生成 → 右侧Canvas区域显示"正在处理图像..."
- AI分析 → Gemini AI自动分析图片并生成交互式图表
- 结果显示 → 右侧显示生成的图表,支持拖拽、缩放等交互
- 对比修改 → 用户可以对比左侧原图和右侧生成图,在聊天框中提出修改要求
- 迭代优化 → 持续对话直到满意,最后提供下载功能
-
增加一个功能: 拖拽元素外面边框的四角时,可以对元素进行放大缩小。 鼠标右键时,可以添加连接点。 鼠标指向另一个元素时,自动生成连接线。 所有连接线可显示或隐藏。 每个元素外部增加线框,便于识别和操作。
连接线可以是折线、曲线等。 连接线可以是实线、虚线、点线等。 连接线可以是箭头、无箭头等。 连接线可以是加粗、不加粗等。
上传图片功能合并 ,只保留一个,左边 基础元素,不需要,左边显示上传的原图
右边
模型换成 gemini-2.5-pro-preview-05-06
- 学术研究人员和作者
- 出版编辑和排版人员
- 学术内容创作者
- 用户可以上传论文中的图表图片
- 系统自动识别图表中的元素、结构和文本
- 支持常见的学术图表类型(流程图、框图、关系图等)
- 系统使用HTML/SVG技术重建上传的图表
- 遵循"九宫格"结构原则进行逻辑划分:
- 纵向划分:上、中、下三个水平区域
- 横向划分:左、中、右三个垂直子区
- 形成9个区域的结构,每个区域内绘制原图中的元素节点
- 每个元素节点以HTML DOM元素形式表示(如
<div>、<svg>等) - 保留原图的相对位置、大小、文字信息、颜色与风格
- 删除原图中的"图x-y"编号,保留正文内容与结构逻辑
- 所有文本翻译为中文,符合本地化出版需求
- 拖拽功能:用户可任意拖动节点进行布局调整,拖动后元素不会消失
- 显示/隐藏功能:点击任一元素,可切换其显示与隐藏状态
- 缩放功能:用户可对任意元素进行局部放大或缩小
- 连接线功能:
- 右键在元素边框上可添加连接点
- 鼠标指向另一个元素时,自动生成连接线
- 所有连接线可显示或隐藏
- 每个元素外部增加线框,便于识别和操作
- 图示文字使用小五号黑体
- 线条衔接准确,粗细和箭头形状美观
- 适配黑白印刷要求,避免使用影响印刷质量的底纹
- 文本的字体、字号、颜色、字型和位置符合出版标准
- HTML5/CSS3:基础页面结构和样式
- JavaScript/TypeScript:交互逻辑实现
- SVG:矢量图形绘制
- 拖拽库:实现元素拖拽功能(如interact.js或draggable.js)
- 元素节点绘制:优先绘制图中所有独立元素节点
- 交互功能实现:为每个元素添加基础交互功能(拖拽、显示/隐藏、缩放)
- 连接关系识别:识别元素之间的逻辑/信息连接关系,绘制连接线
- 系统整合:整合为完整图形系统,保证布局一致性与交互完整性
- 最终调优:语言翻译、样式统一、响应式支持、细节微调
- 顶部:工具栏(上传、保存、导出等功能)
- 左侧:元素属性面板(调整大小、颜色、字体等)
- 中央:画布区域(显示和编辑图表)
- 右侧:元素库(常用图形元素)
- 底部:状态栏(操作提示、当前状态等)
- 用户上传论文图片
- 系统自动识别并重建图表
- 用户可进行交互式编辑(拖拽、缩放、连接等)
- 用户导出最终图表(SVG、PNG等格式)
- 图像识别处理时间不超过10秒
- 交互操作响应时间不超过200ms
- 支持常见浏览器(Chrome、Firefox、Safari、Edge)
- 用户上传的图片仅在本地处理,不上传至服务器
- 导出的图表不包含原始图片的版权信息
- 提供简洁明了的操作指引
- 支持操作撤销/重做
- 自动保存编辑历史
- 原型设计:设计UI界面和交互流程
- 核心功能开发:实现基础图表重建和编辑功能
- 交互功能增强:实现拖拽、缩放、连接线等交互功能
- 出版规范适配:调整样式以符合出版标准
- 测试与优化:进行用户测试并优化体验
- 正式发布:发布第一个正式版本
_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代码生成过程使用 上面的代码
问题描述:当前版本中,拖动元素后元素会消失。
解决方案:
- 修改拖拽实现逻辑,确保元素位置更新后DOM不被移除
- 使用绝对定位(absolute positioning)而非相对定位
- 在拖拽结束后添加元素位置持久化逻辑
- 批量处理多张图表
- AI辅助识别和翻译
- 模板库功能,支持常见学术图表模板
- 协作编辑功能
本文档将随项目进展不断更新,如有疑问或建议,请联系项目负责人。