在本教程中,我們動手復現並審計 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 重取樣,給出每個解析器名次的置信區間,結果顯示前兩名在統計上無法區分。按文件型別切片後,多數切片的第一名與總榜不同,說明單一總分會掩蓋解析器在不同文件上的強弱差異。