모델 및 API 안정성
- 메인 모델
gemini-3.1-pro-preview→gemini-3-flash-preview로 교체 (RPD 250→10K, RPM 25→1K, 할당량 40배 확대) - lite 모델
gemini-2.0-flash→gemini-2.5-flash로 교체 (폐기 모델 대응) - 이미지 모델 감지: 모델 이름 기반 → 응답 데이터(inline_data) 기반으로 변경
- 할당량 0(
limit: 0) 감지 시 즉시 실패 처리 + 웹 UI에 리셋 시간(KST 16:00~17:00) 안내 표시 asyncio.run()→run_async()헬퍼로 교체 (간편모드 → 후보 생성 순차 실행 시 "Event loop is closed" 에러 해결)smart_input.py폴백 로직: lite 모델 실패 시 메인 모델로 자동 전환, 에러 리포팅 개선
UX 및 UI 개선
- 입력 모드 순서 변경: 간편 모드를 기본(첫 번째)으로 배치
- 예제 드롭다운 통합: 방법론/캡션 개별 셀렉터 → 하나의 통합 드롭다운 (한 번에 양쪽 자동 채움)
- 예제 한글화: 4개 템플릿명에 한국어 표시명 추가
- 간편모드 프롬프트 범용화: "academic writing" → "technical writing" (학술 논문 외 일반 기술 다이어그램도 지원)
- 구조화된 입력 생성 버튼
type="primary"+ 전체 너비 적용 - 탭 UI 개선: 크기 확대, 활성 탭 오렌지 하이라이트, Step 1/2 워크플로우 구조
- 기본값 최적화: 후보 4개, 화면비 16:9, Critic 1라운드, 언어 한국어 —
(추천)태그 표시 - 개선 탭 기본값 최적화: 해상도 2K, 화면비 16:9 —
(추천)태그 표시 - 언어 전환 시 selectbox 값 불일치 오류 수정 (
format_func+ session state 충돌 해결) - Streamlit 워닝 수정:
use_container_width→width="stretch"(deprecated API 대응) - 처리 중 UI 잠금: 구조화 생성 / 후보 생성 / 이미지 개선 진행 시 버튼·체크박스 일시 비활성화
- 편집 프리셋 2컬럼 레이아웃: 15개 체크박스를 좌우 분배하여 수직 공간 절감
기능 확장
- 3가지 입력 모드: 간편 모드 (AI 자동 구조화), 직접 입력, 템플릿 모드 (빈칸 채우기)
- 예제 템플릿 4종: PaperVizAgent, Transformer, RAG Pipeline, Training Pipeline
- 한글 다이어그램 생성: 4개 에이전트에 조건부 한국어 지시문 삽입
- Refine Image 탭: API Key 인증, 빠른 편집 프리셋 16종(5개 카테고리), 체크박스 멀티셀렉트로 중복 선택 가능, 프리셋+사용자 지침 병합 구조
- 편집 프리셋 카테고리: 해상도, 텍스트(오류수정/크기/번역), 스타일(학술/다크/플랫/컬러풀), 레이아웃(간결화/번호/화살표/대비), 배경(흰색/테두리)
생성 품질 및 성능
- Retriever 캐시: 동일 입력에 대해 1회만 실행 후 전체 후보에 공유 (API 호출 90% 절감)
- Retriever 후보 풀 200→50 축소 (입력 토큰 75% 절감)
- 에이전트별
max_output_tokens최적화 (50K 고정 → 실제 출력 맞춤) - Planner 프롬프트 강화: TEXT LABELS, ARROWS & CONNECTIONS, LAYOUT, NO HALLUCINATION, NO REDUNDANCY 규칙
- Critic 프롬프트 강화: 할루시네이션, 텍스트 겹침, 화살표, 시각 계층, 색상/대비, 중복 검사
- Refine 2단계 파이프라인: ①비전 모델이 이미지 분석(중복 라벨·무의미 텍스트·화살표·오버랩) → 교정 목록 생성 + UI 표시 ②이미지 모델이 교정 목록 + 간결 baseline 규칙 + 사용자 프리셋 적용
- Refine 프롬프트 최적화: 구조적 수정 지시(섹션 교체·시각 재생성·정보 추가) 제거 — 이미지 모델이 실행 불가능한 지시는 성능 저하 유발. 3중 품질 프롬프트 중복 해소, Stage 5 검증 기반 간결 baseline 복원 (프롬프트 총량 ~65% 감소)
- 한국어 UI에서도 편집 프롬프트는 영문으로 전달 (이미지 생성 품질 향상)
- 개선/업스케일 진행상황 로그:
st.status패턴으로 다이어그램 생성과 동일한 단계별 진행 UI 표시 - 참조 이미지 오염 방지, Visualizer 온도 1.0→0.6, 진행상황 실시간 표시
- 한국어 UI 번역 추가 (
translations.py) - 데모 UI 헤더에 언어 선택기 추가
안녕하세요! PaperBanana의 원본 버전은 이미 Google-Research에서 PaperVizAgent로 오픈소스 공개되었습니다. 이 저장소는 해당 repo의 내용을 포크한 것으로, 학술 논문 일러스트레이션을 더 잘 지원하기 위해 계속 발전시키는 것을 목표로 합니다. 상당한 진전을 이루었지만, 더 안정적인 생성과 더 다양하고 복잡한 시나리오를 위해서는 아직 갈 길이 멉니다. PaperBanana는 모든 연구자들의 학술 일러스트레이션을 돕기 위한 완전한 오픈소스 프로젝트입니다. 커뮤니티에 기여하는 것이 목표이며, 현재 상업적 용도로 사용할 계획은 없습니다.
PaperBanana는 참조 기반 멀티 에이전트 프레임워크로, 학술 논문 일러스트레이션을 자동으로 생성합니다. 전문 에이전트로 구성된 창작 팀처럼 동작하며, 원시 과학 콘텐츠를 Retriever, Planner, Stylist, Visualizer, Critic 에이전트의 체계적인 파이프라인을 통해 출판 품질의 다이어그램과 플롯으로 변환합니다. 참조 예제로부터의 인컨텍스트 학습과 반복적 개선을 활용하여 미학적으로 우수하고 의미적으로 정확한 과학 일러스트레이션을 생성합니다.
다음은 PaperBanana가 생성한 다이어그램과 플롯 예시입니다:

