甲骨文信息处理综述:从图像识别到知识图谱的交叉学科技术指南
2026/9/17 6:18:32 网站建设 项目流程

第一次啃完这篇甲骨文信息处理的全面综述(Oracle bone inscriptions information processing: a comprehensive survey),我的第一反应不是“读完了”,而是“幸好读到了”。我是做计算机视觉的,常年泡在通用OCR、文档图像分析这些偏应用的方向里,甲骨文这种对象一听就很小众,总觉得离自己很远。直到一个跨学科项目需要评估甲骨拓片自动识别的可行性,我才第一次认真把这篇综述从头到尾读了一遍,读完之后的感受是:领域虽小,但它包含的技术问题一点都不简单,甚至比很多通用视觉任务更刁钻。

这篇综述真正解决了一个问题——它把甲骨文研究这个拥有上百年历史的古老学科,拆成了一份可以被计算技术逐项攻克的“任务清单”。从图像预处理、文字检测、字形识别,到分期断代、碎片缀合、知识图谱构建,整个信息处理链条被完整地铺在读者面前。对于计算机背景的人来说,它能帮你快速判断哪些问题已经有人做了、做到什么程度、数据从哪里来;对于古文字学背景的人来说,它能让你看到信息技术目前能帮到你什么、边界在哪里。所以这篇博文我不打算复述综述每章的内容,而是换个角度,讲讲我作为读者从中读到的任务版图、四个最值得深挖的技术方向、按图索骥做复现的完整过程,以及非甲骨学背景的人读这类综述时最容易卡住的五个点,最后再分享一套我自己总结的交叉学科综述阅读方法。

1. 先把任务版图看懂:这篇综述究竟在处理哪些问题

1.1 六类任务串起一条从图像到语义的流水线

综述最让我受益的地方,是它没有按“方法”来组织,而是按“任务”来组织整个领域。这一点很关键,因为甲骨文信息处理不是单一问题,而是一整条加工链条。普通OCR的链路通常是“检测-识别-结构化”,但甲骨文研究的信息链要长得多:先是原始载体,也就是龟甲兽骨,在实际研究中会以照片、拓片、摹本三种形态出现;然后要定位单个文字的位置和边界;接着判断这个字是什么字、它在整条卜辞里是什么意思;再往上还要处理同一字在不同时期、不同刻手影响下的写法演变;最后才是对整个批次的甲骨进行分期、缀合、内容释读。我把这条链路整理成一张表,读综述时可以对照着看:

任务层输入输出核心难点
图像预处理拓片/照片/摹本去噪、二值化、前景分离图像退化严重,石纹与刻痕容易混淆
文字检测预处理好图像单字位置框/字符区域字数多、排布不规则、残损严重
字形识别与检索单字图像标准字形或候选集类内差异大、类别开放、样本极少
分期断代拓片/单字/辞例分期标签断代标准依赖专家知识,视觉线索不直观
碎片缀合多块碎片图像匹配对或拼接结果缺口信息少、跨馆跨分辨率匹配
语义与知识处理已识别文本知识图谱/语义检索低频词、残辞断句、领域知识难嵌入

这套框架好在哪里?它把所有问题放在了一条可计算的主线上。比如“缀合”看似和“识别”完全无关,但如果把整条链看成一个拼图,你会发现它们的底层数据是同一批图像,只是处理目标不同。综述用这个框架把几十年的研究压缩成几个清晰的区块,作为读者,你不需要理解每一个考古细节,也能立刻知道自己在整条流水线的哪个位置。

1.2 数据是命门:甲骨文数据集的特殊之处

读这篇综述时,我反复注意到一个事实:这个领域几乎所有方法都被同一个问题卡住——数据太少、太散、太难标注。目前已知的甲骨材料数量大约在十五万片左右,已经发现的单字总量约四千五百个,其中被学界认可释读出来的,据一部分统计只有不到一半。这个数字放在深度学习时代,简直是“地狱难度”的数据规模。对比一下,通用OCR光印刷体单字字符集的样本量就能达到百万级,而甲骨文许多字在整个数据集里只出现几次到十几次。

