hung-k-nguyen commited on
Commit
0c5549b
Β·
0 Parent(s):

Release snapshot

Browse files
Files changed (4) hide show
  1. .gitattributes +35 -0
  2. README.md +16 -0
  3. index.html +210 -0
  4. style.css +28 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Doc-Split Leaderboard
3
+ emoji: πŸ†
4
+ colorFrom: indigo
5
+ colorTo: blue
6
+ sdk: static
7
+ app_file: index.html
8
+ pinned: false
9
+ ---
10
+
11
+ # Doc-Split Leaderboard
12
+
13
+ Unified page-stream-segmentation leaderboard β€” our flagship + open-weight model vs cloud VLMs and the
14
+ field's self-declared numbers, one metric (boundary F1 + ΞΊ) across six cuts. Static page; see
15
+ [doc-split-benchmark](https://huggingface.co/datasets/nutrientdocs/doc-split-benchmark) to reproduce and
16
+ [SUBMISSION.md](https://huggingface.co/datasets/nutrientdocs/doc-split-benchmark/blob/main/SUBMISSION.md) to add a row.
index.html ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Page Stream Segmentation β€” Unified Leaderboard</title>
7
+ <style>
8
+ :root{
9
+ --bg:#f6f8fb; --surface:#ffffff; --surface-2:#f0f4f8;
10
+ --text:#111820; --muted:#5c6773; --faint:#8a96a2; --border:#e2e8ef;
11
+ --accent:#1d5fa8; --accent-soft:#e9eefb; --accent-line:#c8d5f6;
12
+ --good:#0f7a58; --good-bg:#e2f3ec; --ok:#6b7280; --ok-bg:#eef1f4;
13
+ --warn:#9a6a12; --warn-bg:#f7edda; --poor:#a83a3a; --poor-bg:#f6e3e3;
14
+ --shadow:0 1px 2px rgba(16,32,64,.05),0 4px 16px rgba(16,32,64,.05);
15
+ --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
16
+ --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
17
+ }
18
+ @media (prefers-color-scheme:dark){:root{
19
+ --bg:#0c1016; --surface:#141a22; --surface-2:#1a222c;
20
+ --text:#e6edf4; --muted:#94a1af; --faint:#6a7684; --border:#232c37;
21
+ --accent:#6aa9e6; --accent-soft:#182238; --accent-line:#2c3d63;
22
+ --good:#3bbd8e; --good-bg:#122a22; --ok:#9aa5b1; --ok-bg:#1b232d;
23
+ --warn:#d6a24a; --warn-bg:#2b2416; --poor:#e07373; --poor-bg:#2c1a1a;
24
+ --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 22px rgba(0,0,0,.35);
25
+ }}
26
+ :root[data-theme="light"]{
27
+ --bg:#f6f8fb; --surface:#ffffff; --surface-2:#f0f4f8; --text:#111820; --muted:#5c6773; --faint:#8a96a2; --border:#e2e8ef;
28
+ --accent:#1d5fa8; --accent-soft:#e9eefb; --accent-line:#c8d5f6;
29
+ --good:#0f7a58; --good-bg:#e2f3ec; --ok:#6b7280; --ok-bg:#eef1f4; --warn:#9a6a12; --warn-bg:#f7edda; --poor:#a83a3a; --poor-bg:#f6e3e3;
30
+ --shadow:0 1px 2px rgba(16,32,64,.05),0 4px 16px rgba(16,32,64,.05);
31
+ }
32
+ :root[data-theme="dark"]{
33
+ --bg:#0c1016; --surface:#141a22; --surface-2:#1a222c; --text:#e6edf4; --muted:#94a1af; --faint:#6a7684; --border:#232c37;
34
+ --accent:#6aa9e6; --accent-soft:#182238; --accent-line:#2c3d63;
35
+ --good:#3bbd8e; --good-bg:#122a22; --ok:#9aa5b1; --ok-bg:#1b232d; --warn:#d6a24a; --warn-bg:#2b2416; --poor:#e07373; --poor-bg:#2c1a1a;
36
+ --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 22px rgba(0,0,0,.35);
37
+ }
38
+ *{box-sizing:border-box}
39
+ body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.5;
40
+ -webkit-font-smoothing:antialiased;font-size:15px}
41
+ .wrap{max-width:1120px;margin:0 auto;padding:48px 24px 72px}
42
+ header .eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:600}
43
+ h1{font-size:clamp(26px,4vw,38px);line-height:1.12;margin:.35em 0 .25em;letter-spacing:-.02em;text-wrap:balance;font-weight:700}
44
+ .lede{color:var(--muted);max-width:64ch;margin:0}
45
+ .meta{margin-top:14px;font-size:12.5px;color:var(--faint);font-family:var(--mono)}
46
+
47
+ .findings{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:32px 0 8px}
48
+ .finding{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow)}
49
+ .finding b{display:block;font-size:22px;letter-spacing:-.01em;font-family:var(--mono);font-variant-numeric:tabular-nums}
50
+ .finding span{color:var(--muted);font-size:13px}
51
+ .finding .k{color:var(--accent);font-weight:600}
52
+
53
+ h2{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:40px 0 12px}
54
+ .tablecard{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
55
+ .scroll{overflow-x:auto}
56
+ table{border-collapse:collapse;width:100%;min-width:820px}
57
+ thead th{position:sticky;top:0;background:var(--surface);z-index:1}
58
+ th,td{text-align:center;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
59
+ th.model,td.model{text-align:left;white-space:normal;min-width:230px;position:sticky;left:0;background:var(--surface);z-index:2}
60
+ thead th{font-size:11.5px;letter-spacing:.04em;color:var(--muted);font-weight:600;text-transform:uppercase;border-bottom:1.5px solid var(--border)}
61
+ thead th .sub{display:block;font-size:10px;color:var(--faint);text-transform:none;letter-spacing:0;font-weight:400}
62
+ .grouprow td{background:var(--surface-2);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:600;text-align:left;padding:7px 12px}
63
+ td .f1{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600;font-size:14.5px}
64
+ td .kap{display:block;font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:1px}
65
+ td.na{color:var(--faint)}
66
+ .modelname{font-weight:600;font-size:14px}
67
+ .modelsub{color:var(--muted);font-size:12px;margin-top:1px}
68
+ .chip{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.03em;padding:2px 7px;border-radius:20px;margin-top:5px;text-transform:uppercase}
69
+ .chip.flag{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-line)}
70
+ .chip.pub{background:var(--good-bg);color:var(--good)}
71
+ .chip.int{background:var(--ok-bg);color:var(--ok)}
72
+ .chip.cloud{background:var(--warn-bg);color:var(--warn)}
73
+ .chip.pubd{background:var(--ok-bg);color:var(--ok)}
74
+ tr.flagrow td.model{box-shadow:inset 3px 0 0 var(--accent)}
75
+ /* value heatmap (semantic, not the accent) */
76
+ .g1{background:var(--good-bg);color:var(--good)} /* >=.85 */
77
+ .g2{color:var(--text)} /* .70-.85 */
78
+ .g3{background:var(--warn-bg);color:var(--warn)} /* .50-.70 */
79
+ .g4{background:var(--poor-bg);color:var(--poor)} /* <.50 */
80
+ .foot{margin-top:34px;display:grid;gap:9px}
81
+ .foot p{margin:0;color:var(--muted);font-size:12.5px;max-width:88ch;padding-left:16px;position:relative}
82
+ .foot p::before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:var(--accent-line)}
83
+ .legend{display:flex;flex-wrap:wrap;gap:14px;margin:10px 0 0;font-size:11.5px;color:var(--muted)}
84
+ .legend span{display:inline-flex;align-items:center;gap:6px}
85
+ .sw{width:12px;height:12px;border-radius:3px;border:1px solid var(--border)}
86
+ a{color:var(--accent)}
87
+ </style>
88
+ </head>
89
+ <body>
90
+ <div class="wrap">
91
+ <header>
92
+ <div class="eyebrow">Nutrient Β· Document Intelligence</div>
93
+ <h1>Page Stream Segmentation β€” Unified Leaderboard</h1>
94
+ <p class="lede">One boundary metric, one harness, every contender re-measured: our flagship and open-weight
95
+ models against cloud VLMs and the field's self-declared numbers. Cells show boundary <b>F1</b>; the small
96
+ figure is chance-corrected <b>ΞΊ</b>.</p>
97
+ <div class="meta">updated 2026-08-11 Β· metric: boundary page-F1 (page 0 forced) + Cohen's ΞΊ</div>
98
+ </header>
99
+
100
+ <section class="findings">
101
+ <div class="finding"><b>0.891</b><span>flagship <span class="k">OpenPSS-long</span> F1 β€” vs best cloud <b style="font-size:13px">0.244</b></span></div>
102
+ <div class="finding"><b>1 model</b><span>beats OpenPSS's <span class="k">two</span> specialists across both slices</span></div>
103
+ <div class="finding"><b>~0.0007</b><span>USD / 1k pages (A40) β€” cloud VLMs β‰ˆ <span class="k">$0.014 / stream</span></span></div>
104
+ <div class="finding"><b>4.5Γ—</b><span>lighter open model (<span class="k">doc-split-v1</span>) at near-flagship quality</span></div>
105
+ </section>
106
+
107
+ <h2>Boundary F1 Β· ΞΊ β€” across six evaluation cuts</h2>
108
+ <div class="tablecard"><div class="scroll">
109
+ <table>
110
+ <thead><tr>
111
+ <th class="model">Model</th>
112
+ <th>our-200<span class="sub">easy, saturated</span></th>
113
+ <th>OpenPSS-short<span class="sub">sparse Β· hardest</span></th>
114
+ <th>OpenPSS-long<span class="sub">long streams</span></th>
115
+ <th>TABME++<span class="sub">test</span></th>
116
+ <th>Tobacco800<span class="sub">test</span></th>
117
+ <th>val-full<span class="sub">our real-doc</span></th>
118
+ </tr></thead>
119
+ <tbody>
120
+ <tr class="grouprow"><td colspan="7">Ours</td></tr>
121
+ <tr class="flagrow">
122
+ <td class="model"><div class="modelname">doc-split-v2</div><div class="modelsub">flagship Β· one model for short + long streams Β· ~1.0B Β· on-prem</div><span class="chip flag">Commercial</span></td>
123
+ <td class="g1"><span class="f1">0.944</span><span class="kap">.79</span></td>
124
+ <td class="g3"><span class="f1">0.652</span><span class="kap">.60</span></td>
125
+ <td class="g1"><span class="f1">0.891</span><span class="kap">.86</span></td>
126
+ <td class="g1"><span class="f1">0.943</span><span class="kap">.91</span></td>
127
+ <td class="g1"><span class="f1">0.969</span><span class="kap">.93</span></td>
128
+ <td class="g1"><span class="f1">0.917</span><span class="kap">.86</span></td>
129
+ </tr>
130
+ <tr>
131
+ <td class="model"><div class="modelname">doc-split-v1</div><div class="modelsub">open-weight Β· ~4.5Γ— faster</div><span class="chip pub">Open-weight</span></td>
132
+ <td class="g1"><span class="f1">0.936</span><span class="kap">.78</span></td>
133
+ <td class="g3"><span class="f1">0.585</span><span class="kap">.53</span></td>
134
+ <td class="g1"><span class="f1">0.859</span><span class="kap">.82</span></td>
135
+ <td class="g2"><span class="f1">0.704</span><span class="kap">.56</span></td>
136
+ <td class="g2"><span class="f1">0.820</span><span class="kap">.60</span></td>
137
+ <td class="g1"><span class="f1">0.918</span><span class="kap">.86</span></td>
138
+ </tr>
139
+
140
+ <tr class="grouprow"><td colspan="7">Cloud VLM Β· image-only Β· single-prompt</td></tr>
141
+ <tr>
142
+ <td class="model"><div class="modelname">gemini-flash</div><div class="modelsub">best cloud on OpenPSS Β· ~$0.014/stream</div><span class="chip cloud">Cloud</span></td>
143
+ <td class="g1"><span class="f1">0.917</span></td>
144
+ <td class="g3"><span class="f1">0.598</span><span class="kap">.53</span></td>
145
+ <td class="g4"><span class="f1">0.244</span><span class="kap">.16</span></td>
146
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
147
+ </tr>
148
+ <tr>
149
+ <td class="model"><div class="modelname">gemini-pro</div><span class="chip cloud">Cloud</span></td>
150
+ <td class="g1"><span class="f1">0.936</span></td>
151
+ <td class="g3"><span class="f1">0.530</span><span class="kap">.45</span></td>
152
+ <td class="g4"><span class="f1">0.196</span><span class="kap">.11</span></td>
153
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
154
+ </tr>
155
+ <tr>
156
+ <td class="model"><div class="modelname">gpt-sol</div><div class="modelsub">best cloud on our-200</div><span class="chip cloud">Cloud</span></td>
157
+ <td class="g1"><span class="f1">0.942</span></td>
158
+ <td class="g4"><span class="f1">0.193</span><span class="kap">.17</span></td>
159
+ <td class="g4"><span class="f1">0.025</span><span class="kap">.02</span></td>
160
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
161
+ </tr>
162
+ <tr>
163
+ <td class="model"><div class="modelname">claude-opus</div><span class="chip cloud">Cloud</span></td>
164
+ <td class="na">β€”</td>
165
+ <td class="g4"><span class="f1">0.318</span><span class="kap">.28</span></td>
166
+ <td class="g4"><span class="f1">0.047</span><span class="kap">.03</span></td>
167
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
168
+ </tr>
169
+
170
+ <tr class="grouprow"><td colspan="7">Research β€” self-declared (their metric / in-domain)</td></tr>
171
+ <tr>
172
+ <td class="model"><div class="modelname">OpenPSS SHORT-specialist</div><div class="modelsub">BERT-EffNet ensemble Β· one of two models</div><span class="chip pubd">Published</span></td>
173
+ <td class="na">β€”</td>
174
+ <td class="g2"><span class="f1">0.76</span></td>
175
+ <td class="g4"><span class="f1">0.50</span></td>
176
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
177
+ </tr>
178
+ <tr>
179
+ <td class="model"><div class="modelname">OpenPSS LONG-specialist</div><div class="modelsub">separate model Β· cross-slice drops</div><span class="chip pubd">Published</span></td>
180
+ <td class="na">β€”</td>
181
+ <td class="g3"><span class="f1">0.62</span></td>
182
+ <td class="g2"><span class="f1">0.83</span></td>
183
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
184
+ </tr>
185
+ <tr>
186
+ <td class="model"><div class="modelname">bert-pss (agiagoulas)</div><div class="modelsub">only released PSS specialist Β· text-only</div><span class="chip pubd">Released</span></td>
187
+ <td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td><td class="na">β€”</td>
188
+ <td class="g4"><span class="f1">0.915<span style="font-size:10px">*</span></span><span class="kap">ΞΊ .00 run</span></td>
189
+ <td class="na">β€”</td>
190
+ </tr>
191
+ </tbody>
192
+ </table>
193
+ </div></div>
194
+
195
+ <div class="legend">
196
+ <span><i class="sw" style="background:var(--good-bg)"></i>β‰₯ 0.85</span>
197
+ <span><i class="sw" style="background:var(--surface)"></i>0.70–0.85</span>
198
+ <span><i class="sw" style="background:var(--warn-bg)"></i>0.50–0.70</span>
199
+ <span><i class="sw" style="background:var(--poor-bg)"></i>&lt; 0.50</span>
200
+ </div>
201
+
202
+ <div class="foot">
203
+ <p><b>One balanced model vs two specialists.</b> No single OpenPSS model wins both slices β€” their short-specialist craters on long (0.50), their long-specialist on short (0.62). the v4 flagship does short + long with one model, and its long (0.891) tops even their long-specialist (0.83).</p>
204
+ <p><b>Cloud VLMs can't ingest long streams.</b> Per-request image caps (Anthropic ~100 / OpenAI ~200 / Gemini ~500) force predict-none on streams over the cap, which dominates OpenPSS-long β†’ best cloud 0.244 vs flagship 0.891, at ~20Γ— the cost per page.</p>
205
+ <p><b>* bert-pss</b> self-declares ~0.915 accuracy / 0.825 ΞΊ on Tobacco800, but collapses to a single class when actually run (ΞΊ β‰ˆ 0) β€” the only released PSS specialist is non-functional off its exact serving harness.</p>
206
+ <p><b>Metric.</b> Ours &amp; cloud: micro boundary-F1 + ΞΊ over internal pages, identical harness. OpenPSS rows: their published per-stream page-F1 (ballpark-comparable). Tobacco incumbents report accuracy β€” compared via ΞΊ. AI-Lab-Splitter omitted: data gated, absolute F1 paywalled.</p>
207
+ </div>
208
+ </div>
209
+ </body>
210
+ </html>
style.css ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ padding: 2rem;
3
+ font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
+ }
5
+
6
+ h1 {
7
+ font-size: 16px;
8
+ margin-top: 0;
9
+ }
10
+
11
+ p {
12
+ color: rgb(107, 114, 128);
13
+ font-size: 15px;
14
+ margin-bottom: 10px;
15
+ margin-top: 5px;
16
+ }
17
+
18
+ .card {
19
+ max-width: 620px;
20
+ margin: 0 auto;
21
+ padding: 16px;
22
+ border: 1px solid lightgray;
23
+ border-radius: 16px;
24
+ }
25
+
26
+ .card p:last-child {
27
+ margin-bottom: 0;
28
+ }