PaperBanana는 5개의 전문 에이전트를 체계적인 파이프라인으로 조율하여 고품질 학술 일러스트레이션을 생성합니다:
- Retriever Agent: 큐레이션된 컬렉션에서 가장 관련성 높은 참조 다이어그램을 식별하여 후속 에이전트를 안내합니다
- Planner Agent: 인컨텍스트 학습을 활용하여 방법론 내용과 커뮤니케이션 의도를 종합적인 텍스트 설명으로 변환합니다
- Stylist Agent: 자동 합성된 스타일 가이드라인을 사용하여 학술적 미학 기준에 맞게 설명을 다듬습니다
- Visualizer Agent: 최신 이미지 생성 모델을 사용하여 텍스트 설명을 시각적 결과물로 변환합니다
- Critic Agent: Visualizer와 함께 다중 라운드 반복 개선을 통한 폐루프 정제 메커니즘을 구성합니다
git clone https://github.com/jsonpassion/PaperBanana.git
cd PaperBananaPaperBanana는 YAML 설정 파일 또는 환경 변수를 통해 API 키를 설정할 수 있습니다.
configs/model_config.template.yaml 파일을 configs/model_config.yaml로 복사하여 사용자 설정을 외부화하는 것을 권장합니다. 이 파일은 git에서 무시되므로 API 키와 설정이 안전하게 보호됩니다. model_config.yaml에서 두 개의 모델 이름(defaults.model_name과 defaults.image_model_name)을 입력하고, api_keys 아래에 최소 하나의 API 키(예: Gemini 모델용 google_api_key)를 설정하세요.
다수의 후보를 동시에 생성해야 하는 경우, 높은 동시성을 지원하는 API 키가 필요합니다.
먼저 PaperBananaBench를 다운로드한 후 data 디렉토리에 배치합니다 (예: data/PaperBananaBench/). 프레임워크는 데이터셋 없이도 Retriever Agent의 few-shot 학습 기능을 건너뛰고 정상적으로 동작하도록 설계되어 있습니다. 원본 PDF에 관심이 있으시다면 PaperBananaDiagramPDFs에서 다운로드하세요.
-
Python 패키지 관리에
uv를 사용합니다. 여기의 안내에 따라uv를 설치하세요. -
가상 환경 생성 및 활성화
uv venv # 현재 디렉토리의 .venv/ 아래에 가상 환경을 생성합니다 source .venv/bin/activate # Windows에서는 .venv\Scripts\activate
-
Python 3.12 설치
uv python install 3.12
-
필요한 패키지 설치
uv pip install -r requirements.txt
PaperBanana를 가장 쉽게 실행하는 방법은 Streamlit 인터랙티브 데모입니다:
streamlit run demo.py웹 인터페이스는 두 가지 주요 워크플로를 제공합니다:
1. 후보 생성 탭:
- 방법론 섹션 내용(Markdown 권장)을 붙여넣고 그림 캡션을 입력합니다.
- 설정을 구성합니다 (파이프라인 모드, 검색 설정, 후보 수, 화면 비율, Critic 라운드).
- "후보 생성"을 클릭하고 병렬 처리를 기다립니다.
- 결과를 그리드로 확인하고, 진화 타임라인을 보거나 개별 이미지 또는 ZIP 일괄 다운로드가 가능합니다.
2. 이미지 개선 탭:
- 생성된 후보 또는 임의의 다이어그램을 업로드합니다.
- 원하는 변경 사항을 설명하거나 업스케일링을 요청합니다.
- 해상도(2K/4K)와 화면 비율을 선택합니다.
- 개선된 고해상도 결과물을 다운로드합니다.
커맨드라인에서도 PaperBanana를 실행할 수 있습니다:
# 기본 설정으로 실행
python main.py
# 커스텀 설정으로 실행
python main.py \
--dataset_name "PaperBananaBench" \
--task_name "diagram" \
--split_name "test" \
--exp_mode "dev_full" \
--retrieval_setting "auto"사용 가능한 옵션:
--dataset_name: 사용할 데이터셋 (기본값:PaperBananaBench)--task_name: 작업 유형 -diagram또는plot(기본값:diagram)--split_name: 데이터셋 분할 (기본값:test)--exp_mode: 실험 모드 (아래 섹션 참조)--retrieval_setting: 검색 전략 -auto,manual,random, 또는none(기본값:auto)
실험 모드:
vanilla: 계획이나 개선 없이 직접 생성dev_planner: Planner → Visualizer만 사용dev_planner_stylist: Planner → Stylist → Visualizerdev_planner_critic: Planner → Visualizer → Critic (다중 라운드)dev_full: 모든 에이전트를 포함한 전체 파이프라인demo_planner_critic: 데모 모드 (Planner → Visualizer → Critic), 평가 없음demo_full: 데모 모드 (전체 파이프라인), 평가 없음
파이프라인 진화 및 중간 결과 확인:
streamlit run visualize/show_pipeline_evolution.py평가 결과 확인:
streamlit run visualize/show_referenced_eval.py├── .venv/
│ └── ...
├── data/
│ └── PaperBananaBench/
│ ├── diagram/
│ │ ├── images/
│ │ ├── pdfs/
│ │ ├── test.json
│ │ └── ref.json
│ └── plot/
├── agents/
│ ├── __init__.py
│ ├── base_agent.py
│ ├── retriever_agent.py
│ ├── planner_agent.py
│ ├── stylist_agent.py
│ ├── visualizer_agent.py
│ ├── critic_agent.py
│ ├── vanilla_agent.py
│ └── polish_agent.py
├── prompts/
│ ├── __init__.py
│ ├── diagram_eval_prompts.py
│ └── plot_eval_prompts.py
├── style_guides/
│ ├── generate_category_style_guide.py
│ └── ...
├── utils/
│ ├── __init__.py
│ ├── config.py
│ ├── paperviz_processor.py
│ ├── eval_toolkits.py
│ ├── generation_utils.py
│ ├── image_utils.py
│ └── smart_input.py
├── visualize/
│ ├── show_pipeline_evolution.py
│ └── show_referenced_eval.py
├── scripts/
│ ├── run_main.sh
│ ├── run_demo.sh
├── configs/
│ └── model_config.template.yaml
├── results/
│ ├── PaperBananaBench_diagram/
│ └── parallel_demo/
├── main.py
├── demo.py
├── translations.py
├── example_templates.py
├── input_templates.py
└── README.md
- 참조 기반: 생성적 검색을 통해 큐레이션된 예제에서 학습
- 반복적 개선: 점진적 품질 향상을 위한 Critic-Visualizer 루프
- 스타일 인식: 자동 합성된 미학 가이드라인으로 학술적 품질 보장
- 유연한 모드: 다양한 사용 사례에 맞는 여러 실험 모드 제공
- 병렬 생성: 최대 20개의 후보 다이어그램을 동시에 생성
- 파이프라인 시각화: Planner → Stylist → Critic 단계별 진화 과정 추적
- 고해상도 개선: 이미지 생성 API를 활용한 2K/4K 업스케일링
- 일괄 내보내기: 모든 후보를 PNG 또는 ZIP으로 다운로드
- 모듈식 에이전트: 각 에이전트를 독립적으로 설정 가능
- 작업 지원: 개념 다이어그램과 데이터 플롯 모두 지원
- 평가 프레임워크: 다양한 메트릭을 사용한 정답 대비 내장 평가
- 비동기 처리: 설정 가능한 동시성으로 효율적인 배치 처리
- 수동 선택 예제 사용 지원 추가. 사용자 친화적인 인터페이스 제공.
- 통계 플롯 생성 코드 업로드.
- 스타일 가이드라인 기반 기존 다이어그램 개선 코드 업로드.
- 컴퓨터 과학 외 분야를 지원하도록 참조 셋 확장.
이 저장소 공개 전후로, 이 작업을 재현하려는 여러 커뮤니티 노력이 있었습니다. 이러한 노력들은 매우 가치 있는 독자적인 관점을 제시합니다. 다음의 훌륭한 기여들을 확인해 보시길 강력히 추천합니다 (빠진 것이 있으면 추가 환영합니다):
또한 이 방법론의 개발과 함께, 학술 일러스트레이션 자동 생성이라는 같은 주제를 탐구하는 많은 다른 연구들이 있었습니다. 일부는 편집 가능한 생성 그림을 지원하기도 합니다. 이들의 기여는 생태계에 필수적이며 주목할 가치가 있습니다 (마찬가지로 추가 환영합니다):
- https://github.com/ResearAI/AutoFigure-Edit
- https://github.com/OpenDCAI/Paper2Any
- https://github.com/BIT-DataLab/Edit-Banana
전반적으로, 현재 모델의 기본 역량이 학술 일러스트레이션 자동 생성 문제 해결에 한층 더 가까워지게 해준 것에 고무되어 있습니다. 커뮤니티의 지속적인 노력으로, 가까운 미래에 학술 연구 반복과 시각적 커뮤니케이션을 가속화하는 고품질 자동 드로잉 도구를 갖게 될 것이라 믿습니다.
PaperBanana를 더 좋게 만들기 위한 커뮤니티 기여를 환영합니다!
Apache-2.0
이 저장소가 도움이 되셨다면, 다음과 같이 논문을 인용해 주세요:
@article{zhu2026paperbanana,
title={PaperBanana: Automating Academic Illustration for AI Scientists},
author={Zhu, Dawei and Meng, Rui and Song, Yale and Wei, Xiyu and Li, Sujian and Pfister, Tomas and Yoon, Jinsung},
journal={arXiv preprint arXiv:2601.23265},
year={2026}
}이것은 Google의 공식 지원 제품이 아닙니다. 이 프로젝트는 Google 오픈소스 소프트웨어 취약점 보상 프로그램 대상이 아닙니다.
커뮤니티에 기여하는 것이 목표이며, 현재 상업적 용도로 사용할 계획은 없습니다. 핵심 방법론은 Google 인턴십 기간 중 개발되었으며, 이러한 특정 워크플로에 대해 Google이 특허를 출원했습니다. 이는 오픈소스 연구에는 영향을 미치지 않지만, 유사한 로직을 사용하는 제3자 상업적 응용에는 제한이 있습니다.