更让人头疼的是数据形态并不统一。拓片是黑底白字,刻痕经过上千年腐蚀,边界模糊;照片会带骨板本身的纹理和反光;摹本是学者手工描摹的线条图,转写过程中已经带上了人的判断。同样一个字,在这三种图像里的视觉表现差异非常大。综述里多数工作选择用拓片作为主要实验对象,因为它是黑白灰度图,预处理相对可控,但这意味着很多模型只在拓片上验证过,换到照片或摹本上性能未必撑得住。如果你准备进入这个领域,第一条建议就是先想清楚自己要处理哪种图像形态,不要一开始就指望做一个“啥都能吃”的统一模型。

还有一个容易被忽视的问题是标注标准不统一。同一个甲骨文字,在不同数据库里的编码、归类甚至字形切割方式都可能不一样。甲骨学界对“一字多形”和“多字同形”的归并存在大量讨论,古籍数字化项目各自有各自的规范。这带来的后果是:不同论文报告的准确率往往不能直接比较,因为你不知道他的标注集、类别定义和你是不是同一套。读综述的时候,看到数字先别急着兴奋,先翻到数据部分看看它到底在什么标准上做的实验。

1.3 技术路线的两个时代:手工特征与深度学习并存

综述梳理的方法演进很有代表性。2015年前后是一个清晰的分水岭。之前的做法基本上是传统图像处理加模式识别:先做阈值分割、连通域分析,再用HOG、SIFT这类手工特征描述字形,最后用模板匹配、字典学习或者浅层分类器做判别。这种方法依赖研究者对甲骨字形的理解,优点是计算成本低、可解释性强,缺点是换一批材料就得重新调参,泛化能力很不理想。

深度学习时代之后,主流路线切换为基于CNN的分类网络、基于Faster R-CNN和YOLO系类的检测框架,以及后来用GAN做数据增强、用度量学习做字形匹配的尝试。但让我印象最深的一点是,综述并没有把传统方法贬得一文不值,反而指出在某些低资源条件下,传统方法仍然有独特的价值。这个判断我完全认同。甲骨文数据量太小,深度模型动辄上亿参数,很容易过拟合到有限的训练数据上。我自己在做交叉验证的时候也发现,把一些字典学习或模板匹配的输出当作先验特征和深度特征拼接,往往能小幅但稳定地提升最终效果。纯粹的“大力出奇迹”在这个领域不太走通,合理的方法反而是把专家知识、传统特征和深度网络组合在一起。

2. 综述里最值得细读的四个技术方向

2.1 甲骨字形识别:真正的难点不是分类,而是类内差异太大

甲骨字形识别是综述里篇幅最大的任务之一,也是最接近通用OCR但我们又无法直接套用通用模型的一个任务。表面上看,它就是一个分类问题:给定一个单字图像,预测它对应的标准字形。但真做起来你会发现,难的不是分类器设计,而是这个任务本身的性质非常不友好。

首先是类内差异极大。同一个字在不同时期、不同贞人、不同骨板上的刻写风格可能差异大到像两个不同的字。商代的刻手不像后来的书法家那样追求统一,比如干支里的“甲”“子”这类常用字,形态演化路径极其复杂。有时候同一块拓片上同一个字出现三次,三次写法都不一样,而它们都被标注为同一个类别。这对模型的要求其实比“区分不同类”更高:它必须学会忽略巨大的风格变化,去抓字形里真正稳定的结构特征。

其次是样本极度不均衡。高频字如“王”“贞”可以出现上千次,而冷僻字可能只有几条样本,甚至只有一条。深度学习在每类只有一条样本的情况下基本无能为力。综述里不少工作因此转向了检索思路:不做封闭集分类,而是用度量学习把字形映射到一个嵌入空间,查询时返回Top-N候选,再由专家做最终确认。我觉得这个方向非常对路子。甲骨文中还有大量未被释读的字,模型本来就不可能给出唯一正确的类别,与其强行分类,不如让模型做“相似字形检索”,把判断交给真正懂甲骨学的人。这种人机协同的设定,比追求端到端全自动识别要务实得多。

2.2 分期断代:把五期框架变成一个分类问题

