Skip to content

Task #613: export-png VLM 프리셋 확장 (GPT-4V / Gemini / Qwen-VL / LLaVA)#735

Closed
oksure wants to merge 2 commits into
edwardkim:develfrom
oksure:contrib/vlm-preset-expansion
Closed

Task #613: export-png VLM 프리셋 확장 (GPT-4V / Gemini / Qwen-VL / LLaVA)#735
oksure wants to merge 2 commits into
edwardkim:develfrom
oksure:contrib/vlm-preset-expansion

Conversation

@oksure

@oksure oksure commented May 9, 2026

Copy link
Copy Markdown
Contributor

요약

export-png --vlm-target 옵션을 6종 VLM provider 프리셋으로 확장합니다.

추가된 프리셋

프리셋 한 변 한도 최대 픽셀 비고
claude 1568 px 1.15 MP 기존 (변경 없음)
gpt4v-low 512 px 262K px GPT-4V low detail
gpt4v-high 2000 px 1.54 MP GPT-4V high detail (tile 기반)
gemini 3072 px 9.44 MP Google Gemini
qwen-vl 2240 px 5.02 MP Qwen-VL (28×28 patch)
llava 672 px 452K px LLaVA / CLIP backbone OSS

변경 사항

  • VlmTarget enum 확장 (1 → 6 variants)
  • constraints() 메서드에 각 provider 별 한도 추가
  • from_str() 에 대소문자/하이픈/밑줄 유연 매칭
  • CLI 도움말 갱신 (각 프리셋 한 줄 설명)
  • 단위 테스트: from_str 전 변형 파싱 + constraints 정합성 검증

사용 예시

rhwp export-png input.hwp --vlm-target gemini
rhwp export-png input.hwp --vlm-target gpt4v-high
rhwp export-png input.hwp --vlm-target llava

테스트

cargo test && cargo clippy -- -D warnings  # 0 failed, 0 warnings

Closes #613

감사합니다.

…/ LLaVA)

VlmTarget enum 을 6종으로 확장:
- claude:     1568 px / 1.15 MP (기존)
- gpt4v-low:  512 px / 262K px (GPT-4V low detail)
- gpt4v-high: 2000 px / 1.54 MP (GPT-4V high detail)
- gemini:     3072 px / 9.44 MP (Google Gemini)
- qwen-vl:    2240 px / 5.02 MP (Qwen-VL, 28×28 patch 기반)
- llava:      672 px / 452K px (LLaVA / CLIP backbone OSS)

CLI: --vlm-target <프리셋> 도움말 및 오류 메시지 갱신.
대소문자/하이픈/밑줄 유연 매칭 (gpt4v-low, gpt4v_low, GPT4V-LOW 모두 인식).
단위 테스트: from_str 전 변형 + constraints 정합성 검증.

Closes edwardkim#613

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 9, 2026 10:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

export-png --vlm-target 옵션을 Claude 단일 프리셋에서 6종 VLM provider 프리셋으로 확장하고, CLI 도움말/에러 메시지 및 관련 단위 테스트를 추가합니다.

Changes:

  • VlmTarget enum을 claude 외 5개 프리셋(GPT-4V low/high, Gemini, Qwen-VL, LLaVA)으로 확장하고 provider별 제약값을 추가
  • --vlm-target 도움말 및 잘못된 입력 시 에러 메시지에 지원 프리셋 목록을 노출
  • from_str() 변형 입력 파싱 및 constraints 정합성 검증 테스트 추가

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
src/main.rs --vlm-target 도움말 업데이트 및 유효하지 않은 값에 대한 에러 메시지 개선
src/document_core/queries/rendering.rs VlmTarget 프리셋 확장, constraints/from_str/all_names 추가, 관련 단위 테스트 추가

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/document_core/queries/rendering.rs Outdated
Comment on lines +298 to +301
"gpt4v_low" | "gpt4v-low" => Some(VlmTarget::Gpt4vLow),
"gpt4v_high" | "gpt4v-high" | "gpt4v" => Some(VlmTarget::Gpt4vHigh),
"gemini" => Some(VlmTarget::Gemini),
"qwen_vl" | "qwen-vl" | "qwen" => Some(VlmTarget::QwenVl),
Comment thread src/document_core/queries/rendering.rs Outdated
Comment on lines +298 to +308
"gpt4v_low" | "gpt4v-low" => Some(VlmTarget::Gpt4vLow),
"gpt4v_high" | "gpt4v-high" | "gpt4v" => Some(VlmTarget::Gpt4vHigh),
"gemini" => Some(VlmTarget::Gemini),
"qwen_vl" | "qwen-vl" | "qwen" => Some(VlmTarget::QwenVl),
"llava" => Some(VlmTarget::Llava),
_ => None,
}
}

