🚧 草稿版本 Draft — 內容與版面仍在調整中,尚未定稿🚧 Draft — content and layout are still being revised; not yet final
🌐 English edition translated by Claude Opus 5 (High reasoning effort). The Traditional Chinese text is authoritative; where the two differ, the Chinese version governs.
OCF 2026 AI RESEARCH INTERNSHIP · CASE STUDY
開源 VLM 繁體中文 OCR 與文件解析評測
Benchmarking Open-Source VLMs on Traditional Chinese OCR and Document Parsing
這份報告記錄一個為期約 9 週的 AI 研究實習專案:從兩套獨立評測流程出發,追查同模型為何可能得到不同分數,透過消融實驗驗證影響來源,再把結論落實為可重現、可稽核、可長時間無人值守的 VLM 評測系統。
This report documents a roughly nine-week AI research internship project. Starting from two independently built evaluation pipelines, we investigated why one and the same model could end up with different scores, used an ablation study to verify where those differences came from, and then turned the conclusions into a VLM evaluation system that is reproducible, auditable, and able to run unattended for long stretches.
Open-source models evaluated or configured across five stages
01 / PROJECT OVERVIEW
這個分數,值得相信嗎?
Is this score worth believing?
本實習屬於 OCF 2026 AI 研究實習計畫的評測路線,目標是建立一套能回答實務問題的評測方法:當 VLM 被用來處理繁體中文場景文字與整頁文件時,我們要如何控制 prompt、推論參數、後處理、評分器與資料版本,讓不同模型的結果可以被公平比較,也能被後續研究者重現與稽核。
This internship sits on the evaluation track of the OCF 2026 AI Research Internship programme. The goal was to build an evaluation methodology that answers a practical question: when VLMs are used on Traditional Chinese scene text and full-page documents, how should we control the prompt, the generation parameters, the post-processing, the scorer and the dataset version so that results from different models can be compared fairly — and later reproduced and audited by other researchers?
FLAGSHIP FINDING
同一模型、同一資料集,只改評測設定,Exact Match 可從 0% 變成 64.84%。
Same model, same dataset — change only the evaluation settings and Exact Match moves from 0% to 64.84%.
這個結果讓專案重心從「累積排行榜分數」轉為「把設定、來源與例外納入評測系統本身」。後續的 run signature、model digest、dataset fingerprint、evaluator commit 與 raw response 保存,都是由這個方法論問題延伸出的工程設計。
This result shifted the project's centre of gravity from "accumulating leaderboard numbers" to "making configuration, provenance and exceptions part of the evaluation system itself." Everything that followed — run signatures, model digests, dataset fingerprints, evaluator commits and retained raw responses — is engineering that grew out of this one methodological problem.
WHY IT MATTERS
政府公報、判決書、歷史報刊等開放資料常以掃描影像存在;本地可執行的開源 VLM 若能被可靠評估,可降低外部 API 成本與資料外流風險。
Open data such as government gazettes, court judgments and historical newspapers often exists only as scanned images. If locally runnable open-source VLMs can be evaluated reliably, they cut both external API costs and the risk of data leaving the organisation.
Free-form text output from VLM OCR has no single obvious way to score it, unlike multiple choice. Punctuation, whitespace, post-processing and unsolicited explanations can all move the number, so "how we measure" has to be defined first.
The main deliverable is evaluation infrastructure that can be re-run, traced back to its sources, keeps failures visible, and can be handed over to the next researcher. The leaderboard is a by-product.
02 / TEAM & JOURNEY
兩位評測實習生,從兩套獨立流程走向同一套方法論
Two evaluation interns, two independent pipelines, one shared methodology
This report mainly presents the VLM evaluation research carried out jointly by Yu Yu-Tang and Huang Yi-Hsin. The two started from different angles: one traced the score gap by asking how the measurement itself was constructed, the other built reproducible infrastructure by asking how provenance and versions can be traced. The two lines of work finally converged in the ablation study and the formal benchmark runs.
EVALUATION METHOD
游聿堂
建立 eval/:最早的 Ollama VLM 評測流程
設計後處理規則與 EM/CM/ANLS/F1 四項指標
製作互動式 HTML 報告與長時間無人值守執行腳本
首先提出「同模型同資料,為何不同流程會得到不同分數?」
Built eval/, the earliest Ollama VLM evaluation pipeline
Designed the post-processing rules and the four metrics: EM / CM / ANLS / F1
Produced the interactive HTML report and the long-running unattended execution scripts
First raised the question: same model, same data — why do different pipelines produce different scores?
REPRODUCIBILITY & INFRA
黃以信
建立第二套獨立流程 Sixhuang/,形成可比較的對照
完成 7 組 OFAT 消融實驗,共 18,530 次推論
建立 benchmark_suite/ 與 TC-STR_and_OminDoc/ 長時間評測系統
把 model digest、dataset fingerprint、prompt hash、evaluator commit 納入來源追溯
Built a second, independent pipeline Sixhuang/ as a comparable control
The two independent pipelines eval/ and Sixhuang/ computed different scores for the same model on the same data, mixing "model capability" together with "evaluation-pipeline effects" and making it hard to say what a score actually meant. To separate the two, we aligned both pipelines onto a single shared baseline and then used an OFAT ablation study (one setting changed per run) to measure each factor's influence in turn.
GLM-OCR Q8_0
單一模型 × TC-STR 3,706 筆測試資料
One model × 3,706 TC-STR test samples
7 組
variant,5 組需要重新推論、2 組離線重算
variants — 5 required fresh inference, 2 were recomputed offline
18,530
次 Ollama request,API error 數為 0
Ollama requests, with 0 API errors
0% – 64.84%
同模型同資料,EM 隨評測設定變動的區間
Range over which EM moves with evaluation settings, same model and data
Each variant changes exactly one setting relative to the baseline. Full definitions of the four metrics — EM (exact match), CM (whether the ground truth is contained in the output), ANLS (normalised similarity based on edit distance) and F1 (the combined character-level precision and recall score) — are given in section 08.
Dropping the explicit repeat_penalty = 1.6 and reverting to the default raised EM by 17.78 percentage points: 779 items flipped from wrong to right and 120 from right to wrong, a net gain of 659 fully correct answers. 1.6 is probably too high for this model.
The short prompt drove EM and ANLS to zero, yet CM rose to 79.06% — the highest of any variant. The answer was still there in the output; it was just followed by Markdown, explanations, English commentary and a recitation of the prompt, which broke strict matching.
KEY 03
後處理決定了分數能不能看
Post-processing decides whether the score is readable at all
aligned 後處理修改了 3,704/3,706 筆 raw response;同一批輸出換成最小後處理,EM 立刻歸零。目前分數衡量的是「模型+後處理」的系統表現,不是模型原始輸出。
The aligned post-processing modified 3,704 of 3,706 raw responses; feed the same outputs through minimal post-processing and EM drops straight to zero. What the score measures today is the performance of "model plus post-processing" as a system, not the model's raw output.
All 3,706 processed predictions from /api/generate and /api/chat were character-for-character identical, with no difference across the four metrics. A 0.02 s latency gap is not enough to call one faster.
KEY 05
換 scorer,分數就會不一樣
Change the scorer and the score changes
prediction 完全沒變,只換 scorer,EM 就多判 30 題正確(+0.81pp)。差異來自空白/標點正規化與 CM 單向或雙向判定,屬報告層次差異,不是模型變強——跨團隊比分前應先對齊 scorer。
With predictions completely unchanged, swapping the scorer alone marked 30 more items correct (+0.81 pp). The difference comes from whitespace and punctuation normalisation and from whether CM is judged in one direction or both — a reporting-layer difference, not a stronger model. Teams should align scorers before comparing numbers.
Lowering num_predict from 80 to 25 cut mean latency by 51% but also cost 1.03 percentage points of EM: some prompt recitations were truncated into incomplete fragments, which then slipped past post-processing rules written for complete phrases.
—此組合得到 EM 64.84%、CM 82.46%、ANLS 72.08%、F1 76.62%,是本次已測組合中最佳結果,也是後續 benchmark_suite/ 固定推論設定的依據之一。
—The aligned long prompt, num_predict = 80, no explicit repeat_penalty = 1.6, the aligned post-processing, and one scorer agreed across the team. Either /api/generate or /api/chat is fine, but a single evaluation run must stick to one of them.
—This combination yielded EM 64.84%, CM 82.46%, ANLS 72.08% and F1 76.62% — the best result among the combinations tested here, and one of the reasons the later benchmark_suite/ fixed its generation settings the way it did.
Limits on interpretation: this is an OFAT single-factor main-effect analysis, so the deltas in each row cannot simply be added together. It also only describes GLM-OCR Q8, TC-STR and the Ollama environment of the time, and does not necessarily generalise to other models. CM only checks whether the prediction contains the ground truth, so an answer buried inside a mass of wrong content can still score — CM alone should not be used to judge OCR quality. And temperature = 0 does not guarantee character-identical output across Ollama versions, inference backends or hardware.
This is a reproducible evaluation toolkit — anyone re-running it should get the same result — that compares several VLMs on two tasks. Both pipelines use Ollama to load models one after another, feed them the same set of images, and record the scores.
TASK A · TC_STR
繁體中文短文字辨識
Traditional Chinese short-text recognition
辨識圖片中的繁體中文短文字,類似傳統 OCR(光學文字辨識)。資料集為 esun-ai/traditional-chinese-text-recogn-dataset 官方 test split。
Recognise short Traditional Chinese text in an image, much like classic OCR (optical character recognition). The dataset is the official test split of esun-ai/traditional-chinese-text-recogn-dataset.
Convert a whole document page — headings, tables, formulas, multi-column layout — into structured Markdown. Our original notes spelled it OminDocBench; the correct name is OmniDocBench.
核心堅持是「公平比較」:所有模型看到的圖片、提示詞、參數完全一致,不會為表現差的模型偷偷調整。
The core commitment is fair comparison: every model sees exactly the same images, prompts and parameters, and nothing is quietly tuned for a model that is doing badly.
05 / PRINCIPLES
設計原則
Design principles
R1
同題同料
Same items, same inputs
同一場評測,每個模型看到的圖片、提示詞、參數都一樣。
Within one evaluation run, every model sees the same images, prompts and parameters.
R2
一次一張圖
One image per request
每次請求只送一張圖,不批次塞多張。
Each request carries a single image; images are never batched together.
R3
依序換模型
Models run one at a time
測完一個才卸載、換下一個,避免 GPU 記憶體被多模型同時占用。
A model is unloaded before the next is loaded, so GPU memory is never shared between models.
R4
暖機不計分
Warm-up is not scored
模型剛載入時速度不穩,這段 warm-up 的結果不算分。
A freshly loaded model has unstable throughput, so warm-up results are excluded from the score.
R5
保留爛表現
Bad output stays in
答錯、答空白、被截斷都算模型自己的實力,不事後清理答案。
Wrong answers, blank answers and truncated answers all count as the model's own performance; nothing is cleaned up after the fact.
R6
原始回應永久保留
Raw responses are kept forever
不論好壞都存起來,方便日後查證。
Good or bad, every response is stored so it can be checked later.
這樣可以確保分數低是模型能力問題,而不是測試流程出錯造成的誤判。
Together these ensure that a low score reflects model capability rather than a misjudgement caused by a broken test pipeline.
06 / PIPELINE
整體運算流程
The end-to-end pipeline
TC_STR 與 OmniDocBench 都走同一條流程,中間有兩道人工/自動關卡。
TC_STR and OmniDocBench follow the same pipeline, with two gates — one automatic, one human — along the way.
01
準備工作
Preparation
下載資料集、確認模型清單,並用SHA-256記錄每張圖的指紋。
Download the dataset, confirm the model list, and record a SHA-256 fingerprint for every image.
02
Preflight 事前檢查
Preflight checks
確認模型版本、顯示卡是否 100% 由本次評測占用。
Verify the model version and that the GPU is 100% dedicated to this run.
失敗 →
on failure →
BLOCKED
標記後中止,不繼續往下跑
Flagged and aborted; the run does not continue
03
Smoke 小規模測試
Smoke test
TC_STR 取 20 題/OmniDocBench 取 20 頁先跑一次。
A first pass over 20 TC_STR items or 20 OmniDocBench pages.
04
人工檢視結果
Human review of the results
HUMAN GATE
流程不會自動跑到底:smoke 結果須經人工確認沒問題,才進入正式全量評測。
The pipeline does not run all the way through by itself: a person must confirm the smoke results look right before the full evaluation begins.
有問題 ↺
if wrong ↺
退回步驟 02 重新檢查
Return to step 02 and check again
05
操作者手動啟動正式全量評測
The operator starts the full run manually
避免無人監督下產生一堆錯誤結果。
This avoids generating piles of bad results with nobody watching.
06
逐題/逐頁推論
Per-item / per-page inference
寫入 SQLite checkpoint,中斷可續跑。
Progress is written to a SQLite checkpoint, so an interrupted run can resume.
07
正式評分
Official scoring
TC_STR 自行計算;OmniDocBench 使用官方 Docker 評分程式。
TC_STR is scored by our own code; OmniDocBench uses the official Docker evaluator.
If the dataset version, model version, prompt or parameters change in any way, the system treats it as a different evaluation run, and old and new results are never scored together.
07 / ENVIRONMENT
系統環境
System environment
雲端主機
Cloud host
AWS EC2
作業系統
Operating system
Ubuntu 26.04
顯示卡
GPU
NVIDIA L40S
≈45GB VRAM
模型執行工具
Model runtime
Ollama 0.31.1
容器化工具
Containerisation
Docker
鎖定版本
version-pinned
可重建暫存區
Rebuildable scratch storage
關機會消失,但能重新下載,例如資料集本身。
Lost on shutdown but re-downloadable — the dataset itself, for example.
永久保存區
Persistent storage
存放檢查點、原始回應與報告,不因關機消失。
Holds checkpoints, raw responses and reports, and survives shutdown.
08 / TC_STR
TC_STR:繁體中文短文字辨識
TC_STR: Traditional Chinese short-text recognition
The data is the official test split of esun-ai/traditional-chinese-text-recogn-dataset, 3,706 items in total. The prompt tells the model to output only the text it sees in the image, and is character-for-character identical across all models. Settings: temperature = 0, num_predict = 80, 180-second timeout.
5.1 參與比較的 8 個模型
5.1 The 8 models compared
卡片內為參數量與量化方式;標記 MoE 者為混合專家模型。
Each card shows the parameter count and the quantisation format. Models marked MoE are mixture-of-experts models.
Gemma 4 E2B
4.6B
Q4_0
Gemma 4 E4B
7.5B
Q4_0
Gemma 4 12B
11.9B
Q4_0
Gemma 4 26B A4B
25.2B
實際啟用 ≈3.8B
≈3.8B active
Q4_0MoE
Gemma 4 31B
30.7B
Q4_0
GLM OCR BF16
1.1B
F16計分例外scoring exception
GLM-4.6V-Flash 9B
9.4B
Q4_K_M
Kimi-VL-A3B-Instruct
16B
實際啟用 ≈3B
≈3B active
Q4_K_MMoE
5.2 評分指標(皆為越高越好)
5.2 Scoring metrics (higher is better for all four)
Exact Match
答案跟正確答案(ground truth, GT)一字不差才算對。
Counted correct only if the answer matches the ground truth (GT) character for character.
Containment Match
正確答案是否完整出現在模型答案裡(允許多輸出)。
Whether the ground truth appears in full inside the model's answer (extra output is allowed).
ANLS
用編輯距離算相似度,低於 0.5 直接以 0 分計。
A similarity derived from edit distance; anything below 0.5 is scored as 0.
Character F1
拆成單字比對,答對多少、又多打多少,綜合算分。
Compares character by character, combining how much was right with how much extra was produced.
Scoring exception: GLM OCR BF16 sometimes returned perfectly normal text while also reporting done=false and omitting its statistics fields. After manual review, the rule was relaxed for this model only: any returned text is scored, but flagged as "truncation cannot be determined", and its efficiency figures are not comparable with the other models.
09 / OMNIDOCBENCH
OmniDocBench:整頁文件解析
OmniDocBench: full-page document parsing
使用 Hugging Face 的 opendatalab/OmniDocBench,鎖定 v1.6、共 1,651 頁,涵蓋多語言、多欄排版、表格、公式、模糊掃描等情境。提示詞要求輸出整頁 Markdown:保留閱讀順序、表格轉成保留合併儲存格的 HTML table、公式以 LaTeX 表示。
We use opendatalab/OmniDocBench from Hugging Face, pinned to v1.6, 1,651 pages in total, covering multilingual content, multi-column layouts, tables, formulas and blurry scans. The prompt asks for the whole page as Markdown: reading order preserved, tables converted to HTML tables that keep merged cells, and formulas expressed in LaTeX.
Unlike TC_STR, which we score ourselves, this task uses OmniDocBench's official scoring program at a pinned version, run inside a Docker container so the scoring logic cannot drift with the host environment.
↓ 越低越好
↓ lower is better
Text 編輯距離
Text edit distance
純文字與正確答案差多少(正規化後)。
How far the plain text is from the ground truth, after normalisation.
↑ 越高越好
↑ higher is better
Formula CDM
Formula CDM
公式結構與內容是否比對正確。
Whether formula structure and content match correctly.
We also keep the same four supplementary diagnostic metrics used for TC_STR, but label them "not official leaderboard metrics" so they are not confused with the official scores.
Running the full test set with smaller models such as Gemma 4 E2B, roughly 30% of the outputs fall into endless repetition of the answer. Once such output reaches the official matching stage, even the built-in chunked Hungarian algorithm fallback for long inputs hangs and never returns a result.
Why does GLM-4.6V-Flash (9.4B) beat Gemma 4 31B (30.7B)?
針對這個只用約三分之一參數量卻全面勝出的現象,我們額外做了事後查證:先排除「計分方式不公平」的可能——兩模型使用的 prompt、生成參數、後處理規則與 scorer 完全相同,且 GLM-4.6V-Flash 的 EM 與 CM 幾乎相等(落差僅 0.08 個百分點,Gemma 31B 則是 0.54 個百分點),代表領先是真實辨識能力的差距,不是評分方式造成的假象。
A model with roughly a third of the parameters winning across the board deserved a closer look, so we ran a post-hoc check. First we ruled out unfair scoring: both models used identical prompts, generation parameters, post-processing rules and scorer, and GLM-4.6V-Flash's EM and CM are nearly equal (a gap of just 0.08 percentage points, against 0.54 for Gemma 31B). The lead therefore reflects a real difference in recognition ability, not an artefact of how we scored.
Neither model, however, appears in the per-item raw records the project retained, so we cannot break down exactly which kinds of items it won on. Our conjecture is that the likeliest cause is how targeted the training data was: the GLM series is positioned as an OCR / document-understanding product line and very plausibly saw large amounts of structured short-answer text-recognition corpora during pre-training or fine-tuning, whereas Gemma 4 is a general-purpose multimodal model for which OCR is one capability among many. This is purely an inference from the two models' product positioning; we have no direct evidence about training-data composition to confirm it.
事後驗證
POST-HOC CHECK
Gemma 4 26B A4B(MoE,實際啟用≈3.8B)以些微差距超過 31B 稠密模型
Gemma 4 26B A4B (MoE, ≈3.8B active) edges past the 31B dense model
A counter-intuitive result: 26B A4B lists fewer parameters than 31B, is a MoE architecture, and activates only about 3.8B parameters — yet on this short-text OCR task it edges past the dense 31B model, 82.0% to 80.6%. Our conjecture is that short-text OCR is essentially a local-matching task — recognise one short string — so a MoE only needs one or two experts that happen to be good at short-string recognition to lift overall performance, without drawing on the model's full capacity.
The advantage is not stable, though: on the OmniDocBench full-page parsing task in section 10.2 the two models swap places entirely, with 26B A4B losing to 31B by 8.5 points (see the corresponding passage below). That suggests "MoE beats dense with fewer parameters" is a task-dependent one-off rather than a durable architectural advantage.
EM 對比 CM
EM versus CM
0–100% · 越高越好
0–100% · higher is better
EM 完全相符CM 包含比對
EM exact matchCM containment match
GLM-4.6V-Flash 9B
88.4
88.5
Gemma 4 26B A4B
82.0
82.5
Gemma 4 31B
80.6
81.2
Gemma 4 12B
58.9
60.4
Gemma 4 E4B
49.0
49.2
Gemma 4 E2B
43.2
43.8
Kimi-VL-A3B-Instruct
38.5
39.6
GLM OCR BF16
36.7
77.2
GLM OCR BF16 是唯一 EM 遠低於 CM 的模型,落差達 40.5 個百分點。
GLM OCR BF16 is the only model whose EM falls far below its CM — a gap of 40.5 percentage points.
事後驗證
POST-HOC CHECK
GLM OCR BF16 的 EM/CM 落差:復讀,還是別的原因?
The EM/CM gap for GLM OCR BF16: repetition, or something else?
We examined this 40.5-point gap more closely. Because the per-item raw data for the BF16 tcstr_ run was not retained, we substituted the only per-item data available from the same model family (GLM-OCR Q8_0, 3,706 items). There, about 19.8% of outputs (734 items) show "format breakdown" — stray markdown markers or phrase-repetition loops. That subset scores 0% EM but as much as 76% CM, the same gap pattern seen here.
Notably, under the strict definition of "the same phrase repeated consecutively", only 0.24% (9 items) qualify. In most cases the model actually gets the answer right and then rambles on at length in Simplified Chinese, rather than merely skipping like a stuck record. Our conjecture is that this "correct answer, then a drift into another register" behaviour may relate to Simplified and Traditional OCR data being mixed in the training corpus: as output confidence starts to fall and the model enters some uncertain state, it switches to the Simplified register that appears more frequently in training data and keeps generating, instead of getting caught in a single-token loop. This is a plausible reading of the symptom only; we have no data on corpus composition to verify it. We also found that the longer the answer, the higher the rate of format breakdown — rising steadily from 12.85% for single-character answers to 34.99% for 7–10 character answers — which suggests the problem is directly tied to output length.
平均延遲
Mean latency
秒/題 · 越低越好
seconds per item · lower is better
GLM-4.6V-Flash 9B
0.41s
Gemma 4 26B A4B
1.18s
Gemma 4 31B
1.20s
Gemma 4 12B
1.27s
Gemma 4 E4B
1.22s
Gemma 4 E2B
1.16s
Kimi-VL-A3B-Instruct
0.33s
GLM OCR BF16
0.27s
截斷樣本比例
Share of truncated samples
佔 3,706 筆 · 越低越好
out of 3,706 items · lower is better
GLM-4.6V-Flash 9B
0.0%
Gemma 4 26B A4B
0.2%
Gemma 4 31B
0.0%
Gemma 4 12B
0.1%
Gemma 4 E4B
2.9%
Gemma 4 E2B
3.4%
Kimi-VL-A3B-Instruct
12.2%
GLM OCR BF16
54.9%
事後驗證
POST-HOC CHECK
Kimi-VL-A3B 的高截斷率,其實可能與 MoE 無關
Kimi-VL-A3B's high truncation rate may have nothing to do with MoE
Both are MoE models with small active-parameter counts, yet Kimi-VL-A3B's truncation rate (12.2%) is 60 times that of Gemma 4 26B A4B (0.2%). Our initial guess was simply that "MoE guarantees no stability; it depends on each model's training and quantisation quality." The post-hoc check turned up a more concrete lead: Kimi-VL used a third-party (mradermacher) Q4_K_M static quantisation rather than an official Moonshot tag, whereas Gemma 26B A4B was released by Google through the official Ollama channel after QAT (quantisation-aware training). The gap in how "official" the quantisation source is points in exactly the same direction as the gap in stability.
Our conjecture is that official QAT calibrates for the post-quantisation numeric distribution during training itself, so the model still judges accurately when to stop generating even at low precision. Third-party post-hoc static quantisation skips that calibration step, which may make precision-sensitive stop signals particularly prone to going astray — generation runs away and keeps going until it is truncated. This is an inference from how the quantisation processes work: because per-item data was retained for neither model, we cannot compare which kinds of input each is most likely to truncate on, nor verify whether specific expert routing is at fault (Ollama's GGUF inference does not expose routing information at all).
54.9% of samples (2,034 of 3,706) are flagged as truncated. The answer is often buried inside the output — hence the high CM — but format breakdown loses the points under strict matching, hence the low EM.
延伸觀察
Further observations
—推論速度跟架構的關係比參數量更直接:三個非 Gemma 模型延遲都在 0.27~0.41 秒,遠快於所有 Gemma 4(1.15~1.27 秒),可能與量化方式(F16/Q4_K_M vs Q4_0)或推論架構有關。
—Inference speed tracks architecture more directly than parameter count: the three non-Gemma models all sit at 0.27–0.41 s, far faster than every Gemma 4 (1.15–1.27 s). Quantisation format (F16 / Q4_K_M vs Q4_0) or inference architecture may be responsible.
—Kimi-VL-A3B-Instruct is a MoE with few active parameters, yet its anomaly rate is far from low (453 truncations) and its EM only 38.5%. MoE alone guarantees no stability; it still comes down to each model's training and quantisation quality.
Official evaluator scores over the full 1,651-page corpus, ordered by Overall from high to low. Overall draws on just three components: text, table and formula.
Overall 總分排行
Overall score ranking
0–100 · 越高越好
0–100 · higher is better
Qwen3-VL 32B
85.3
Qwen3-VL 4B
75.6
Gemma 4 31B
71.9
InternVL3.5 38B
70.5
InternVL3.5 4B
69.6
Gemma 4 26B A4B
63.4
Gemma 4 12B
37.5
Gemma 4 E4B
26.9
Gemma 4 E2B
17.3
Qwen3-VLGemma 4InternVL3.5
事後驗證
POST-HOC CHECK
10.1 節「MoE 以小勝大」的優勢,在這裡完全消失
The "MoE punches above its weight" advantage from 10.1 vanishes entirely here
In the TC_STR short-text OCR test in section 10.1, Gemma 4 26B A4B (MoE, ≈3.8B active) narrowly beat the dense Gemma 4 31B. On the full-page document parsing task here, the order reverses completely: 26B A4B manages an Overall of just 63.4 against 71.9 for the 31B, losing by 8.5 points.
Our conjecture is that full-page parsing simultaneously demands layout ordering, tables that span blocks, formula recognition and more, which draws on the model's overall capacity — unlike short-text OCR, which only needs local string matching. A MoE activates a small share of its parameters per token, so on a task requiring several capabilities at once it may be unable to bring "all parameters at every layer" to bear on complex layout relationships the way a dense model can. The explanation is plausible, but we have no mechanism-level evidence such as per-page expert-routing records to confirm it. All we can say is that "MoE beats dense" looks like a task-dependent one-off rather than a durable architectural advantage.
四維能力雷達
Capability radar
全部換算為 0–100,越外圈越好
all rescaled to 0–100; further out is better
Text/Order 已由編輯距離換算為準確度(1 − edit)。點選右側模型即可疊圖比較。
Text and Order have been converted from edit distance to accuracy (1 − edit). Select models on the right to overlay them.
選擇要疊圖的模型
Choose models to overlay
Qwen3-VL 32B
Text
88.9
TEDS
78.5
CDM
88.5
Order
79.4
Overall
85.3
Qwen3-VL 4B
Text
85.1
TEDS
67.6
CDM
74.2
Order
75.7
Overall
75.6
Gemma 4 31B
Text
71.4
TEDS
63.2
CDM
81.3
Order
72.4
Overall
71.9
InternVL3.5 38B
Text
74.5
TEDS
57.9
CDM
79.0
Order
71.8
Overall
70.5
InternVL3.5 4B
Text
80.4
TEDS
59.3
CDM
69.3
Order
74.2
Overall
69.6
Gemma 4 26B A4B
Text
62.6
TEDS
55.3
CDM
72.4
Order
64.9
Overall
63.4
Gemma 4 12B
Text
35.6
TEDS
30.1
CDM
46.7
Order
49.8
Overall
37.5
Gemma 4 E4B
Text
28.6
TEDS
20.4
CDM
31.7
Order
45.1
Overall
26.9
Gemma 4 E2B
Text
19.9
TEDS
6.8
CDM
25.2
Order
37.3
Overall
17.3
#
MODEL
OVERALL↑
TEXT EDIT↓
TEDS↑
CDM↑
ORDER↓
1
Qwen3-VL 32B
85.31
0.111
0.785
0.885
0.206
2
Qwen3-VL 4B
75.62
0.149
0.676
0.742
0.243
3
Gemma 4 31B
71.93
0.286
0.632
0.813
0.276
4
InternVL3.5 38B
70.47
0.255
0.579
0.790
0.282
5
InternVL3.5 4B
69.64
0.196
0.593
0.693
0.258
6
Gemma 4 26B A4B
63.43
0.374
0.553
0.724
0.351
7
Gemma 4 12B
37.46
0.644
0.301
0.467
0.502
8
Gemma 4 E4B
26.89
0.714
0.204
0.317
0.549
9
Gemma 4 E2B
17.32
0.801
0.068
0.252
0.627
KEY 01
Qwen3-VL 32B 全面領先
Qwen3-VL 32B leads across the board
Overall 把第二名拉開近 10 分,表格 TEDS 與公式 CDM 都是九個模型中最好的。
Its Overall opens a near-10-point lead over second place, and it posts the best table TEDS and formula CDM of all nine models.
KEY 02
Gemma 4 幾乎與參數量成正比
Gemma 4 scales almost in proportion to parameter count
從 E2B(17.3)一路爬到 31B(71.9),沒有中途停滯,顯示文件解析能力很吃模型規模。
It climbs steadily from E2B (17.3) all the way to 31B (71.9) with no plateau along the way, showing that document parsing depends heavily on model scale.
KEY 03
小模型不一定輸大模型
Small models do not necessarily lose to large ones
—Gemma 4 E2B's table TEDS is only 0.068 — effectively "cannot read tables at all". Scaling the same family up to 31B only reaches 0.632, so table-structure understanding is especially hard for small models.
—Formula CDM is generally the relatively strongest metric across all nine models; even the smallest, E2B, reaches 0.252. We suspect this relates to the comparatively fixed structure of LaTeX notation.
—Both Qwen3-VL 4B and InternVL3.5 4B post a higher Overall than the nominally larger Gemma 4 26B A4B (63.4): architecture and training-data quality sometimes matter more than the parameter count on paper.
事後驗證
POST-HOC CHECK
Gemma 4 E2B 表格分數崩到 0.068,真的是「版面類型」造成的嗎?
Gemma 4 E2B's table score collapses to 0.068 — is layout type really the cause?
We initially guessed that particular layout types — tables spanning pages, merged cells, multi-column text — were behind E2B's especially low table score. The post-hoc check found this hypothesis currently untestable: although the official OmniDocBench annotations define layout sub-category fields, all 665 actual table annotations are empty, so even upstream never filled the classification in. Stratifying instead by the substitute fields available — page layout type, table count, bbox size — produced a counter-intuitive finding: pages containing tables are in fact more often single-column than pages overall (65.5% versus 53.7%), with a smaller multi-column share, the opposite direction from the intuition that multi-column layout is the main cause.
我們反而在原始報告的除錯紀錄裡找到另一條線索:小模型(含 E2B)約有三成輸出會出現復讀,導致官方 matching 演算法連同備援機制一起卡死。我們推測,表格輸出需要模型同時維持大量 HTML 標籤(如 <td>、<tr>、colspan)的巢狀結構,token 密度和語法複雜度都比連續段落文字高出許多;如果小模型本來就有「長輸出容易復讀」的傾向,這種結構化、重複性標籤特別多的輸出格式,可能比一般段落文字更容易誘發復讀迴圈,進而拖累 TEDS 分數。不過這個解釋把兩條線索接在一起,目前沒有逐頁資料能證實表格輸出的復讀率是否真的比其他內容類型更高,仍屬推論。
Instead we found another lead in the debug log of the original report: roughly 30% of small-model outputs (E2B included) fall into repetition, hanging the official matching algorithm along with its fallback. Our conjecture is that table output requires the model to maintain a large nested structure of HTML tags — <td>, <tr>, colspan and so on — at far higher token density and syntactic complexity than continuous prose. If small models already tend to repeat on long outputs, this heavily structured, tag-repetitive format may trigger repetition loops more readily than ordinary paragraphs, dragging the TEDS score down with it. This explanation does splice two leads together, though, and with no per-page data we cannot confirm whether table output really does repeat more often than other content types. It remains a conjecture.
事後驗證
POST-HOC CHECK
公式 CDM 對規模「相對」不敏感,但原因跟原本想的不完全一樣
Formula CDM is "relatively" insensitive to scale — but not quite for the reason we assumed
The original report suggested the relatively fixed structure of LaTeX notation made formula scores less sensitive to model scale. We first tested a competing hypothesis: might the formulas in the test set simply be easy, producing a ceiling effect? Stratifying the 2,066 officially annotated formulas by complexity showed otherwise — only 27.9% are simple, while over 42% contain matrix structures or dense LaTeX commands. The test set is not easy, so the ceiling hypothesis does not hold.
Quantifying the comparison did confirm that CDM is relatively less sensitive than table TEDS: the smallest-to-largest model score ratio for CDM is 28.5% (E2B's 0.252 over Qwen3-VL 32B's 0.885), clearly above the 8.7% for table TEDS (0.068 over 0.785). But CDM still rises monotonically with model scale rather than tracing a genuinely flat line, so the claim that it is "unaffected by scale" is itself somewhat overstated. Our conjecture is that, since the test set is not easy, the more defensible explanation still returns to LaTeX notation having highly localised, recurring visual patterns — the fixed way fraction bars, radicals and sub/superscripts are written. Even a small model with weak overall semantic understanding can recognise these by local pattern matching, provided it saw enough mathematical-symbol OCR data in pre-training. Tables, by contrast, require the model to track column alignment and cross-cell relationships over a much wider span, and that kind of long-range spatial reasoning clearly depends far more on model capacity. This too is an inference from the nature of the task; per-formula scores stratified by complexity would be needed to really confirm it.
The README deliberately avoids hard-coding in-progress scores into the documentation; the authoritative numbers are the reports in each run's output directory. The tooling also produces:
互動式比較報告(HTML)
An interactive comparison report (HTML)
可依任何指標排序、篩選「表現最好/最差/隨機抽樣」的頁面,快速找出模型的弱點情境。
Sortable by any metric, with filters for best / worst / random-sample pages, so a model's weak scenarios surface quickly.
Success rate, API failure count, retry count, blank-output count and mean latency — separating model-capability problems from systems-engineering problems.
逐頁/逐題原始紀錄
Per-page / per-item raw records
模型原始回答完整保留,供之後追查或人工複核。
The model's raw answers are retained in full for later investigation or manual review.
11 / ENGINEERING CHALLENGES
工程挑戰的核心:如何讓分數可信
The core engineering challenge: making a score trustworthy
The three cases below best capture the research-engineering character of this internship. All three are rooted in experimental design and directly affect whether a score can be interpreted at all — they are not merely coding mistakes.
Differing short prompts, post-processing and scorer definitions mixed "model capability" together with "evaluation-pipeline effects".
Action
先對齊共同 baseline,再一次只改一個變因;7 組 variant,其中 5 組重新推論。
Align both onto a shared baseline first, then change one factor at a time: 7 variants, 5 of which required fresh inference.
Outcome
證實單一設定即可讓 EM 產生巨大變化,後續系統因此把 effective config 當成實驗身分的一部分。
Proved that a single setting can swing EM enormously, which is why later systems treat the effective config as part of an experiment's identity.
CHALLENGE 02 · OFFICIAL EVALUATOR
模型復讀讓 OmniDocBench matching 階段卡死
Model repetition hangs the OmniDocBench matching stage
→ DEBUG UPSTREAM
Problem
小模型約有三成輸出出現長篇復讀,官方 matching 流程連長輸入備援機制也可能一起卡住。
Roughly 30% of small-model outputs run into long repetitions, and the official matching stage can hang along with its long-input fallback.
Action
將參數 temperature 從 0 調整成 1,發現可大幅度減少長篇復讀的問題。同時保存 raw output、對照官方 issue #228,將 match_workers 由 4 降至 1;並以 smoke test 驗證生成設定。
Raising temperature from 0 to 1 substantially reduced the long-repetition problem. We also retained the raw output, followed upstream issue #228 to lower match_workers from 4 to 1, and validated the generation settings with a smoke test.
Outcome
evaluator 得以穩定完成;模型復讀仍保留為模型失敗證據,而不是用事後清洗把問題藏掉。
The evaluator now completes reliably, and model repetition is kept as evidence of model failure rather than scrubbed away after the fact.
CHALLENGE 03 · PROVENANCE
同名模型、不同版本與第三方量化,結果還能算同一個模型嗎?
Same model name, different version, third-party quantisation — is it still the same model?
If a model tag, dataset revision or evaluator commit changes quietly, old and new results can end up wrongly mixed together.
Action
resume key / run signature 納入 model digest、dataset fingerprint、prompt hash 與 dependency lock;第三方 GGUF 另存來源與風險。
The resume key and run signature incorporate model digest, dataset fingerprint, prompt hash and dependency lock; third-party GGUF builds have their source and risks recorded separately.
Any difference in a key setting counts as a new experiment and never runs against old data, and every score can be traced back through metadata to the conditions it was actually produced under.
eval/, ablation_experiment/, benchmark_suite/ and TC-STR_and_OminDoc/, covering short-text OCR, full-page parsing and multi-model comparison.
02 · REPRODUCIBILITY METADATA
讓結果具備來源證明
Results that carry proof of provenance
run manifest、dataset manifest、model digest、prompt hash、version pinning、protocol exceptions,避免「同名但不同實驗」被混為一談。
Run manifests, dataset manifests, model digests, prompt hashes, version pinning and protocol exceptions, so that experiments sharing a name but differing in substance are never conflated.
03 · EVIDENCE & REPORTS
原始證據與互動式成果
Raw evidence and interactive output
raw response、逐筆 CSV/JSON/SQLite、消融結果與自包含 HTML 報告,讓結論可以被人工複核,而不是只剩最後一個百分比。
Raw responses, per-item CSV / JSON / SQLite, ablation results and self-contained HTML reports, so conclusions can be checked by a human instead of collapsing into one final percentage.
Methodology, metrics, version pins, model provenance, runtime environment and exception records are all written down, reducing the risk that the research exists only in its original authors' memories.
復讀、截斷、metadata 缺失與 evaluator hang 不該被靜默清除;留下它們,才能知道系統真正的使用邊界。
A benchmark score is the product of the whole pipeline
Model, prompt, generation options, post-processing and scorer can all move the result. Before comparing models, confirm that the measurement is aligned.
Reproducibility is not an appendix
A long-running benchmark has to be designed from the start with resume, version identity, anomaly logging and raw-output retention — not documented after the run is over.
Failure cases are research data in their own right
Repetition, truncation, missing metadata and evaluator hangs should not be silently cleared away. Keeping them is how you learn where the system's real limits are.
後續事後驗證:六個假說的結果(詳見 10.1/10.2 各圖表下方的「事後驗證」區塊)
Follow-up post-hoc checks: results for six hypotheses (see the "post-hoc check" blocks below the charts in 10.1 and 10.2)
—Not one of the six hypotheses could be fully confirmed. The root cause is that the per-item and per-page raw outputs of the TC_STR bench and OmniDocBench were never committed to the repository — only the aggregate scores were. Which rather proves the lesson above: reproducibility is not an appendix.
—The most important correction: Gemma 26B A4B's "small beats large" holds only on the TC-STR short-text task. On OmniDocBench full-page parsing it loses to the 31B by 8.5 points. This is a task-dependent one-off, not a durable MoE advantage.
—Kimi-VL's instability was originally blamed on the MoE architecture. Contrary evidence overturned that guess and pointed instead to the better-grounded lead of a third-party, unofficial quantisation.
—GLM-4.6V-Flash beating Gemma 31B is not a scoring artefact — that much is ruled out — but why it wins, at the level of architecture or training data, remains unsolved, pending the per-item data needed to check it.
The core value of this project is a rigorous, reproducible, auditable evaluation method; which model is stronger is a by-product along the way. The approach: fix the data, the prompts and the generation settings, and pair them with hash fingerprints, version pinning, checkpoints and exception records, so that every score can be traced back to the specific conditions that produced it. This cannot eliminate every benchmark bias, but it does make the non-model factors in this comparison more transparent, and it tells later researchers which results are comparable and which come with caveats attached.
GLM OCR BF16 must be read alongside its exception rule Because completion metadata was missing, relaxed scoring was applied, so its EM/CM gap and truncation rate are not on exactly the same footing as the other seven models.
Some models are community conversions InternVL3.5 (4B / 38B) are community-converted GGUF quantisations, whose performance may differ from the official native builds.
MoE "active parameter" figures are estimates The active-parameter counts given for Gemma 4 26B A4B and Kimi-VL-A3B-Instruct are conceptual estimates, not official exact figures.
Sampled reports and full-corpus results are not interchangeable The interactive comparison report takes only 5 best, 5 worst and 5 random pages (15 in total); this page uses the official scores over the full 1,651-page corpus.
Cross-environment reproducibility has limits Even with temperature=0 fixed and digests and dataset versions pinned, a change of Ollama version, driver or hardware still does not guarantee character-identical output.
Error analysis of GLM OCR BF16's anomalous samples Review the 2,034 truncated samples item by item to establish which kinds of text — long sentences, dense small print, unusual symbols — most readily trigger repetition.
Detailed analysis of the weakest sub-metrics For small models' table TEDS, identify which layouts (page-spanning, merged cells, multi-column) are losing the points.
A finer repeat_penalty sweep and interaction testing The ablation in section 03 showed 1.6 to be clearly harmful but did not locate the optimum, and the interactions among prompt, post-processing and num_predict remain untested — OFAT cannot capture those interaction effects.
Consolidation into a continuously updated dashboard Merge the interactive comparison report with the static charts, so a newly evaluated model folds into the comparison automatically.
14 / ACKNOWLEDGEMENTS
致謝
Acknowledgements
[佔位符:致謝內容待補— 感謝在這次實習期間提供指導、協助與資源支持的師長、夥伴與單位。]
[Placeholder: acknowledgements to be completed — with thanks to the mentors, colleagues and organisations who provided guidance, help and resources over the course of this internship.]
This English edition was translated from the Traditional Chinese original by Claude Opus 5 (High reasoning effort). Numbers, model names, identifiers and code paths are carried over verbatim; where any wording diverges, the Traditional Chinese version is authoritative.