From AI Image Generation
Converts diagram images (PNG/JPG) into editable DrawIO XML using SAM 3 segmentation, PaddleOCR, and Gemini VLM. Useful for editing text on screenshots of flowcharts, architecture diagrams, tables, and formulas.
How this skill is triggered — by the user, by Claude, or both
Slash command
/image-gen:edit-bananaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Аналог:** editbanana.anxin6.cn/app (web demo)
Аналог: editbanana.anxin6.cn/app (web demo) GitHub: BIT-DataLab/Edit-Banana (Apache 2.0) Локальная установка:
~/Edit-Banana/venv:~/Edit-Banana/.venv/(Python 3.11, uv)
Превращает статичные изображения диаграмм/таблиц/формул в редактируемые DrawIO XML-файлы с сохранением:
Экспорт: DrawIO XML (основной) → SVG/PNG/PowerPoint через конверсию в draw.io.
cd ~/Edit-Banana
.venv/Scripts/python.exe main.py -i input/diagram.png
# → output/diagram.xml (открыть в app.diagrams.net)
cd ~/Edit-Banana
cp ~/Downloads/*.png input/
.venv/Scripts/python.exe main.py
# → output/*.xml для всех картинок из input/
cd ~/Edit-Banana
.venv/Scripts/python.exe server_pa.py
# → http://localhost:8000/docs (Swagger UI)
Input PNG/JPG
↓
[1] SAM 3 segmentation (CUDA on your GPU)
↓ boxes for shapes, arrows, backgrounds, images
[2] PaddleOCR text recognition (per-element)
↓ text content + positions
[3] Gemini 2.5 Flash VLM (structure guidance)
↓ logical hierarchy, element classification
[4] DrawIO XML generation
↓ merge spatial + text + semantic
Output XML
~/Edit-Banana/config/config.yaml:
| Параметр | Значение | Что делает |
|---|---|---|
sam3.checkpoint_path | models/sam3_ms/sam3.pt | SAM3 веса (~4 GB) |
sam3.bpe_path | models/bpe_simple_vocab_16e6.txt.gz | BPE токенизатор |
ocr.engine | paddleocr | Text recognition (можно переключить на tesseract) |
multimodal.model | gemini-2.5-flash | VLM для структуры |
multimodal.api_key | ${GOOGLE_API_KEY} | Ключ из .credentials.master.env |
multimodal.base_url | https://generativelanguage.googleapis.com/v1beta/openai/ | Gemini OpenAI-compatible endpoint |
model: "gemini-2.5-flash"model: "gemini-2.5-pro"qwen2.5vl в Ollama, mode: "local"Без патча pipeline падал на [2] Segmentation (SAM3) с dtype mismatch
(BFloat16 vs Float) в perflib/fused.addmm_act: fused kernel кастует mat1/mat2
в bf16, но смежные Linear слои работают в float32 → конфликт.
Единственный нужный патч: sam3_src/sam3/perflib/fused.py:addmm_act() —
заменён fused bf16 путь на обычный torch.nn.functional.linear + activation.
Скорость снижается незначительно, pipeline стабилен на GPU.
output/<basename>/:
<basename>_merged.drawio.xml — главный результат, редактируемая диаграмма для draw.iotext_only.drawio — только текстовый слой (из OCR)sam3_extraction.png — визуализация найденных shape-элементовsam3_metadata.json — метаданные всех сегментов (bbox, mask, score)Демо static/demo/original_1.jpg (flowchart):
BIT-DataLab/Edit-Banana → ~/Edit-Banana.venv/models/bpe_simple_vocab_16e6.txt.gzconfig/config.yaml с Gemini 2.5 Flash + PaddleOCRmodels/sam3_ms/sam3.pt, ~4 GB) — качается с ModelScope, см. ниже~/Edit-Banana/.venv/Scripts/python.exe -c "
from modelscope import snapshot_download
snapshot_download('facebook/sam3', cache_dir='${HOME}/Edit-Banana/models_ms_cache', allow_patterns=['sam3.pt'])
"
# → переместить файл в models/sam3_ms/sam3.pt
mv ~/Edit-Banana/models_ms_cache/facebook/sam3/sam3.pt ~/Edit-Banana/models/sam3_ms/
# Вариант A (choco — на момент установки сервер был 503):
choco install tesseract --yes
# Вариант B (winget):
winget install UB-Mannheim.TesseractOCR
# Вариант C (вручную): скачать с https://github.com/UB-Mannheim/tesseract/wiki
После установки изменить ocr.engine: "tesseract" в config.yaml.
Pix2Text (распознавание формул → LaTeX):
~/AppData/Local/Programs/Python/Python313/Scripts/uv.exe pip install --python ~/Edit-Banana/.venv/Scripts/python.exe pix2text onnxruntime-gpu
RMBG (удаление фона у иконок):
~/AppData/Local/Programs/Python/Python313/Scripts/uv.exe pip install --python ~/Edit-Banana/.venv/Scripts/python.exe onnxruntime modelscope
cd ~/Edit-Banana && .venv/Scripts/python.exe scripts/setup_rmbg.py
| Ошибка | Причина | Решение |
|---|---|---|
no kernel image is available | GPU arch mismatch | Upgrade PyTorch или device: "cpu" в config |
Model file not found at sam3.pt | Веса не скачались | См. "Если SAM3 веса не докачались" |
PaddleOCR inference failed | Баг в paddlepaddle 3.3.0+ | Использовать 3.2.2 (уже установлено) |
Gemini API error 403 | Неправильный ключ | Проверить GOOGLE_API_KEY в .credentials.master.env |
GatedRepoError на HF | SAM3 закрыт на HuggingFace | Использовать ModelScope (уже в настройках) |
Скрипт ~/.claude/skills/edit-banana/scripts/edit-banana.sh — обёртка,
принимает путь к картинке и вызывает pipeline из корректной директории.
bash ~/.claude/skills/edit-banana/scripts/edit-banana.sh path/to/diagram.png
# → результат в ~/Edit-Banana/output/
Вызывать при запросах:
npx claudepluginhub jhamidun/claude-code-config-pack --plugin image-genBuilds a throwaway prototype to answer a design question about UI appearance or state/logic behavior. Guides you through two branches: interactive terminal app for logic validation, or multiple UI variations for visual exploration.