引言
"把不可编辑的,变成可编辑的。——Make the Uneditable, Editable."
这是「一天一个开源项目」系列的第 32 篇文章。今天介绍的项目是 Edit-Banana(GitHub)。
论文、报告、教材里的流程图、架构图、技术示意图往往是 PNG/JPG 或 PDF 里的「死图」——不能改文字、不能拖形状、不能换模板。Edit-Banana 是北京理工大学数据实验室(BIT-DataLab)开源的通用内容重编辑框架:用自研微调的 SAM 3(Segment Anything Model 3) 做图表元素分割,用多模态大模型(Qwen-VL / GPT-4V 等) 做多轮扫描与 OCR,把静态图/PDF 高保真转成 DrawIO(XML)、SVG、PPTX,每个元素都可单独选中、拖拽、改样式,真正「可编辑」。
为什么值得看?
- 🍌 一图变 DrawIO/PPTX:流程图、架构图、公式图 → 可编辑 XML/SVG/PPTX
- 🤖 SAM3 + 多模态 VLM:分割 + 多轮 VLM 扫描,保留版式、层级、箭头样式
- 📐 高保真:布局逻辑、配色、描边/填充、虚线/粗细、文字与公式(含 LaTeX)尽量还原
- 🌐 即用 Demo:在线 editbanana.anxin6.cn 上传即用;本地支持 Web(React + FastAPI)与 CLI
- 📄 PDF → PPTX:支持 PDF 转可编辑幻灯片
- 🔧 可配置:SAM3 阈值、路径、主色等通过
config.yaml调优
你将学到什么
- Edit-Banana 的定位与典型使用场景(图→DrawIO、PDF→PPTX、人机协同修改)
- 整体流水线:输入 → SAM3 分割 → 文本/公式 OCR(Azure + VLM 回退)→ 合并生成 XML/PPTX
- 关键技术点:SAM3 微调、多轮 VLM 扫描、Azure OCR、Crop 高分辨率文字/公式识别、LaTeX 输出
- 项目结构、安装与配置、Web 与 CLI 两种使用方式
- 与同类「图转可编辑」方案的对比与选型参考
- 开发路线图(箭头智能连接、模板适配、批量导出、本地 VLM 等)
前置知识
- 对图像分割、OCR 有基本概念即可
- 了解 DrawIO(.drawio / XML)或 PPTX 格式会有帮助
- 本地部署需 Python 3.10+、可选 CUDA GPU;前端为 React + Node
项目背景
项目简介
Edit-Banana 的 Slogan 是 「Universal Content Re-Editor: Make the Uneditable, Editable」。它要解决的是:静态格式(图片、PDF)中的图表、示意图、公式无法直接编辑 的问题。
通过「SAM 3 分割 + 多模态大模型多轮扫描 + 高质量 OCR(Azure + VLM 回退 + 公式 LaTeX)」的流水线,把:
- 输入:PNG/JPG 图片,或 PDF
- 输出:可编辑的 DrawIO(XML)、SVG、PPTX,元素可单独选中、拖拽、改样式
从而保留原图的布局逻辑、颜色、层级、箭头样式,并支持后续在 DrawIO 或 PowerPoint 中继续编辑、换模板。
面向的用户:
- 需要把论文/报告里的图改成可编辑版本的研究者、写作者
- 想把现有教材/讲义中的图统一成 DrawIO/PPT 的教师、课程制作者
- 希望从设计稿/截图快速得到可编辑图的开发者、产品经理
- 对 SAM、多模态 VLM、OCR 流水线感兴趣的学习者
作者/团队介绍
- 团队:BIT-DataLab(北京理工大学数据实验室)
- 代表贡献者:Chai Chengliang、Zhang Chi、Deng Qiyan、Rao Sijing 等(见 GitHub Contributors)
- 联系:README 中提供 WeChat 群二维码,可扫码加入交流;Issues 可提 Bug 与建议
项目数据
- ⭐ GitHub Stars: 约 1.9k(GitHub)
- 🍴 Forks: 约 99
- 📦 仓库状态: 22 commits,持续迭代;README 注明在线服务优先更新,GitHub 代码可能略滞后于线上能力
- 📄 License: Apache-2.0(可商用、二次开发,保留版权声明)
- 🌐 在线 Demo: editbanana.anxin6.cn
- 💬 社区: GitHub Issues、WeChat 群(见 README)
技术栈:Python(100% 仓库语言)、CUDA、React(前端)、FastAPI(后端)。
主要功能
核心作用
Edit-Banana 的核心作用是:把「不可编辑」的静态图表/PDF 转成「可编辑」的 DrawIO(XML)、SVG、PPTX。
- 图 → DrawIO / SVG / PPTX:流程图、架构图、技术示意图、公式图等,输出可拖拽、可改样式的元素。
- PDF → PPTX:PDF 页面转成可编辑的 PPT 幻灯片。
- 人机协同:支持在流程中人工介入修改(Human in the Loop)。
转换时尽量做到:
- 保留布局逻辑、颜色、元素层级;
- 1:1 还原形状描边/填充、箭头样式(虚线、粗细等);
- 文字与公式识别准确,支持后续编辑和 LaTeX 公式。
使用场景
-
论文/报告插图可编辑化
- 将论文里的流程图、架构图从 PNG 转为 DrawIO,便于改版、复用。
-
教材/讲义图表统一格式
- 把扫描版或截图中的图批量转为 DrawIO 或 PPTX,统一风格与模板。
-
设计稿/截图快速成图
- 设计图或界面截图 → 可编辑图,便于在 DrawIO/PPT 中二次设计。
-
PDF 讲义转 PPT
- 将 PDF 讲义转成可编辑 PPTX,方便修改版式和内容。
-
技术文档与培训材料
- 技术示意图、系统架构图从静态图变为可维护的 DrawIO/PPTX。
快速开始
在线使用(推荐)
- 打开 editbanana.anxin6.cn/
- 上传图片或 PDF,即可得到可编辑的 DrawIO(XML)或 PPTX
- 新用户注册可获得一定免费额度
本地安装与运行
环境:Python 3.10+、Node.js & npm(前端)、建议带 CUDA 的 GPU。
# 1. 克隆
git clone https://github.com/BIT-DataLab/Edit-Banana.git
cd Edit-Banana
# 2. 创建目录
mkdir -p input output sam3_output
# 3. 下载模型(如 SAM3)
# 从 https://modelscope.cn/models/facebook/sam3 下载,放到 models/sam3.pt,并在 config 中配置路径
# 4. 后端依赖
pip install -r requirements.txt
# 5. 配置文件与环境变量
cp config/config.yaml.example config/config.yaml
# 创建 .env,配置 AZURE_ENDPOINT、AZURE_API_KEY 等(见 README)
# 6. 前端
cd frontend && npm install && cd ..
Web 方式:
# 后端
python server_pa.py # 默认 http://localhost:8000
# 前端(另开终端)
cd frontend && npm run dev # 默认 http://localhost:5173
浏览器访问前端地址,上传图片即可在页面内看到转换结果(如内嵌 DrawIO 编辑器)。
CLI 方式:
# 单张图
python main.py -i input/test_diagram.png
# 输出 XML 等在 output/ 目录
核心特性
-
SAM3 分割
- 使用项目微调的 SAM 3 对图表元素做分割,为后续还原几何与层级打基础。
-
多轮 VLM 扫描
- 由多模态大模型(如 Qwen-VL、GPT-4V) 引导的固定多轮扫描,提取结构、关系与文本。
-
高质量 OCR 与公式
- Azure Document Intelligence 做精确文本定位;
- 若 Azure 不可用,自动回退到 VLM 端到端 OCR;
- 使用 Mistral Vision / MLLM 做文本纠错与公式转 LaTeX;
- Crop-Guided:对文字/公式区域做高分辨率裁剪再送 LLM,提高识别质量。
-
用户与并发
- 用户系统:注册送免费 credits,按量扣费防滥用;
- 多用户并发:Global Lock 保证 GPU 线程安全,LRU Cache 缓存图像嵌入,兼顾性能与稳定。
-
Web 与 CLI
- React 前端 + FastAPI 后端,上传即用;同时提供 CLI(
main.py)便于脚本化。
- React 前端 + FastAPI 后端,上传即用;同时提供 CLI(
-
配置化
config/config.yaml可调:SAM3 分数阈值、NMS、迭代次数、路径、主色提取等。
项目优势
| 对比项 | Edit-Banana | 传统截图重绘 | 通用 OCR 工具 |
|---|---|---|---|
| 输出格式 | DrawIO(XML)/SVG/PPTX 可编辑 | 多为位图 | 纯文本/表格 |
| 图表结构 | 保留形状、连线、层级 | 需人工重画 | 不保留版式 |
| 公式 | LaTeX 输出,可编辑 | 难以复用 | 部分支持 |
| 技术栈 | SAM3 + 多模态 VLM + OCR | 手工/简单工具 | 以文本为主 |
| 开源与商用 | Apache-2.0,可二次开发 | 视具体工具 | 视具体产品 |
为什么选 Edit-Banana?
- 专门针对「图→可编辑」场景,输出直接可用于 DrawIO/PPT;
- 分割 + VLM + OCR 组合,在版式、箭头、公式上做了专门设计;
- 有在线 Demo 和完整本地部署方案,便于试用与集成;
- 北京理工大学实验室开源,Apache-2.0 友好。
项目详细剖析
架构与流水线
整体是一条顺序 + 并行的流水线:
- 输入:Image(PNG/JPG)或 PDF。
- 分割(SAM3):用微调 SAM3 的 mask 解码器得到图表元素区域。
- 文本提取(并行):
- Azure OCR 得到文本框;
- 对文字/公式区域做高分辨率 crop,送 Mistral/LLM 做识别与 LaTeX 转换。
- 生成:合并 SAM3 的空间信息与 OCR 文本,生成 XML(DrawIO)/ PPTX。
Input (Image/PDF)
→ SAM3 Segmentation
→ Text Extraction (Azure OCR + VLM crop-guided + LaTeX)
→ Merge spatial + text
→ DrawIO (XML) / SVG / PPTX
项目结构(概要)
根据 README,结构大致为:
Edit-Banana/
├── config/ # 配置(如 config.yaml)
├── flowchart_text/ # OCR 与文本提取(Azure、Mistral、对齐等)
├── modules/ # 通用模块
├── prompts/ # 多模态/LLM 提示词
├── sam3/ # SAM3 模型封装
├── sam3_service/ # SAM3 服务化
├── scripts/ # 工具脚本(如 merge_xml.py 合并与编排)
├── static/ # 静态资源与 Demo 图
├── main.py # CLI 入口(模块化流水线)
├── server_pa.py # FastAPI 后端(Web 服务)
└── requirements.txt
前端在 frontend/(React),通过后端 API 上传文件并获取生成的 XML/PPTX。
关键技术点
- SAM3 微调:针对图表场景微调,提升形状、箭头、框图等分割质量。
- 多轮 VLM:用多模态大模型做多轮「扫描」,提取结构、关系、文本,而不是单次识别。
- Crop-Guided OCR:只对文字/公式区域做高分辨率裁剪再送 LLM,在保证精度的同时控制 token 与成本。
- 并发与缓存:Global Lock + LRU Cache 使多用户共享 GPU 时既安全又减少重复计算。
配置说明(config.yaml)
README 提到可在 config/config.yaml 中调整:
- sam3:score 阈值、NMS 阈值、最大迭代轮数等;
- paths:输入/输出目录;
- dominant_color:主色提取相关灵敏度。
环境变量(如 .env)需配置 AZURE_ENDPOINT、AZURE_API_KEY 等,具体以仓库说明为准。
开发路线图(README)
| 模块/功能 | 状态 | 说明 |
|---|---|---|
| 核心转换流水线 | ✅ 已完成 | 分割 + 重建 + OCR 全流程 |
| 智能箭头连接 | ⚠️ 开发中 | 自动将箭头关联到目标形状 |
| DrawIO 模板适配 | 📍 计划中 | 支持自定义模板导入 |
| 批量导出优化 | 📍 计划中 | 批量导出为 .drawio 等 |
| 本地 VLM 适配 | 📍 计划中 | 支持本地 VLM,不依赖云端 API |
项目地址与资源
官方资源
- 🌟 GitHub: github.com/BIT-DataLab…
- 🌐 在线 Demo: editbanana.anxin6.cn/
- 📚 文档: 以 GitHub README 为主,含安装、配置、使用说明
- 💬 社区: GitHub Issues、README 内 WeChat 群二维码
- 🐛 Issue Tracker: GitHub Issues
相关资源
- SAM / SAM3:Segment Anything Model 系列(如 ModelScope sam3)
- DrawIO:draw.io 编辑器与 XML 格式说明
- Azure Document Intelligence:OCR 服务文档
适用人群
- 需要把论文图、报告图、教材图转成可编辑 DrawIO/PPTX 的研究者、教师、写作者;
- 想学习 SAM + 多模态 VLM + OCR 组合落地的开发者;
- 需要图转可编辑能力的产品与项目(可基于 Apache-2.0 二次开发);
- 对图表理解、公式识别、文档结构化感兴趣的同学。
欢迎来我中的个人主页找到更多有用的知识和有趣的产品