Skip to content

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

LayerSlide

LayerSlide

React 19.2 TypeScript 7.0 Ant Design 6.5 FastAPI 0.141 PostgreSQL 18 MIT License

一个把图片和 PDF 重建为可编辑 PPT,并生成独立视觉资产的 AI 视觉生产工作台。

快速开始 · 部署指南 · 本地开发 · 开源协议

LayerSlide 是什么

LayerSlide 面向设计、运营、产品和前端团队,将已经扁平化的图片、PDF 页面或界面截图,重新组织为 可编辑、可复用、可继续交付的结构化内容。

它把文件解析、文字识别、版面分析、视觉资产处理、在线编辑和结果导出放进同一条工作流。你可以将 JPG、PNG 或 PDF 重建为对象级可编辑的 PowerPoint,也可以从完整界面中提取独立的 UI 资产。

LayerSlide 不绑定单一模型服务。模型、数据、对象存储和部署环境都由使用者自行管理。

为什么用 LayerSlide

  • 将不可编辑的视觉稿转换为文字、图片、形状等可继续修改的对象
  • 把解析、重建、校对、编辑和导出串成一条连续工作流
  • 支持 OpenAI 兼容接口、豆包和千问等模型服务
  • 支持自托管,任务数据、模型密钥和生成资产保留在自己的环境中
  • 提供预构建多架构镜像和 Docker Compose 安装包,自动完成数据库迁移

适合谁

  • 需要将截图、扫描稿或 PDF 快速还原为可编辑 PPT 的设计和运营人员
  • 需要从界面截图提取独立素材的产品和前端人员
  • 需要批量处理视觉还原任务,并持续查看进度、日志和失败原因的团队
  • 希望自行管理模型服务、数据和存储的自托管用户

核心能力

  • 可编辑 PPT 重建:支持 JPG、PNG 和 PDF,识别版式、文字与视觉元素并导出 PPTX
  • 在线幻灯片编辑:支持文字、图片、形状、图层、组合、缩放、撤销和预览
  • UI 资产生成:从完整界面中识别并生成独立图片、图标和透明素材
  • 生图工作台:使用配置的图片模型生成内容,并保留任务与结果记录
  • 模型与 OCR 配置:管理视觉模型、生图模型和个人 OCR Token
  • 后台任务处理:通过 Redis 与 RQ 执行异步任务,提供实时进度和执行日志
  • 账号与安全:支持注册、登录、设备会话管理以及按用户隔离数据和模型配置
  • 自托管部署:通过 PostgreSQL、Redis、S3 兼容对象存储和 Docker Compose 运行完整服务

产品预览

任务处理与资产拆分

任务处理、页面重建与独立资产拆分

可编辑幻灯片对照视图

原始页面与可编辑重建结果对照

快速开始

服务器已安装 Docker Engine、Docker Compose v2、OpenSSL 和 curl 时,可以使用一条命令完成部署:

mkdir -p layerslide && curl -fsSL https://github.com/helloJincheng/layerslide/releases/latest/download/layerslide-deploy.tar.gz | tar -xz -C layerslide && cd layerslide && ./install.sh

命令会下载最新 Release 部署包并解压到当前目录的 layerslide/,随后生成随机密钥、拉取镜像并 启动全部服务。

安装脚本会自动生成 PostgreSQL、MinIO 和 LayerSlide 密钥,拉取公开 GHCR 镜像,执行 Alembic 数据库迁移,并启动 Web、API、Worker、Scheduler、PostgreSQL、Redis 和 MinIO。

默认访问地址:

LayerSlide: http://localhost:8080
MinIO Console: http://localhost:9001

首次打开 LayerSlide 后创建账户,再进入 模型设置 添加视觉模型并设为默认模型。启用 AI 增强生图时, 还需要配置支持图像编辑的默认生图模型。

完整的安装、升级、日志和卸载说明见 Docker Compose 部署指南。

发布镜像

GitHub Actions 会为 linux/amd64 和 linux/arm64 发布两个公开镜像:

ghcr.io/hellojincheng/layerslide-web:<version>
ghcr.io/hellojincheng/layerslide-api:<version>

Web 和 API 镜像均包含项目运行所需字体;API 镜像还包含 editppt、LibreOffice、Poppler 和服务端 渲染依赖,不需要在宿主机安装 Node.js、Python 或 Codex。

本地开发

环境要求:

  • Docker Engine 24+
  • Docker Compose v2
  • Node.js 24.8(仅在宿主机运行前端时需要)
  • pnpm 9.6

复制本地环境变量模板,并生成 32 字节 URL-safe Base64 主密钥:

cp .env.example .env
openssl rand -base64 32 | tr '+/' '-_'

将输出写入 .env 的 LAYERSLIDE_MASTER_KEY,然后启动完整开发环境:

docker compose -f infra/docker-compose.yml up --build

访问地址:

Web: http://localhost:5173
API: http://localhost:8000
MinIO Console: http://localhost:9001

前端也可以单独运行:

pnpm install
pnpm dev

Vite 会将同源 /api 请求代理到 http://localhost:8000。通过 API_PROXY_TARGET 可以指定其他 后端地址。

后端开发需要热更新时,先运行本机前端,再使用开发覆盖配置启动依赖和后端服务:

pnpm --filter @layerslide/web dev --host 0.0.0.0

docker compose \
  -f infra/docker-compose.yml \
  -f infra/docker-compose.dev.yml \
  up --build -d postgres redis minio migrate api worker

修改 Python 依赖或 Dockerfile 后需要重新构建镜像;修改数据库迁移后需要重新运行 migrate。

模型与 OCR 配置

LayerSlide 当前支持 OpenAI 兼容接口、豆包 Ark 和阿里云百炼千问。不同服务支持的视觉分析、同步生图、 异步生图和图像编辑能力不同,保存配置后应先执行模型发现和连通性测试,再设置默认视觉模型或默认生图 模型。

使用 Sub2API 代理非流式图片生成时,长时间请求可能被反向代理提前断开。可在 Sub2API 服务端启用:

GATEWAY_IMAGE_NONSTREAM_KEEPALIVE_INTERVAL=10

该变量属于 Sub2API,不应添加到 LayerSlide 的 .env。修改后需要重新创建或重启 Sub2API 服务。

系统 OCR Token 可通过 PADDLE_OCR_TOKEN 配置;用户也可以在设置页保存自己的 OCR Token。没有远程 OCR 配置时,系统使用内置的本地文字检测能力。

数据与安全

  • Provider API Key 和用户 OCR Token 使用 AES-GCM 加密后存入 PostgreSQL
  • 用户密码使用 Argon2id 哈希保存,登录状态通过 HttpOnly Cookie 管理
  • 生产环境必须使用 HTTPS,并将 COOKIE_SECURE 设置为 true
  • .env 包含数据库密码、对象存储密钥和 LAYERSLIDE_MASTER_KEY,不得提交到 Git
  • 升级前应备份 PostgreSQL、对象存储、任务数据卷和 .env

字体说明

镜像会打包 infra/fonts/msyh.ttf,用于保持浏览器预览、服务端渲染和 PPT 导出的中文字体一致。 Microsoft YaHei 是第三方专有字体,不属于本项目 MIT 授权范围。公开分发仓库或镜像前,维护者必须 自行确认已取得相应的再分发许可。

鸣谢

感谢 Image to Editable PPT Skill 对图片、 PDF 转可编辑 PowerPoint 工作流的开源探索与实践分享,为 LayerSlide 的设计和实现提供了重要参考。

开源协议

LayerSlide 源代码采用 MIT License 开源。第三方依赖与字体仍分别受其各自许可证约束。

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages