在本教程中,我們動手復現並審計 OmniParseBench——Datalab 面向文檔解析器發佈的開源基準。它用 16,288 個細粒度的通過/失敗小測試來評判解析器的輸出,這些測試覆蓋 2,937 個頁面,內容從掃描表單、手寫體,到 arXiv 數學公式和密集表格。與其直接相信排行榜,我們根據 Datalab 為 27 個解析器發佈的判定結果從頭重建榜單;在此之前,先給打分器喂入一張手工構造的頁面,觀察哪些錯誤會真正翻轉某個判定。隨後我們量化排名的確定性,按文檔類型做切片,檢驗模型卡中列為參與構建測試的兩個模型在被模型修正過的測試上表現是否不同,並自行在一個 50 頁樣本上運行 Tesseract 和 Indra OCR。過程中我們發現:排名前兩位的解析器在統計上打平,多數切片上第一名都會易主,而發佈會上的一個數字與已發佈的文件不一致。
安裝環節,我們把 omni-parse-bench 固定到 1.0.0rc1,因為直接 pip install 仍會解析到 0.2.0,那是 API 不同的舊版本。benchmark extra 會帶來解析器適配器、Hugging Face 客户端以及用於 manifest 的 pyarrow;在 Colab 上我們通過 apt 額外安裝 Tesseract 及其腳本模型。我們同時把數據集固定到一個 commit,因為隨着解析器增加,倉庫會不斷變動。打印測試家族可以看出基準的結構:present、order 和 repeat 構成文本家族,table_cell 構成表格家族,layout_kind 構成版面家族。
在信任分數之前,我們先弄清判定的含義:手工為一張虛構頁面編寫 gold 文件,其中包含十三個測試,並用基準自身使用的 unit_tests.score 來評分。一個基礎預測全部通過,而每個變體只改動一處。一個字母的拼寫錯誤、丟失的負號、公式中不同的符號、交換的標題以及被錯標類型的區塊,各自恰好翻轉一個測試為失敗,並附帶原因。對照組仍然通過:大小寫、去掉千位分隔符以及用 dfrac 替代 frac,因為文本會被歸一化摺疊,公式則在 KaTeX 渲染後進行比較。
數據集中包含 16,288 個測試。我們通過 snapshot_download 拉取 manifest.parquet、gold 目錄、results.parquet 和 README,只下載需要的文件,然後用 data.read_manifest 讀取頁面與 gold 測試,逐頁統計每個測試家族和測試類型的數量,以便把排行榜的數字放回它真實的結構裏。這一過程還讓我們能夠核對發佈聲明與實際文件中的記錄是否一致,並發現其中一處數字對不上。排名確定性方面,我們在文檔級別做 bootstrap 重採樣,給出每個解析器名次的置信區間,結果顯示前兩名在統計上無法區分。按文檔類型切片後,多數切片的第一名與總榜不同,説明單一總分會掩蓋解析器在不同文檔上的強弱差異。