2026年,一個叫Kunat Pipatanakul的研究者面對一個很尷尬的局面:泰語文檔遍地都是,但能用來訓練AI識別泰文的標註數據少得可憐。
這不是小事。
泰文有自己獨特的字母系統,聲調符號和元音符號能疊在輔音上下好幾層,這意味著你沒法像訓練英文或中文OCR那樣,直接把已有的模型拿過來微調一下就能用。
想讓機器讀懂泰文文檔,你得從頭教它認識每一個字符,而教材,也就是那些"圖片配對應文字"的標註數據,卻嚴重短缺。
更麻煩的是,現有的解決辦法都不太可靠。用PDF直接提取文字,經常會漏掉字符,還會把聲調符號的順序搞亂。用OCR做偽標籤,同樣容易出錯。人工校對倒是準確,但成本高得離譜,不可能覆蓋海量文檔。
這篇論文要回答的問題很直接:如果沒有真實的標註數據,只靠"合成"出來的假數據訓練模型,泰文OCR能做到多好?
這個問題看似簡單,但裡面藏著一個更深的坑:什麼樣的"假",才能讓AI學到"真"本事?
**為什麼"逼真"這個詞本身就是個陷阱**
在深入之前,得先說清楚一件容易被忽略的事。
合成數據*:用程序自動生成的、帶有精確標註的訓練數據,比如讓電腦自己"畫"出一頁文檔並同時記錄每個字符是什麼、在哪個位置。
很多人以為,合成數據要做得"逼真"就行了,看起來越像真實文檔,效果就應該越好。
但這篇論文戳破了這個想當然的假設。"逼真"其實是好幾個完全不同的因素捆在一起的模糊說法:文檔來自什麼領域、頁面上除了文字還有什麼背景元素、用的什麼字體、文字在頁面上怎麼排布、手寫字跡是真人寫的還是電腦仿造的。
這些因素混在一起討論"逼真不逼真",就像醫生說"你這個人不太健康"卻不說清楚是心臟問題還是血糖問題,聽起來是個判斷,但完全沒法指導治療。
研究團隊決定把這些因素一個個拆開,單獨測試每一個到底有沒有用。
這才是這篇論文真正有價值的地方,不是簡單地說"合成數據有效",而是精確地告訴你,合成數據里哪個部分在起作用,哪個部分其實是擺設。
拆解合成數據:一套可以精確控制變量的"文檔重建"流水線
研究團隊設計了一套叫做文檔重建的方法。
思路是這樣的:拿一份真實存在的文檔,可能是泰文的,也可能是英文的,保留它原本的頁面布局、文字區域的位置,然後把區域裡的原始文字擦掉,重新填入你想要的文字內容,再用你指定的字體或手寫筆跡渲染出來。
這套流程的關鍵在於,它能把"文檔從哪個領域來"、"背景里有沒有非文字內容"、"用了幾種字體"、"文字是否保留二維排布"、"手寫筆跡是電腦仿的還是真人寫的"這五個變量,一個一個單獨打開或關閉,其他條件全部保持不變。
這就像做菜實驗時控制變量。你想知道到底是鹽放多了還是火候不對導致這道菜難吃,唯一辦法就是每次只改一個變量,其他全部鎖死,做出十份菜來對比。如果你同時改了鹽量、火候、下鍋順序,最後菜難吃了,你根本不知道該怪誰。
如果不做這種拆解,直接把一整套"看起來很真實"的合成數據扔給模型訓練,效果好也好不到點子上,效果差也不知道該往哪改。
文檔重建*:一種數據生成技術,保留原始文檔的版式結構和文字區域標註,把區域內的文字替換為新內容並重新渲染,從而在保持真實版式的同時獲得精確的文字標註。
圖1里詳細畫出了這套流程。簡單說分三步:第一步,如果源文檔是泰文的,直接用它原本的OCR標籤;如果是英文的,就翻譯成泰文。第二步,把原來的文字像素擦掉,用HarfBuzz這個文字排版引擎把新的泰文文本按照原區域的形狀"塑形",因為泰文翻譯後長度經常和英文原文對不上,聲調符號還可能占據多個垂直層級,所以要不斷縮小字號直到能塞進原來的框裡,塞不下就直接放棄這一頁。第三步,把處理好的文字渲染回原來的區域,可以用採樣出來的字體,也可以用真實手寫筆跡的字形。
HarfBuzz*:一個開源的文字整形引擎,能把文字按照特定語言的排版規則(比如泰文聲調符號的垂直堆疊)正確渲染出來。
這套流水線生成了兩種數據源:一種叫域內合成,直接用真實泰文文檔做底子,只是把文字擦了重寫;另一種叫域外合成,用公開的英文文檔(比如DocLayNet、Crello、PubTabNet這幾個數據集)做底子,把文字翻譯成泰文後重新渲染。
訓練粒度決定了什麼數據管用:頁級和裁剪級的分野
在講實驗結果之前,得先弄清楚這篇論文裡反覆出現的一個關鍵區分:頁級訓練和裁剪級訓練。
頁級訓練*:模型一次看整張文檔圖片,輸出整頁所有區域的文字和排版資訊。
裁剪級訓練*:模型只看一個被裁剪出來的小區域(比如一段文字、一個表格),單獨識別這個區域的內容,頁面的其他區域由一個專門的版面檢測器先框出來再逐一餵給模型。
這個區別聽起來只是技術實現上的差異,但實驗結果顯示它徹底改變了"哪種合成數據更好用"這個問題的答案。
以Heldout測試集(301頁真實泰文印刷文檔)為例,在頁級訓練下,用域內合成數據訓練出來的模型,字符錯誤率的中位數是1.82%,而用域外合成數據訓練出來的模型是5.07%,域內數據明顯更好。
但換成裁剪級訓練,情況完全反轉:域內合成數據的字符錯誤率中位數飆升到15.59%,而域外合成數據反而只有5.52%。
字符錯誤率*:衡量OCR識別準確度的指標,指模型輸出的文字和真實文字之間需要修改多少個字符才能對齊,數值越低說明識別越准。
這個反轉很反直覺。按理說,用真實泰文文檔做底子生成的"域內"數據,應該處處比用英文文檔翻譯來的"域外"數據更貼近真實場景才對,怎麼會在裁剪級訓練下反而變差?
論文裡坦誠承認,這個現象的具體原因還不清楚,需要進一步研究。但這恰恰說明了一件事:合成數據的效果不是一個孤立的屬性,它和你打算怎麼用這批數據是綁在一起的。同一份數據,換個訓練方式,結論可能完全不一樣。
這就好比同一把螺絲刀,用來擰螺絲很好用,但你要是拿它去撬東西,可能比一根鐵棍還差。工具好不好,從來不是脫離使用場景孤立評價的。如果你不問清楚"用在哪個場景"就直接下結論,很可能得出錯誤的最優選擇。
背景噪聲不重要,字體多樣性和二維排布才是真功夫
回到最基礎的那個拆解實驗,研究團隊想搞清楚,在域外合成數據里,去掉背景、去掉字體多樣性、去掉二維排布,分別會造成多大的傷害。
結果顯示,去掉非文字的背景內容(比如把整個頁面背景換成純白色,只保留文字區域),對識別效果幾乎沒有一致性的影響,中位數誤差變化最多只有1.62個百分點,有時候甚至變得更好。
這個結果有點出乎意料。直覺上你可能會覺得,背景越豐富,模型見識的場景越多,應該越有幫助。但數據擺在那,背景噪聲這個因素基本是個擺設。
真正造成明顯傷害的是去掉字體多樣性。在頁級訓練下,Handwriting測試集(200頁真實手寫泰文筆記本照片)的中位數誤差從43.99%飆升到49.86%,Easy Handwriting(更易讀的手寫子集)從38.90%漲到47.55%。裁剪級訓練下傷害更大,分別漲了11到13個百分點。
而在印刷體的Heldout測試集上,去掉字體多樣性造成的傷害就小得多,只有0.56到2.15個百分點。
這說明什麼?字體多樣性這個因素,對手寫體識別的幫助遠大於對印刷體識別的幫助。原因也不難理解,印刷字體本身變化空間有限,模型見過幾種主流字體基本就夠用了,但手寫體的風格千變萬化,如果訓練數據里只有一種或幾種"仿手寫字體",模型學到的其實是某個特定字體的樣子,遇到真實的、五花八門的手寫風格就懵了。
接著去掉二維排布,把原本按頁面結構分布的文字區域改成豎著一行行堆疊,手寫體的誤差又進一步惡化。在裁剪級訓練下,Heldout的中位數誤差從7.01%跳到9.60%,頁級訓練下倒是幾乎沒變。
排布結構和字體多樣性,像是兩把不同的鑰匙,各自對應著模型能不能應付真實世界裡複雜多變的文檔。背景噪聲更像是裝飾品,有沒有都不太影響事情的本質。
合成數據能有多接近真實標註?答案取決於你問的是"典型情況"還是"極端情況"
接下來一個關鍵問題是,把合成數據和真實標註數據直接放在一起對比,差距到底有多大。
研究團隊用頁級訓練比較了三種數據源在Heldout測試集上的表現:域外合成數據、域內合成數據,以及直接用真實泰文印刷文檔訓練的模型。
結果是這樣的:真實印刷文檔訓練出來的模型,中位數誤差是1.31%,域內合成數據是1.82%,兩者只差0.51個百分點。這說明就"典型的一頁文檔"而言,合成數據幾乎能追上真實數據的水平。
但如果換成看平均誤差(把所有字符的錯誤加總除以總字符數,會被長文檔和難例拉大權重),真實數據是9.79%,域內合成數據是16.20%,差距一下子拉大了。
這個反差揭示了一個很重要的道理:合成數據擅長應付大多數"正常"頁面,但在遇到極端困難的、罕見的情況時,會顯得力不從心。真實數據里那些"疑難雜症",恰恰是合成流水線難以憑空造出來的。
這就好比你訓練一個新司機,讓他在模擬器里開了幾百小時,日常路況處理得遊刃有餘,中位數表現很好。但真正的馬路上偶爾會出現罕見的極端情況,比如突然竄出來的行人、結冰路面上的失控車輛,這些場景模擬器很難完全覆蓋。平均下來,模擬器訓練出來的司機在這些極端場景里的表現,還是會比真實路況訓練出來的司機差一截。
手寫體測試的結果更有意思。域內合成數據和真實印刷數據在Handwriting測試集上的表現幾乎一樣,36.27%對36.14%,說明用真實泰文印刷頁面做底子重建出的合成數據,已經能捕捉到大部分從"真實印刷監督"遷移到手寫識別的能力。
但只要一加入真實的手寫訓練數據(Real Thai Print + Handwriting),誤差直接降到26.05%,Easy Handwriting更是降到20.79%。這說明真實手寫筆跡里,有一種合成印刷體數據無論如何都補不上的"變化性",這個缺口不是靠"文檔領域匹配"就能填平的,它指向了手寫本身的筆畫差異。
手寫渲染的最後一公里:字體仿造 vs 真實筆畫拼接
既然發現了手寫體是最大的短板,研究團隊接著做了一個更細緻的實驗:到底是"用手寫風格的字體渲染"就夠了,還是必須"用真人寫的筆畫拼接"才能進一步縮小差距。
這裡出現了兩種渲染方式。一種叫手寫字體渲染,從693種字體家族裡挑出帶手寫風格的字體來渲染文字,相同字符用同一套字體會共享同一個筆畫輪廓。另一種叫真實字形渲染,直接從一個真人手寫筆跡庫里,為每個字符隨機抽取一個真實寫出來的筆畫實例,同一個字符在不同位置可能用不同人寫的不同筆跡。
真人手寫筆跡庫*:論文中提到的一個包含5953個實例、覆蓋76個字符類別的圖像庫,這些圖像是從真實的泰文手寫筆記本照片和公開手寫數據集中,通過目標檢測、OCR對齊、視覺語言模型驗證等多道工序篩選提煉出來的。
結果顯示,僅僅換成手寫風格字體,就已經能明顯改善手寫識別,Handwriting測試集的中位數誤差從43.99%降到38.65%。但如果進一步換成真實筆畫拼接,誤差繼續降到37.91%,Easy Handwriting更是從34.84%降到30.66%。
這個差異證明了一件事:手寫風格的字體只是"看起來像手寫",但同一個字符每次出現都長得一模一樣,這和真實世界裡同一個人寫同一個字、每次筆畫都有細微差別,是完全不同的兩回事。真實筆畫拼接把這種"人寫字的不確定性"帶了進來,模型因此學到了更接近真實場景的變化模式。
但即便用了真實筆畫拼接,距離真正用真實手寫數據訓練的模型(26.05%)還是有一段差距。論文裡提到,這個真人筆跡庫目前只有5953個實例,數量還不算大,如果擴充這個庫的規模,效果可能還能進一步提升,但這個問題留給了未來的研究。
把發現落地:Wayu-Paxa-OCR-Zero,一個完全沒見過真實泰文標註的模型
有了這些拆解出來的經驗,研究團隊把它們整合起來,訓練出一個真正拿得出手的模型,叫Wayu-Paxa-OCR-Zero。
這個模型的基礎是PaddleOCR-VL-1.6,一個0.9B參數(約9億參數)的視覺語言模型,研究團隊在它之上,用45723頁完全合成的數據做了訓練。
這裡有個細節值得強調:訓練數據里沒有一張真實泰文文檔的圖片被當作源頁面,所有的字符標註都來自合成流水線的輸出、源區域標註,或者已知的模板和欄位字符串。也就是說,這個模型是徹頭徹尾靠合成數據"無中生有"訓練出來的。
具體數據構成上,研究團隊做了三點擴展。第一,把之前研究中7131張手寫頁面的兩種渲染版本(手寫字體版和真實字形版)都保留下來一起訓練。第二,額外加入兩批專門針對手寫的合成頁面,一批是3000張全用手寫字形渲染的DocLayNet頁面,另一批是999張直接把真人手寫數據集裡裁剪出來的圖片貼進去的合成頁面。第三,加入2190份從公開的CommonForms模板重建出來的填寫表格,表格里的欄位數量特意匹配了真實泰文表格的常見規格,用來補上表格類文檔這一塊的覆蓋。
訓練完成後,效果對比非常直觀。相較於基礎模型PaddleOCR-VL-1.6,Wayu-Paxa-OCR-Zero把Heldout測試集的中位數字符錯誤率從6.64%降到1.24%,Handwriting測試集從74.87%降到20.55%,Easy Handwriting從73.74%降到14.18%。
更值得說的是,這個只有0.9B參數、完全靠合成數據訓練的模型,在全部五個評測集上都超過了Typhoon OCR的7B版本,也就是那個當時被認為代表泰文OCR開源領域最高水平的模型。
Typhoon OCR是什麼?它是此前泰文OCR開源領域的標杆模型,由傳統OCR、視覺語言模型重構和精心策劃的合成數據混合訓練而成,訓練管線更複雜,模型規模也更大(7B參數是Wayu-Paxa-OCR-Zero的近8倍)。
不過公平地說,Wayu-Paxa-OCR-Zero和更小的Typhoon OCR 1.5(2B參數)版本相比,在Handwriting測試集上打了個平手(20.55%對19.36%),在SEA-DocBench(一個東南亞文檔理解基準)上反而更好(4.86%對5.81%),但在Heldout、Easy Handwriting和ThaiOCRBench上還是略遜一籌。而谷歌的Gemini 3.7 Flash這類大型商業閉源模型,在大部分內部測試集上依然是最強的。
這個對比說明,合成數據訓練出來的模型已經具備了相當的競爭力,能在參數量遠小於對手的情況下打贏一場硬仗,但這不代表合成數據本身天生就比真實數據更優越。它只是證明了,如果沒有真實標註可用,合成數據這條路是走得通的,而且能走得相當遠。
寫在後面
讀完這篇論文,最讓我意外的不是那個"Wayu-Paxa-OCR-Zero打贏了7B模型"的結果,而是那個裁剪級訓練下域內合成數據反而變差的反轉。
論文作者自己都沒能解釋清楚原因,只是老老實實寫下"這個現象的原因尚不清楚,值得進一步研究"。這種坦誠其實挺難得的,很多論文遇到解釋不了的結果,要麼繞開不提,要麼硬湊一個聽起來合理的解釋。這篇論文選擇把疑惑擺出來,反而讓人更相信這些數據是真的。
還有一個細節,字體多樣性對手寫識別的影響,比對印刷體識別的影響大得多,這個發現背後其實藏著一個更普遍的道理:當你的目標場景本身就充滿變化(比如手寫體因人而異),你的訓練數據就必須提供同等量級的變化,否則模型學到的只是某種"假象的多樣性"。這個邏輯其實可以推廣到很多其他領域,不只是OCR。
論文裡那個真人手寫筆跡庫的構建過程也值得單獨說一句,從570萬個候選字形候選框,一路篩選、比對、驗證,最後只留下12090個被視覺語言模型確認過的實例,再精選出5953個組成最終的庫。這個漏斗式的篩選比例,某種程度上說明了"真實"這個東西有多難獲取,哪怕只是想要幾千個乾淨的手寫字形樣本,背後也要經過這麼多道工序的過濾。
這篇論文沒有解決的問題也很明顯,那個真人筆跡庫的規模還太小,只覆蓋了76個字符類別,如果泰文里有更生僻的字符組合沒被覆蓋到,模型遇到時大概率還是會露怯。合成數據能走多遠,這篇論文給出了一個相當樂觀的答案,但顯然,故事還沒講完。
Q&A
Q1:Wayu-Paxa-OCR-Zero是什麼?
A:它是一個泰文OCR模型,基於0.9B參數的PaddleOCR-VL-1.6微調而來,完全用45723頁合成數據訓練,沒有使用任何真實泰文文檔的標註,在多個評測集上超過了參數量更大的Typhoon OCR 7B模型。
Q2:合成數據里哪些因素對泰文OCR識別效果影響最大?
A:字體多樣性、二維排布結構和真實手寫筆畫變化影響最大,而頁面背景等非文字內容的影響很小,幾乎可以忽略。
Q3:為什麼域內合成數據在頁級訓練和裁剪級訓練下表現差異這麼大?
A:域內合成數據在頁級訓練下表現最好,中位數誤差僅1.82%,但在裁剪級訓練下卻變差到15.59%,反而不如域外合成數據。論文作者也坦言這個反轉現象的具體原因尚不明確,有待進一步研究。