甲骨分期是商代考古研究的一个基本问题。传统上,学者会依据字形风格、贞人集团、钻凿形态、出土层位等因素,把甲骨材料划分为不同时期。董作宾长期建立起来的五期框架是最常用的参照系:第一期大致对应盘庚、小辛、小乙、武丁时期,第二期对应祖庚、祖甲时期,第三期对应廪辛、康丁时期,第四期对应武乙、文丁时期,第五期对应帝乙、帝辛时期。这个分期框架本身在学界就有不少争论,但从计算角度来说,它给研究者提供了一个相对清晰的标签体系:把某张拓片或某个单字归入五期之一,就是一个多分类问题。

真正困难的地方在于,视觉上到底哪些特征决定了一个字形属于哪一期,这是一个非常隐性的知识。贞人集团可以通过辞例中的名字判断,但单看字形,普通研究者很难说出第一期和第三期的“王”字具体差在哪。综述里早期的方法基本是人工设计一些字形统计特征,比如笔画宽度、线条曲率、字形的紧凑度,再配一个SVM或随机森林。深度学习兴起后,不少人直接用CNN对拓片块做分期分类。但我的实操体会是,纯视觉输入往往不够。分期不是单纯的字形问题,贞人名字、出土地点、骨板形态这些背景信息同样重要。如果能把这些非图像特征和视觉特征做一个多模态融合,分期的准确性会明显提升。换句话说,别只把断代当成一个图像问题,它是一个典型的多源信息融合问题。

2.3 碎片缀合:被大多数研究者低估的图形匹配任务

缀合在考古学里的意思是把碎成多块的甲骨重新拼到一起。甲骨在地下埋藏了几千年,出土时好多是碎块,学者要把属于同一块龟甲或兽骨的碎片找出来拼回去,才能读到完整的卜辞内容。传统上这项工作依赖专家在大量拓片图册里人工比对,效率低,而且对人的记忆力要求极高。这个任务翻译成计算问题,就是图像拼接和实例匹配,但它又比普通的图像拼接难很多。

难点在哪里?第一个是断口信息不可靠。甲骨碎片边缘虽然有一定形状特征,但埋藏环境中容易二次磨损、破裂,边缘匹配经常会给出错误候选。真正可靠的反而是骨板上的纹路、字形笔画的断点方向、行款的相对位置。这意味着算法不能只做轮廓匹配,还要把纹理和文字结构也编码进去。第二个是全局约束。一块碎片可能和多个候选块局部匹配度都很高,但真正正确的搭配必须满足全局一致性,比如两块碎片拼起来后,文字行序要连贯、骨板弧度要吻合、纹路要自然过渡。综述里提到的一些工作手动设计断口形状特征做匹配,也有用图神经网络做关键点匹配的尝试。从我自己的经验看,做缀合前面最重要的一步是先把图像做正射矫正,让骨板表面拉伸到一个统一的平面坐标系里,否则边缘形状在不同扫描角度下会发生严重变形,后续匹配基本没法做。

2.4 知识图谱与语义挖掘:从“认字”到“读懂句子”

如果说识别是“认得字”,那么语义挖掘要解决的则是“读懂话”。一片甲骨上的卜辞通常包含完整的叙事结构,学界一般把它分成前辞、命辞、占辞、验辞四段。前辞记录时间、地点和贞人,命辞写占卜的问题,占辞记录解释,验辞补充后来应验的情况。把这些结构抽取出来,再进一步关联到人物、地名、祭祀活动、事件,就能构成一张可用于历史研究的知识图谱。综述里这个方向的研究数量比前几个任务少得多,而且处于比较早期的阶段,这也意味着机会更多。

难的地方在于,甲骨文的语法特征和现代汉语很不一样:省略成分多,几乎没有标点,很多字还是未释读状态。想用现成的中文NLP工具直接处理基本行不通,因为它不是标准的现代汉语,连断句都要专家参与。综述提到的一些探索性工作,包括实体抽取、事件关系推断、以及借助上下文语境对未释读字的含义进行推测。我个人觉得后者非常迷人——如果把一群已知字形和未知字形放在同一条辞例里,训练一个类似BERT那样的掩码语言模型,理论上可以通过上下文概率来预测未知字的语义类别,这是一种完全不同于图像识别的“破译”思路。当然,这个方向目前还很早期,需要有古文字学背景的人深度参与标注和验证,纯算法团队很难独立做出成绩。

