|
1 | 1 | <!DOCTYPE html> |
2 | | -<html lang="en"> |
| 2 | +<html lang="en" data-lang="en"> |
3 | 3 | <head> |
4 | 4 | <meta charset="UTF-8"> |
5 | | - <meta http-equiv="refresh" content="0; url=ocr_training_pipeline.html"> |
6 | | - <title>OneVision-Encoder Docs</title> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | + <title>OneVision-Encoder — Issue Explainers</title> |
| 7 | + <style> |
| 8 | + :root { |
| 9 | + --bg: #ffffff; |
| 10 | + --bg-alt: #f8fafc; |
| 11 | + --text: #1e293b; |
| 12 | + --text-muted: #64748b; |
| 13 | + --accent-blue: #2563eb; |
| 14 | + --accent-indigo: #4f46e5; |
| 15 | + --accent-pink: #e11d48; |
| 16 | + --border: #e2e8f0; |
| 17 | + --font-sans: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; |
| 18 | + --font-mono: "SF Mono", "Fira Code", Consolas, monospace; |
| 19 | + } |
| 20 | + * { box-sizing: border-box; margin: 0; padding: 0; } |
| 21 | + body { |
| 22 | + background: var(--bg); color: var(--text); |
| 23 | + font-family: var(--font-sans); line-height: 1.75; font-size: 16px; |
| 24 | + } |
| 25 | + .container { max-width: 720px; margin: 0 auto; padding: 3.5rem 1.25rem 4rem; } |
| 26 | + |
| 27 | + /* Language Toggle */ |
| 28 | + .lang-toggle { |
| 29 | + position: fixed; top: 0; left: 50%; transform: translateX(-50%); |
| 30 | + z-index: 9999; display: flex; |
| 31 | + background: linear-gradient(135deg, #2563eb, #7c3aed); |
| 32 | + border-radius: 0 0 16px 16px; padding: 8px 6px; |
| 33 | + box-shadow: 0 4px 20px rgba(37, 99, 235, 0.35); |
| 34 | + cursor: pointer; gap: 4px; |
| 35 | + } |
| 36 | + .lang-toggle-btn { |
| 37 | + padding: 8px 22px; border-radius: 12px; font-size: 0.95rem; |
| 38 | + font-weight: 700; color: rgba(255,255,255,0.6); |
| 39 | + transition: all 0.3s ease; user-select: none; letter-spacing: 0.03em; |
| 40 | + } |
| 41 | + .lang-toggle-btn:hover { color: rgba(255,255,255,0.85); } |
| 42 | + .lang-toggle-btn.active { |
| 43 | + background: #ffffff; color: #2563eb; |
| 44 | + box-shadow: 0 2px 8px rgba(0,0,0,0.15); |
| 45 | + } |
| 46 | + |
| 47 | + /* Header */ |
| 48 | + header { text-align: center; margin-bottom: 2.5rem; } |
| 49 | + .logo { font-size: 1.1rem; font-weight: 700; color: var(--accent-indigo); letter-spacing: -0.02em; margin-bottom: 0.5rem; } |
| 50 | + h1 { font-size: 2rem; font-weight: 800; color: var(--text); line-height: 1.3; margin-bottom: 0.5rem; } |
| 51 | + .subtitle { color: var(--text-muted); font-size: 1rem; } |
| 52 | + |
| 53 | + /* Issue Cards */ |
| 54 | + .issue-list { display: flex; flex-direction: column; gap: 1rem; } |
| 55 | + .issue-card { |
| 56 | + display: block; text-decoration: none; color: inherit; |
| 57 | + background: var(--bg); border: 1px solid var(--border); |
| 58 | + border-radius: 12px; padding: 1.25rem 1.5rem; |
| 59 | + transition: all 0.2s ease; position: relative; |
| 60 | + } |
| 61 | + .issue-card:hover { |
| 62 | + border-color: var(--accent-blue); |
| 63 | + box-shadow: 0 4px 16px rgba(37, 99, 235, 0.1); |
| 64 | + transform: translateY(-2px); |
| 65 | + } |
| 66 | + .issue-card:active { transform: translateY(0); } |
| 67 | + .issue-tag { |
| 68 | + display: inline-block; font-size: 0.75rem; font-weight: 700; |
| 69 | + font-family: var(--font-mono); padding: 3px 10px; |
| 70 | + border-radius: 999px; margin-bottom: 0.5rem; |
| 71 | + } |
| 72 | + .issue-tag.open { background: #dcfce7; color: #16a34a; } |
| 73 | + .issue-tag.closed { background: #f3e8ff; color: #7c3aed; } |
| 74 | + .issue-title { font-size: 1.1rem; font-weight: 700; color: var(--text); margin-bottom: 0.35rem; line-height: 1.4; } |
| 75 | + .issue-desc { font-size: 0.9rem; color: var(--text-muted); line-height: 1.6; } |
| 76 | + .issue-meta { |
| 77 | + display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 0.75rem; |
| 78 | + font-size: 0.8rem; color: var(--text-muted); |
| 79 | + } |
| 80 | + .issue-meta span { display: flex; align-items: center; gap: 4px; } |
| 81 | + .arrow-icon { |
| 82 | + position: absolute; right: 1.25rem; top: 50%; transform: translateY(-50%); |
| 83 | + color: var(--border); font-size: 1.2rem; transition: color 0.2s ease; |
| 84 | + } |
| 85 | + .issue-card:hover .arrow-icon { color: var(--accent-blue); } |
| 86 | + |
| 87 | + /* Footer */ |
| 88 | + footer { |
| 89 | + margin-top: 3rem; padding-top: 1.5rem; |
| 90 | + border-top: 1px solid var(--border); text-align: center; |
| 91 | + font-size: 0.85rem; color: var(--text-muted); |
| 92 | + } |
| 93 | + footer a { color: var(--accent-blue); text-decoration: none; } |
| 94 | + footer a:hover { text-decoration: underline; } |
| 95 | + |
| 96 | + /* Responsive */ |
| 97 | + @media (max-width: 640px) { |
| 98 | + .container { padding: 3rem 1rem 3rem; } |
| 99 | + h1 { font-size: 1.5rem; } |
| 100 | + .issue-card { padding: 1rem 1.25rem; } |
| 101 | + .issue-title { font-size: 1rem; } |
| 102 | + .arrow-icon { display: none; } |
| 103 | + .lang-toggle { padding: 6px 4px; } |
| 104 | + .lang-toggle-btn { padding: 6px 16px; font-size: 0.85rem; } |
| 105 | + } |
| 106 | + </style> |
7 | 107 | </head> |
8 | 108 | <body> |
9 | | - <p>Redirecting to <a href="ocr_training_pipeline.html">OCR Training Pipeline</a>...</p> |
| 109 | + |
| 110 | +<div class="lang-toggle"> |
| 111 | + <div class="lang-toggle-btn active" id="btn-en" onclick="setLang('en')">EN</div> |
| 112 | + <div class="lang-toggle-btn" id="btn-zh" onclick="setLang('zh')">中文</div> |
| 113 | +</div> |
| 114 | + |
| 115 | +<div class="container"> |
| 116 | + <header> |
| 117 | + <div class="logo">OneVision-Encoder</div> |
| 118 | + <h1><span class="lang-span" data-en="Issue Explainers" data-zh="Issue 详解">Issue Explainers</span></h1> |
| 119 | + <p class="subtitle"><span class="lang-span" data-en="Interactive visual explanations for community questions" data-zh="社区问题的交互式可视化解答">Interactive visual explanations for community questions</span></p> |
| 120 | + </header> |
| 121 | + |
| 122 | + <div class="issue-list"> |
| 123 | + |
| 124 | + <a class="issue-card" href="issue-105.html"> |
| 125 | + <div class="issue-tag open">#105</div> |
| 126 | + <div class="issue-title"> |
| 127 | + <span class="lang-span" |
| 128 | + data-en="Clarification on how OCR annotations are used during training" |
| 129 | + data-zh="OCR 标注在训练中如何使用的说明">Clarification on how OCR annotations are used during training</span> |
| 130 | + </div> |
| 131 | + <div class="issue-desc"> |
| 132 | + <span class="lang-span" |
| 133 | + data-en="How PaddleOCR tags become multi-label Partial FC training signals — with animated ArcFace visualization, KaTeX formulas, and full pipeline walkthrough." |
| 134 | + data-zh="PaddleOCR 标签如何成为多标签 Partial FC 训练信号——包含 ArcFace 动画可视化、KaTeX 公式和完整流程解析。">How PaddleOCR tags become multi-label Partial FC training signals — with animated ArcFace visualization, KaTeX formulas, and full pipeline walkthrough.</span> |
| 135 | + </div> |
| 136 | + <div class="issue-meta"> |
| 137 | + <span>👤 JerryPW</span> |
| 138 | + <span>📅 2026-04-08</span> |
| 139 | + <span><span class="lang-span" data-en="6 sections" data-zh="6 个章节">6 sections</span></span> |
| 140 | + <span><span class="lang-span" data-en="Interactive animations" data-zh="交互动画">Interactive animations</span></span> |
| 141 | + </div> |
| 142 | + <div class="arrow-icon">→</div> |
| 143 | + </a> |
| 144 | + |
| 145 | + <!-- Add more issue cards here following the same pattern: |
| 146 | + <a class="issue-card" href="issue-XXX.html"> |
| 147 | + <div class="issue-tag open">#XXX</div> |
| 148 | + <div class="issue-title"> |
| 149 | + <span class="lang-span" data-en="..." data-zh="...">...</span> |
| 150 | + </div> |
| 151 | + <div class="issue-desc"> |
| 152 | + <span class="lang-span" data-en="..." data-zh="...">...</span> |
| 153 | + </div> |
| 154 | + <div class="issue-meta">...</div> |
| 155 | + <div class="arrow-icon">→</div> |
| 156 | + </a> |
| 157 | + --> |
| 158 | + |
| 159 | + </div> |
| 160 | + |
| 161 | + <footer> |
| 162 | + <span class="lang-span" |
| 163 | + data-en="Part of the <a href='https://github.com/EvolvingLMMs-Lab/OneVision-Encoder'>OneVision-Encoder</a> project. Deployed via GitHub Pages." |
| 164 | + data-zh="<a href='https://github.com/EvolvingLMMs-Lab/OneVision-Encoder'>OneVision-Encoder</a> 项目的一部分。通过 GitHub Pages 部署。">Part of the <a href="https://github.com/EvolvingLMMs-Lab/OneVision-Encoder">OneVision-Encoder</a> project. Deployed via GitHub Pages.</span> |
| 165 | + </footer> |
| 166 | +</div> |
| 167 | + |
| 168 | +<script> |
| 169 | + let currentLang = 'en'; |
| 170 | + function setLang(lang) { |
| 171 | + currentLang = lang; |
| 172 | + document.documentElement.setAttribute('data-lang', lang); |
| 173 | + document.getElementById('btn-en').classList.toggle('active', lang === 'en'); |
| 174 | + document.getElementById('btn-zh').classList.toggle('active', lang === 'zh'); |
| 175 | + document.querySelectorAll('.lang-span').forEach(el => { |
| 176 | + const val = el.getAttribute('data-' + lang); |
| 177 | + if (val) el.innerHTML = val; |
| 178 | + }); |
| 179 | + document.title = lang === 'en' |
| 180 | + ? 'OneVision-Encoder — Issue Explainers' |
| 181 | + : 'OneVision-Encoder — Issue 详解'; |
| 182 | + } |
| 183 | +</script> |
| 184 | + |
10 | 185 | </body> |
11 | 186 | </html> |
0 commit comments