pub fn all_names() -> &'static str {
"claude, gpt4v-low, gpt4v-high, gemini, qwen-vl, llava"
Comment thread src/main.rs Outdated
Comment on lines +69 to +75
println!(" --vlm-target <프리셋> VLM 입력 프리셋:");
println!(" claude: 1568 px / 1.15 MP (Claude Vision)");
println!(" gpt4v-low: 512 px (GPT-4V low detail)");
println!(" gpt4v-high: 2000 px / 1.54 MP (GPT-4V high detail)");
println!(" gemini: 3072 px (Google Gemini)");
println!(" qwen-vl: 2240 px (Qwen-VL)");
println!(" llava: 672 px (LLaVA / OSS CLIP)");
- replace('-','_') 정규화 이후 하이픈 패턴은 매칭 불가하므로 제거
- all_names() 에 축약 별칭 (gpt4v, qwen) 표기 추가
- CLI 도움말에 별칭 명시 (gpt4v-high 별칭: gpt4v, qwen-vl 별칭: qwen)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@oksure

oksure commented May 9, 2026

Copy link
Copy Markdown
Contributor Author

Copilot 리뷰 피드백을 c6a762c 에서 반영했습니다:

  1. dead arm 제거replace('-', "_") 정규화 이후 하이픈 패턴 ("gpt4v-low", "qwen-vl") 은 매칭 불가하므로 밑줄 패턴만 유지
  2. all_names() 별칭 표기 — 축약 별칭 (gpt4v, qwen) 을 괄호로 명시
  3. 도움말 동기화 — CLI 도움말에 별칭 표기 추가 (gpt4v-high 별칭: gpt4v, qwen-vl 별칭: qwen)

edwardkim added a commit that referenced this pull request May 9, 2026
…wen-VL / LLaVA)

PR #735 (@oksure) 옵션 A 처리 — 2 commits cherry-pick + 수동 충돌 해결 + no-ff merge.

본질 정정 (2 files, +71/-8):
- src/document_core/queries/rendering.rs (+61/-3): VlmTarget enum 1 → 6 variants 확장 (Claude / Gpt4vLow / Gpt4vHigh / Gemini / QwenVl / Llava) + constraints() 메서드 각 provider 한도 (edge / pixels) + from_str() 하이픈/밑줄 정규화 + 축약 별칭 (gpt4v / qwen) + all_names() 헬퍼 + 신규 unit tests 2건 (vlm_target_from_str_all_variants 12 케이스 / vlm_target_constraints_are_sane 6 variants sanity check)
- src/main.rs (+10/-5): CLI 도움말 영역 6종 프리셋 한 줄 설명 + 에러 메시지 영역 VlmTarget::all_names() 동기화

추가 프리셋:
- gpt4v-low: 512 px / 262K (GPT-4V low detail)
- gpt4v-high: 2000 px / 1.54 MP (GPT-4V high, 별칭 gpt4v)
- gemini: 3072 px / 9.44 MP (Google Gemini)
- qwen-vl: 2240 px / 5.02 MP (Qwen-VL 28×28 patch, 별칭 qwen)
- llava: 672 px / 452K (LLaVA / OSS CLIP backbone)

Copilot 리뷰 반영 (commit 2883733): from_str 정규화 후 dead arm 제거 + 별칭 도움말 동기화 (하이픈/밑줄 모두 허용 명시).

본 환경 cherry-pick 영역 영역 PR #734 (Task #614 --dpi) 영역 영역 동일 파일 영역 영역 누적 변경 영역 영역 충돌 발생 영역 영역 → **수동 통합** (PR #734 의 --dpi 보존 + PR #735 의 VLM 6종 보존).

자기 검증:
- cherry-pick 2 commits 영역 영역 수동 충돌 해결 (main.rs 도움말 + rendering.rs 테스트 모듈)
- cargo build/test --release ✅ ALL GREEN (native-skia feature 영역 영역 도)
- VLM unit tests ✅ 2 PASS
- 광범위 sweep 7 fixture / 170 페이지 / **회귀 0** ✅
- --dpi + --vlm-target 통합 동작 검증 ✅ (samples/통합재정통계(2010.11월).hwp 영역 영역 --vlm-target gemini 단독 + --vlm-target gpt4v --dpi 200 동시 — pHYs ppm 7874 = 200 DPI 정합)

opt-in 영역 영역:
- --vlm-target 미지정 시 기존 동작 100% 보존
- 시각 판정 면제 합리 (CLI 옵션 + enum 확장 영역 영역 픽셀 데이터 무영향, feedback_visual_judgment_authority 정합)