3. 从“读完”到“复现”:我按综述线索做的一次完整复盘

3.1 我先做了一张任务-方法-数据集对照表

拿到这种几十页的综述,我最忌讳的事情就是从头到尾线性阅读。第一遍翻完,脑子里塞满了各种方法名和准确率,但一到具体做实验就发现自己根本想不起来哪个方法用了哪个数据集。所以在第二遍精读时,我准备了一个简单的电子表格,把综述中提到的每个任务按“任务类型-代表方法-数据集来源-关键结果-公开代码/数据”五个字段整理成索引。这个动作看起来简单,实际花了我大概两个晚上,但它带来的收益非常大:整个综述几十页的内容,最后浓缩成了一张可以随时查询的对照表。

做这张表的核心要领只有一个:不要只记方法名,一定要记数据来源。比如同样是甲骨字形识别,有的工作在自建数据集上做到90%以上的准确率,有的在跨时期测试集上只有不到60%。如果不记录这些细节,后面做对比实验时你会被数字误导得很惨。我在表格里把每个方法使用的是什么数据形态(拓片、照片还是摹本)、训练集和测试集是从哪里来的、大概多大,一并备注清楚。这张表后来成了我整个项目调研的底稿,后续读任何新论文,我都会先把它填充进这张表,再来判断它和已有工作之间的关系。

3.2 按图索骥:从引用文献出发追原始论文

综述本身的价值在于导航,但导航不等于目的地。真正要做实验、写代码、设计对比方案,还是得回到原始论文。我的操作流程是这样的:先在对照表里圈出自己最想做的那个任务,然后回到综述对应的章节,取出它引用的最核心的三到五篇论文。为什么要三到五篇而不是全部?因为这个领域很多论文是同一个团队在不同年份发的改进版本,读最新的一两篇就知道整个脉络了,全部读反而浪费时间。

拿到原始论文之后,我不会从头读,而是直接跳到“数据集”和“实验设置”两个章节。综述里不会写清楚训练集和测试集是怎么划分的、预处理是怎么做的、类别是怎么定义输出的,但这些细节恰恰决定了复现能不能跑通。读完这两节,再回头去读方法部分,理解和记忆就都扎实得多。这里要特别提醒一点:当你在综述里看到两篇论文报告了完全不同的准确率时,先别怀疑有一篇注水,更常见的原因是他们用了不同的测试集基准。这个领域缺乏统一的benchmark,大家各做各的数据划分,数字之间的可比性本来就有限。

3.3 复现中最容易踩的两个坑

我自己在按照综述线索复现时,踩了两个很深的坑,写出来希望后来的人能避开。

第一个坑是数据划分方式不一致。同样是甲骨文字检测任务,有的论文按“拓片”划分数据集,意思是同一张拓片上所有单字框都只能出现在同一个集合里,训练集和测试集不会出现来自同一张拓片的图像。这种划分更严格,它能检验模型对未见过的拓片是否具备泛化能力。另一种做法是按“字框”划分,也就是把所有单字框随机打散再分集合,这样同一张拓片上的字会同时出现在训练集和测试集里。这种划分实现简单,模型能借到更多的上下文信息,报告的mAP自然更高。两种划分没有绝对的对错,但如果你拿按字框划分的结果去和按拓片划分的结果对比,那基本是在拿苹果比橘子。

第二个坑是评估口径混乱。单字识别里最典型,有的论文报Top-1准确率,也就是模型预测第一位的类别必须正确才算对;有的论文报的是Top-10命中率,只要正确答案出现在模型给出的前十名里就认为成功。这两个数字在类别多且类内差异大的任务里可以差出二十个百分点以上。所以我现在做对比实验,都会自己在代码里同时统计Top-1、Top-5、Top-10和mAP四份结果,再和原论文按同一口径对比。那些只报一个最高数字、不交代口径的论文,我会默认它的结果存在一定水分,不轻易作为对标基准。

4. 非甲骨学背景阅读,最常卡的五个点

4.1 术语卡点:干支、贞人、五期、辞例

读综述最劝退人的部分是术语密集。计算机背景的读者第一次看到“贞人”“辞例”“干支”这几个词,会忍不住怀疑自己是不是进错领域了。这里用一个简单的速查表帮你跨过门槛:

术语含义
拓片/摹本/照片三种图像形态:拓片是黑底白字的印刷复制品,摹本是学者手描线条图,照片是实物影像
干支天干地支的纪日系统,共六十个组合,甲骨卜辞里大量出现
贞人占卜时负责向神灵发问的人名记录,相当于“占卜操作员”
五期对商代晚期甲骨文做的分期框架,目前最常用的分类参考
辞例卜辞的固定格式套路,前辞-命辞-占辞-验辞
缀合把同一块甲骨上的碎片重新拼合起来

我的经验是,初读时不需要把甲骨学所有背景都搞懂,只需要知道干支是一个循环纪日系统、贞人是一个人物身份标签、五期是一个分类标签体系,就能看懂综述里大部分方法设计和实验设置。更深的背景知识可以等到你真的准备在某个细分方向动手时再补,那时候你的学习动机和目标都会非常明确。

4.2 数据集口径混乱:字形级和拓片级不是一回事

这个坑在综述里不太显眼,但实际影响很大。有些论文把“字形分类”当作任务,数据集是按单字切好的图像,每张图就是一个甲骨字,模型只需要做单字级别的分类或检索。但另一些论文做的是“拓片理解”,输入是一整张拓片,模型要做的事情复杂得多,往往需要先检测出所有单字的位置,然后再识别每个位置上的字。这两种任务共享很多模块,但评估方式完全不同,前者可以被看作纯分类问题,后者则涉及检测+识别两个阶段,任何一个阶段出错都会拉低最终结果。

如果你在横向上对比两篇论文,务必先确认它们处理的是哪种粒度。综述里有时会把两类工作放在同一节里介绍,叙述上不会特别强调这个区别,但读到实验数据时你会豁然发现一个数字是单字级别的、另一个是拓片级别的。这个差距不是模型能力能拉平的,是任务难度本质上的差异。我后来在表格里专门加了一列“数据粒度”,就是为了防止自己再被这种口径问题坑到。

4.3 评估指标:准确率不是唯一标准

文献阅读到一定阶段,你会发现那些“准确率”背后藏着完全不同的评估方式。分类任务通常报Top-1准确率,就是我们平常说的“猜对了没有”;检索任务则更多用mAP,它关心的是排序质量,正确答案是不是排在候选列表靠前的位置;检测任务用mAP加IoU阈值,不仅要位置框对、类别对,还要求检测框与真实框的重叠度达到一定标准。综述里不少工作同时报告多套指标,但讨论的时候往往会挑最好看的那个数字说事。

我自己判断一个方法好不好用,习惯于把Top-1、Top-10和mAP三个数字一起看。Top-1特别高但Top-10也特别高,说明模型对高频字很有把握;Top-1不高但Top-10很高,说明模型学到的排序信息是有价值的,只是类别间差异太模糊,这时候把它当作一个粗筛工具反而更合适;如果mAP和Top-1双双很低,那这个方法的可用性就要打问号了。读综述时,遇到“准确率高达90%”这种表述,先把“在后面少看了一个重要细节”这个念头立起来,回到原始论文去看清楚指标口径。

4.4 怎么判断哪些是真空白、哪些是“纸上空白”

很多初入领域的人,看到综述里某个方向只有两三条引用,会兴奋地觉得“这里没人做,我冲进去就能占领”。但做调研多了以后,你会发现“文献少”和“值得做”之间不能直接画等号。有些方向论文少,是因为做起来确实难且价值有限;有些方向论文少,则是因为数据获取门槛太高,其他团队想进也进不来。这两种情况虽然都是空白,但性质完全不同。

判断的办法有两条。一是在综述的基础上,用Google Scholar或DBLP搜一下最近两三年有没有这个方向的新论文,重点看是否是同一团队在自己延续自己的工作,如果连续好几年只有同一个团队发文,那通常说明这个方向的“可复制性”很低,别人复现起来困难。二是找一个做甲骨学研究的专家聊一个小时,让对方判断这个计算问题在考古学那边是否有真需求。很多计算机方向看起来新颖,但在专家眼里根本不是学术问题,做出来也没有应用价值。反之,一些看似冷门的问题,在考古学界可能已经盼了好多年。真正的空白,一定是计算上有可行性、数据上可获取、学科上有价值三者的交集。

5. 交叉学科综述的阅读方法:我踩过的坑和总结的三步法

5.1 我的三步阅读法:先图表、再实验、后引言

这篇文章的最后一部分,我来分享一点方法论层面的东西。读交叉学科综述,尤其像这种计算机+考古的大跨度综述,最容易犯的错误就是试图从头到尾按顺序把它读完。第一篇综述我整整读了一个星期,结果记住的还是只有开头几十页的内容,后半部分基本是囫囵吞枣。后来我总结出一套三步法,效率翻了好几倍。

第一步是“先图表”。不管综述多长,我拿到手先不看引言,直接把所有图表浏览一遍。一张任务分类框架图,通常就能让你明白这个领域被分成了几块;一张方法对比表,能告诉你性能和数据集之间的量级关系。通过图表建立全局印象之后,再回到正文时,你的阅读就是带着地图在行进,而不是在一个陌生城市里乱转。第二步是“再实验”。图表看完之后,直接跳去读实验部分,理解作者是怎么评测、怎么对比的。实验数据能让你对方法的真实水平建立起判断。第三步才是“最后读引言”,补充背景意义与动机。这时候你已经知道这个领域大约是什么模样,再来读背景和意义,才能把前因后果串起来,不至于被大段的背景叙述带偏。

5.2 带着问题读综述和“倒着读”

读完第一遍相熟的综述之后,如果我只是为了做调研,还会再带着具体问题读第二遍。比如问自己“甲骨字形检索目前最优的是什么方案”“数据增强在这个领域有没有系统的对比”“哪位团队的代码是开源可跑的”。有了这些具体问题,综述就变成了一本工具书,我用目录定位到对应章节,快速提取答案,然后马上跳到该小节引用的原始论文继续挖。这种“问题驱动的阅读”比平滑式的顺序阅读要高维得多,它把读综述的时间从一个星期压缩到了几小时。

我甚至有一段时间习惯“倒着读”:先读最后的结论和未来工作展望,再回头读作者认为待解决的挑战,最后才去看综述里的早期背景。因为对交叉学科来说,引言和背景部分很大篇幅是在向另一领域的人介绍常识,如果我已经对甲骨文有了基本概念,这部分对我的增量价值并不大。当然,如果你是第一次接触甲骨文,背景部分还是要认真花时间读一遍,它可以把“五期”“贞人”“卜辞”这些概念讲清楚。

5.3 综述有时效性,别把过去的结论当成今天的答案

最后提醒一件事:任何survey都有时效性,这篇综述当然也不例外。它收集文献的时间点大约在2021年前后,其中总结的“最新技术”到今天已经过去了好几年。多模态大模型、扩散模型、统一视觉语言模型这些新工具,对开放集识别、稀疏样本分类、跨模态检索这类问题已经有了明显影响,这是综述里不可能写到的内容。所以读综述时,请在每一条结论后面默默加上一个时间戳:“截至2021年左右,这个方法在某某数据集上的表现是……”。至于它现在是否还是最优,需要用后续文献来验证。

同时也别因此低估综述的价值。一盏导航灯,不需要告诉你现在精确的时间,只要你还在导航,它就能帮你判断河流的方向。技术细节可以被新论文快速超越,但任务分类、难点分析、数据资源地图这些内容,往往能管用很多年。我现在的习惯是把它当作一份定期更新的底稿:每年再快速过一遍当年新发的论文,把新方法填充到老框架里。这样,读过的综述就不仅仅是一次性消耗品,而是成了一棵不断生长的方法树。

我在实际阅读中还有一个体会:这类跨学科综述的价值,远比它列举的那些方法要大。它把我从“这个领域好像很难做”带入到“这里的每一个细分方向其实都是可以动手的问题”这个状态。动笔去复现、去设计实验之前,最难的永远是判断哪些问题值得做、哪些坑在前面等着。这篇综述就负责把这个“最难的部分”解决掉。如果你正在犹豫要不要进入一个新领域,或者已经在边缘试探但找不到入口,找一篇高质量的comprehensive survey认真过一遍,按我说的三步法读,真的是性价比最高的起点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询