如果甲骨文有 OCR:古文字辨識的技術挑戰與破解進展
在現代文件 OCR 裡,這三層都相對好做,因為背景乾淨、字體統一、排列規則、字形標準。但在甲骨文上,這三層會同時崩壞:背景是龜甲獸骨的天然紋理與裂痕,字元大小不一、方向不一、甚至同一個字在不同片上長得完全不同,而「標準字形」這個概念本身在甲骨文裡就是一個學術問題,不是工程問題。
換句話說,甲骨文 OCR 不是「把 OCR 套到新字體上」,而是「重新定義 OCR 的三層工作在一個不友善的環境裡該怎麼做」。
二、甲骨文到底難在哪裡?五道技術關卡
接下來這一節是全文的核心。我們把甲骨文辨識的困難拆成五道關卡,從「看得見的雜訊」到「看不見的資料瓶頸」,一層一層往下挖。
2.1 關卡一:載體不合作——龜甲獸骨上的「天然雜訊」
現代 OCR 的第一個隱含假設是「背景乾淨」。白紙黑字、掃描平整、光線均勻——這些在甲骨文面前全部不成立。
甲骨文的載體是龜腹甲、龜背甲、牛肩胛骨等,表面有天然的骨理、骨縫、鑽鑿灼痕(占卜時燒灼留下的孔洞與裂紋),還有三千年埋藏造成的風化、剝落、土鏽、變色。更要命的是「兆枝」——占卜時燒灼產生的裂紋,常常和筆畫一樣細、一樣直,甚至比筆畫更醒目。對機器來說,一道兆枝和一筆橫畫在像素層面上可能長得幾乎一樣。
此外,甲骨文的呈現媒介至少有三種:原骨照片、拓片、摹本。原骨照片有立體感但光影複雜;拓片黑白分明但會把凸起與凹陷混在一起,且拓工手法差異極大;摹本乾淨但已經經過學者的「人腦辨識」,某種程度上是「二手資料」。同一個字,在三種媒介裡的視覺特徵可能相差到讓模型以為是三個不同的字。
所以第一道關卡不是「認字」,而是「抗噪」:模型必須學會忽略骨理、裂痕、鑽鑿孔,專注在真正的刻畫痕跡上。這件事說起來簡單,做起來需要大量標註資料去教會模型「什麼是雜訊、什麼是字」。
2.2 關卡二:字形不統一——異體字與「同字異形」的迷宮
第二道關卡更根本:甲骨文沒有一個「標準字體」。
現代漢字有教育部標準字體、有 Unicode 編碼,同一個字就是那個形狀。但甲骨文是三千多年前的書寫系統,同一個字在不同時期、不同刻手、不同片甲骨上,寫法可能差異極大。方向可以左右相反,部件可以增減,筆畫可以簡化到只剩兩三筆。學術上把這種現象稱為「異體字」或「構形變異」。
更麻煩的是「同形異字」:兩個不同的字,在某種寫法下可能長得一樣,必須靠上下文(辭例)才能判斷。這對 OCR 來說是致命的——單看字形無法決定答案,必須結合語言模型與辭例檢索。
而且,甲骨文裡有大量「未識字」。目前學界普遍認為甲骨文單字約有四千多個(不同統計口徑略有差異),其中已被確認釋讀的大約一千多字,剩下的是「待考」。對 OCR 系統來說,這意味著它的「類別標籤」本身就是不完整的:你無法要求模型辨識一個連人類都還沒定論的字。這就引申出一個很有趣的設計問題:模型應該輸出「這是某個已識字」,還是輸出「這是一個未識字,但外形接近 A、B、C 這幾個候選」?
2.3 關卡三:類別極度不平衡——常用字與冷僻字的長尾
第三道關卡是資料分布問題。甲骨文裡有些字出現頻率極高,例如干支字(甲、乙、丙、丁……)、常用動詞(卜、貞、王、雨、年)、方位詞等,動輒出現數千次;但同時也有大量只出現過一兩次的罕見字。
這種「長尾分布」對機器學習是經典難題:模型會傾向於把資源集中在高頻類別上,對低頻類別的辨識率很差。而弔詭的是,對古文字研究而言,那些罕見字往往才是最有學術價值的——它們可能是新見字、可能是某個疑難字的关键證據。
所以在甲骨文 OCR 裡,「整體準確率 95%」這種指標其實意義不大。如果那 5% 的錯誤全部集中在罕見字上,對學術研究幾乎沒有幫助,甚至會造成誤導。評估指標必須分層:高頻字準確率、低頻字召回率、未識字的候選命中率,都要分開看。
2.4 關卡四:殘辭與綴合——破損、缺字、跨片拼合
第四道關卡是「不完整性」。一片甲骨流傳三千年,常有殘缺:邊角斷裂、字被削去一半、辭句被裂痕切斷。學者面對這種情況,會用「殘辭」的概念去推測缺字,例如「癸卯卜,今日□」這種帶缺口的句子,靠辭例與語法去補。
對 OCR 來說,這意味著輸入本身可能是殘缺的圖像,目標輸出卻是一個需要「推理」才能得到的答案。單純的字元辨識模型處理不了這個層次,必須引入序列模型、語言模型、甚至檢索增強的方法,讓模型學會「看上下文補字」。
更進一步是「綴合」:很多甲骨是碎裂的,學者會把不同片拼在一起,恢復完整的卜辭。這是一個典型的組合爆炸問題——想像有十五萬片碎片,要找出哪些片可以拼在一起,人工比對幾乎不可能窮盡。而這正是 AI 可以大顯身手的地方:把每片甲骨的邊緣形狀、字體風格、辭例內容轉成特徵向量,做相似度檢索,就能自動產生「疑似綴合」的候選清單。
所以甲骨文 OCR 的上限不只是「認字」,而是「認字 + 補字 + 拼圖」,是一整套從像素到文獻的推理鏈。
2.5 關卡五:標註資料稀缺——專家時間是最貴的算力
最後一道關卡,也是最現實的一道:沒有足夠的標註資料。
現代 OCR 之所以能做得好,是因為有海量的「圖—字對應」資料可以訓練。但甲骨文的標註必須由專家來做:哪個是字、哪個是兆枝、這個字對應哪個釋文、這片甲骨屬於哪一期,這些都需要專業判斷。一位專家一天能標註多少字?可能幾百個,可能更少。而一個深度學習模型動輒需要數萬、數十萬個標註樣本。
這就是所謂的「專家瓶頸」:在這個領域,最貴的資源不是 GPU,而是古文字學家的時間。任何甲骨文 OCR 的方案,都必須正面回答「如何在標註資料有限的情況下訓練模型」這個問題——而這正好引出了下一節要談的技術路線。
三、破解進展:從模板比對到深度學習
了解了五道關卡,我們再來看學界與工程界這十幾年來是怎麼一步步拆解的。大致可以分成幾個階段,但這不是線性取代,而是疊加:越新的方法越傾向於和舊方法混用。
3.1 早期方法:拓片比對、特徵工程與「人工智慧前夜」
在深度學習普及之前,甲骨文辨識的主流思路是「特徵工程 + 分類器」。研究者會手工設計特徵,例如筆畫的方向直方圖、字元的骨架結構、輪廓的傅立葉描述子,再搭配支持向量機(SVM)或 k 近鄰(k-NN)做分類。另一條路線是「模板比對」:把標準字形做成模板,用滑動視窗去比對相似度。
這些方法在字形相對規範的樣本上能達到一定效果,但弱點很明顯:手工特徵難以涵蓋甲骨文巨大的形變空間,換一批拓片、換一種媒介,準確率就掉下來。而且當時的資料集規模很小,多為數百到數千個字例,模型的泛化能力有限。
不過這個階段累積了兩件重要的資產:一是甲骨文的數位化資料(拓片掃描、釋文資料庫),二是研究者對「甲骨文字形特徵」的理解。這些都成為後來深度學習方法的養分。
3.2 深度學習進場:CNN、目標偵測與序列辨識
2010 年代之後,卷積神經網路(CNN)開始被引入甲骨文辨識。CNN 的優勢在於「自動學習特徵」:不需要人工設計筆畫直方圖,模型自己會從大量圖像中學到有用的表徵。研究者開始用 CNN 做單字分類,準確率相比傳統方法有明顯提升。
接著是「目標偵測」技術的引入,例如基於區域建議網路(RPN)或 YOLO 系列的方法,用來解決「文字偵測」這一層:在一整片甲骨上框出所有字元位置。這比逐字裁切再辨識更接近實用場景,因為真實的甲骨圖像是整片的,不可能事先切好。
再往後是「序列辨識」:把一行或一列卜辭當成序列來處理,用 CNN + RNN + CTC(連接時序分類)的架構,直接從圖像輸出文字序列,跳過精確切字的步驟。這種架構在現代 OCR 裡很成熟,搬到甲骨文上雖然效果打折,但方向是對的。
近年在甲骨文資訊處理領域,中國大陸已有若干團隊在做系統性工作,例如安陽師範學院的甲骨文資訊處理相關實驗室、華南理工大學等機構,陸續建置了甲骨文資料庫與辨識模型;台灣中央研究院的歷史語言研究所也有長期的甲骨文數位典藏與標註工作。另外像「殷契文淵」這類甲骨文大數據平台,也把拓片、釋文、字形檢索整合在一起。這些都是 OCR 系統的重要基礎設施。
3.3 少樣本與自監督:讓模型學會「看骨頭」
針對「標註資料稀缺」這道關卡,近年的主流策略是「少樣本學習」(few-shot learning)與「自監督學習」(self-supervised learning)。
少樣本學習的思路是:不要要求模型看過一萬個「雨」字才能認出「雨」,而是讓它學會「給定幾個範例,就能辨識新類別」。這非常契合甲骨文的現實——很多字只有少量樣本,甚至只有一兩個。實作上常見的做法是「孿生網路」(Siamese Network)或「原型網路」(Prototypical Network),透過比較兩張圖的相似度來分類,而不是直接學一個固定的分類器。
自監督學習則更進一步:利用大量「無標註」的甲骨圖像,讓模型自己學表徵。例如「對比學習」:把同一片甲骨的不同裁切或不同增強版本視為「正樣本」,不同片視為「負樣本」,讓模型學會分辨「什麼是同一片甲骨的風格」。這種方法不需要專家逐字標註,只需要大量圖像,正好繞開了專家瓶頸。
另一個實用技巧是「資料增強」:對甲骨圖像做旋轉、翻轉、彈性變形、加入模擬裂痕與雜訊,讓模型見過更多「不完美」的樣本。這聽起來很土,但在古文字這種資料量有限的領域,往往比換更炫的模型架構更有效。
3.4 多模態與大模型:文字、拓片、辭例一起讀
近兩三年最令人興奮的進展,是多模態模型與大型語言模型的出現。這對甲骨文 OCR 有兩層意義。
第一層是「視覺—語言對齊」:模型同時看圖像與文字,學會「這張圖對應這串釋文」。這比單純的圖像分類更接近真實任務,因為甲骨文的辨識本質上是「圖像 → 文字」的跨模態映射。多模態模型可以在預訓練階段吸收大量「拓片—釋文」配對資料(這些資料在既有資料庫裡其實不少),再用少量高品質標註做微調。
第二層是「辭例推理」:大型語言模型可以讀懂卜辭的語法結構,知道「癸卯卜,今日雨」是合理的,「癸卯雨,今日卜」則很奇怪。當 OCR 給出多個候選字時,語言模型可以根據辭例給出「哪個候選更合理」的排序。這正是解決「同形異字」問題的關鍵——字形說不準的,交給上下文。
目前已有研究嘗試把「字元辨識模型」與「語言模型」串起來做「聯合解碼」:視覺模型給出每個位置的候選字機率,語言模型給出序列的語言機率,兩者相乘取最大值。這種思路在現代 OCR 的後處理中很常見,搬到甲骨文上,效果取決於語言模型的卜辭語料夠不夠多、夠不夠純。
3.5 綴合與斷代:AI 不只是「認字」,還會「拼圖」
除了認字,AI 在甲骨學的另外兩個任務上也開始發力:綴合與斷代。
綴合方面,研究者把每片甲骨的邊緣輪廓、字體風格、辭例內容數位化,做成特徵向量,再用相似度檢索找出「可能可以拼合」的候選組合。這種方法不能保證正確,但可以大幅縮小人工比對的範圍。已經有團隊用深度學習做甲骨綴合,並產出被學者採納的新綴合案例。
斷代方面,傳統上依靠字體風格、出土層位、親屬關係等判斷甲骨屬於哪一期。AI 可以用字體圖像的風格特徵做分類,輔助判斷。這對 OCR 也有幫助:如果模型知道這片甲骨大概屬於哪一期,就可以優先考慮該期的字形變體,提高辨識準確率。
四、實務藍圖:如果真的要蓋一套「甲骨文 OCR 系統」
前面談的是「難在哪裡」與「別人做了什麼」。這一節我們換個角度:如果今天有一個團隊要從零開始蓋一套甲骨文 OCR 系統,合理的架構長什麼樣?
4.1 資料層:從拓片、照片到三維掃描
資料層是一切的基礎。實務上要處理的資料至少有三類:原骨照片(含高解析度攝影與多光譜影像)、拓片掃描、摹本圖像。理想情況下還要納入三維掃描資料,因為甲骨表面是立體的,刻痕的深度資訊對辨識很有幫助——它可以區分「刻進去的筆畫」與「浮起來的骨理」。
資料層還要做「對齊」:同一片甲骨的拓片、照片、摹本要能對應到同一個座標系,這樣才能交叉驗證。此外要建「釋文資料」:每個字元的邊界框、釋文、字號(對應甲骨文字編的編號)、所屬甲骨片號、分期。這些標註的品質直接決定模型上限。
4.2 模型層:偵測、辨識、檢索三合一
模型層建議做成「三模組串聯」:
第一模組是「文字偵測」,輸入整片甲骨圖像,輸出所有字元的位置框。可以用現代目標偵測模型加上針對甲骨文的資料增強,重點是「區分字元與兆枝」。第二模組是「字元辨識」,輸入單字圖像,輸出候選字與機率,可用少樣本學習或度量學習,以應對長尾分布。第三模組是「辭例檢索與重排序」,輸入辨識序列,去語料庫檢索相似卜辭,並用語言模型重排序候選答案。
這三個模組之間要有回饋機制:檢索模組的結果可以回頭修正辨識模組的候選排序,例如「這個字辨識成 A 只有 40% 信心,但辭例檢索顯示 A 在類似句式中出現率極高,於是提升到 70%」。
4.3 評估層:不是 99% 就好,錯一個字可能改變一句卜辭
評估層是最容易被忽略、卻最關鍵的一環。甲骨文 OCR 不能只看「字元準確率」,因為卜辭很短,一句話可能只有六七個字,錯一個字就可能改變整個意思。例如「王占曰:吉」與「王占曰:凶」,只差一個字,但意義完全相反。
所以評估要分層:字元級準確率、辭句級完全正確率、未識字候選命中率(前五名候選是否包含正確答案)、以及「高信心錯誤率」(模型很有信心但答案是錯的比率,這是最危險的)。此外還要做「跨媒介測試」:在拓片上訓練的模型,拿到原骨照片上表現如何?這才是真實場景的考驗。
4.4 人機協作:AI 做粗活,學者做細活
最後,整個系統的設計哲學應該是「人機協作」,而不是「全自動」。實務上最合理的介面是:AI 給出候選答案與信心分數,學者快速審核,對低信心項目重點檢查。這可以把學者的工作量從「從零辨識」壓縮到「審核與修正」,效率提升可能達到數倍。
同時,學者的每一次修正都應該被記錄下來,成為模型的回饋資料。這就形成一個正向循環:系統用得越多,標註資料越多,模型越準,學者越願意用。
五、腦洞大開:當甲骨文 OCR 真的成熟之後
假設十年後,甲骨文 OCR 真的做到「字元準確率 95% 以上、辭句正確率 80% 以上、未識字候選命中率 70% 以上」,而且可以穩定處理拓片與原骨照片。那會發生什麼事?
5.1 學術研究會變成什麼樣子?
首先,甲骨學的研究節奏會改變。過去一位學者一輩子可能只專精於某幾批甲骨、某幾個主題;未來學者可以快速檢索「所有包含某個字的卜辭」「所有出現某種句式的甲骨」,研究問題的規模會從「我讀過的幾百片」擴展到「整個資料庫的十五萬片」。
其次,疑難字的考釋可能加速。很多未識字的破解,靠的是「歸納所有出現語境」——這個字出現在哪些句子裡、和哪些字共現、語法位置是什麼。這種工作過去要手工翻卡片,未來可以一鍵檢索,學者只需要做最後的判斷。
第三,綴合與斷代可能出現「AI 先行、人工確認」的新模式。AI 每天產生幾百組綴合候選,學者從中篩選,效率遠高於人工翻拓片。
5.2 博物館與大眾:掃描一片甲骨,看見三千年
在博物館場景,甲骨文 OCR 可以變成很酷的互動體驗:觀眾用手機對準展櫃裡的甲骨,螢幕上就即時浮現釋文、注釋、白話翻譯,甚至可以「點字聽音」——點一個字,聽它三千年前的讀音構擬。這會讓甲骨文從「看不懂的古老符號」變成「可以親近的歷史現場」。
在教育場景,老師可以用 OCR 結果做遊戲化教學:讓學生猜字、比對、討論为什么這個字這樣寫。技術門檻降低之後,古文字學有機會從冷門絕學變成通識素養的一部分。
5.3 風險與倫理:偽造、誤讀與「演算法霸權」
當然,腦洞也要有陰影面。
第一是「偽造風險」:如果 OCR 與生成模型都成熟了,有心人可能用 AI 生成看起來很合理的甲骨文拓片與釋文,混入市場或學術圈。這對文物鑑定與學術誠信都是新挑戰。第二是「誤讀風險」:如果學者過度信任模型,把模型的錯誤答案當成定論,可能會污染學術累積。第三是「演算法霸權」:如果只有少數機構掌握模型與資料,學術話語權可能集中化,這對人文學科的多元性不是好事。
所以,甲骨文 OCR 的發展必須搭配「可解釋性」與「開放資料」:模型要能說出「為什麼選這個字」,資料與模型要盡可能開放給學術社群檢驗。技術不是中立工具,它的治理方式和它的演算法一樣重要。
六、結語:OCR 不是要取代古文字學家,而是替他們造一艘船
回到最初的問題:如果甲骨文有 OCR,會怎樣?
答案可能沒有那麼戲劇化。甲骨文不會因為 OCR 就被「破解」,古文字學家也不會因此失業。真正會改變的是「工作方式」:從手工比對變成機器輔助檢索,從個體經驗變成資料驅動,從少數專家的閉門研究變成可規模化的知識生產。
技術上,甲骨文 OCR 面對的是五道關卡:載體雜訊、字形變異、長尾分布、殘辭綴合、標註稀缺。破解進展也已經走了很長一段路:從特徵工程到深度學習,從單字分類到序列辨識,從監督學習到少樣本與自監督,再到多模態與大模型。每一步都不是終點,而是把問題往前推一點。
如果要用一句話總結:甲骨文 OCR 不是要「取代」古文字學家,而是替他們造一艘船——讓學者可以從划槳的體力活裡解放出來,把力氣留給真正需要人腦的判斷、解釋與想像。三千年後的我們,用二十一世紀的演算法去讀三千年前的卜辭,這件事本身,就已經是一場很浪漫的歷史腦洞了。
而對於我們這些論壇版友來說,也許下一次看到博物館裡的甲骨,可以多看兩眼:那些刻痕不只是文字,它們是一個等待被演算法與學者一起解開的、橫跨三千年的資料集。
```
💬 想說點什麼?
歡迎到留言板分享你的想法、心得或疑問。
💬 前往留言板 →