closes #613
edwardkim added a commit that referenced this pull request May 9, 2026
…M 프리셋 표 갱신

- mydocs/pr/archives/pr_735_review.md: 검토 문서 archives 이동
- mydocs/pr/archives/pr_735_report.md: 처리 보고서 작성
  · VLM 프리셋 1 → 6 variants 확장 (Issue #613 closes)
  · PR #734 + PR #735 동일 파일 누적 변경 영역 영역 수동 통합
  · PR #734 + PR #735 통합 검증 ✅ (--vlm-target + --dpi 독립 동작 입증)
  · 시각 판정 면제 합리 (CLI + enum 확장 영역 영역 픽셀 데이터 무영향)
- mydocs/orders/20260510.md: PR #735 항목 추가 (5/10 사이클 영역 영역 9건 처리)
- mydocs/manual/export_png_command.md: VLM 프리셋 표 갱신 (1 → 6 variants) + 비목표 영역 갱신 (#613 완료)
@edwardkim

Copy link
Copy Markdown
Owner

@oksure 님, 검토 + 머지 완료했습니다.

처리 결과

옵션 A (2 commits cherry-pick + 수동 충돌 해결 + no-ff merge `56fe3a74`) 로 처리.

본 환경 영역 영역 PR #734 (Task #614 --dpi) 영역 영역 동일 파일 영역 영역 누적 변경 영역 영역 충돌 발생 영역 영역 → 수동 통합 (PR #734 의 `--dpi` 보존 + PR #735 의 VLM 6종 보존, 동일 컨트리뷰터 영역 영역 두 PR 영역 영역 의도 영역 영역 다른 영역 영역 정합).

자기 검증

  • cherry-pick 2 commits 영역 영역 수동 충돌 해결 (main.rs 도움말 + rendering.rs 테스트 모듈)
  • `cargo build/test --release` ✅ ALL GREEN
  • VLM unit tests ✅ 2 PASS (`vlm_target_from_str_all_variants` + `vlm_target_constraints_are_sane`)
  • 광범위 sweep (7 fixture / 170 페이지) ✅ 170 same / 0 diff

PR #734 + PR #735 통합 검증 ✅

`samples/통합재정통계(2010.11월).hwp` 영역 영역 두 옵션 동시 사용 영역 영역 정합 입증:

패턴 동작
`--vlm-target gemini` 단독 IHDR 폭 794 (1.0× — 페이지 영역 영역 작아 자동 조정 미적용) ✓
`--vlm-target gpt4v --dpi 200` IHDR 폭 794 + pHYs ppm 7874 = 200 DPI

두 옵션 영역 영역 독립 동작 — `--vlm-target` 영역 영역 픽셀 한도 + `--dpi` 영역 영역 메타데이터 영역 영역 분리.

매뉴얼 현행화

`mydocs/manual/export_png_command.md` 영역 VLM 프리셋 표 영역 영역 1 → 6 variants 갱신 + 비목표 영역 영역 영역 `#613` 완료 영역 영역 표시.

시각 판정 면제

`feedback_visual_judgment_authority` 정합 — CLI 옵션 + enum 확장 영역 영역 (픽셀 데이터 무영향), SVG 시각 출력 무변경, 결정적 검증 통과.

처리 보고서: `mydocs/pr/archives/pr_735_report.md`.

@oksure20+ 사이클 컨트리뷰션 영역 — 5/10 사이클 영역 영역 PR #720/#723/#725/#728/#729/#730/#732/#734/#735 영역 9건 처리 완료 영역.

@edwardkim edwardkim closed this May 9, 2026
edwardkim added a commit that referenced this pull request May 9, 2026
- 옵션 우선순위 영역 정정: --dpi 영역 영역 메타데이터 영역 영역 항상 적용 + --vlm-target / --dpi 동시 사용 가능 명시
- DPI 메타데이터 절: 표현 정정 (어색한 한국어 표현 자연 정정) + --vlm-target gpt4v --dpi 200 동시 적용 예시 추가
- 사용 예시: 신규 VLM 프리셋 5종 (gemini / gpt4v-high (별칭 gpt4v) / qwen (별칭) / llava) + VLM + DPI 동시 적용 예시 추가
- 출력 dimension 표: 5종 VLM 프리셋 추가 (gpt4v-low/high / gemini / qwen-vl / llava)
- 출력 형식 / 비목표: 표현 정정 (자연 한국어)

PR #735 (Task #613) 머지 영역 영역 후 매뉴얼 영역 영역 충실 현행화.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants