——大胖老师:“你猜古人为什么竖着写字?”
——小菜:“因为竹简是一根一根的?”
——大胖老师:“那后来用纸了为啥还竖着?”
——小菜:“惯性?”
——大胖老师:“是执拗。跟咱们非要用神经网络啃古籍一样执拗。”
一、公元1716年:世界上第一本“繁体字词库”诞生
康熙五十五年,紫禁城武英殿里发生了一件大事:由张玉书、陈廷敬等三十多位翰林院编修历时六年编成的《康熙字典》正式刊行。这部收录四万七千零三十五个汉字的巨著,堪称当时的“Unicode联盟”——它给每个汉字标了读音、释义、出处,还顺带规定了标准写法。
小菜听说这段历史后很兴奋:“大胖老师,这不就是最早的‘汉字编码表’吗?他们是不是早就预见到三百年后会有OCR?”
大胖老师白了他一眼:“预见到是有鬼了。但康熙字典的确做了一件对OCR至关重要的事:它把汉字的‘异体字’和‘正体字’之间的关系给理了一遍。你看——”他翻出一页电子版,指着某条目:“‘説’和‘說’,其实是同一个字,只是左边偏旁写法不同。古人写字没那么讲究,一个‘为’字能有几十种写法。如果OCR模型没见过这些变体,它就会觉得这是生僻字,直接蒙一个形近的。”
“这就像你让一个只看过‘马冬梅’的人去认‘馬冬梅’,他大概率会问:‘马上面怎么多了四个点?’而康熙字典,等于给了模型一本‘繁体字家族谱’,告诉它:这些五花八门的写法,其实是一家人。”
所以,古籍OCR的源头,还真可以追溯到三百多年前的这部字典。它定义了汉字的基本形态,也为今天AI的“识字”划定了范围。只不过,当年的编修们肯定想不到,他们手抄的竖排小楷,有一天会被一种叫“神经网络”的东西,以每秒几十个字的速度“阅读”。
二、竖排的倔强:为什么古人非要跟我们反着来?
小菜一直想不通一个问题:“大胖老师,古人明明知道横着写字更方便(比如题匾额、写楹联都是横的),为什么书籍正文非要竖排?而且还要从右往左读?这简直是在给后世的OCR挖坑。”
大胖老师放下保温杯,开始上课:“这得从竹简说起。商周时期,文字主要写在竹简上。竹简是一根一根细长条,自然适合竖着书写。左手拿着简册,右手执笔,写完一根放右边,顺手。所以阅读顺序就成了从右往左。这个习惯根深蒂固,哪怕到了东汉蔡伦改进造纸术,纸张普及,书写材料变了,但‘竖排右行’的传统已经成了文化基因,刻进骨子里。”
“后来活字印刷术发明,排版当然也延续竖排。一直到清末,西学东渐,数理化公式、外国地名、标点符号这些‘横着更合理’的东西大量涌入,横排才开始出现在部分书籍里。1949年后,大陆正式推广横排简体,但港台和海外中文世界,至今仍大量使用竖排繁体。而你要面对的古籍,99%都是竖排。这个延续三千年的习惯,到了OCR这里,就成了‘反人类’的难题。”
“为什么难?因为现代OCR模型,底层依赖的是卷积神经网络(CNN),它对图像特征的提取是‘从左到右、从上到下’滑动窗口的。这天然适合横排文字。遇到竖排,相当于让一个习惯了横向扫视的人,突然改成竖着扫,路径全乱。所以早期的OCR,会把竖排文字的每一列当成一行来处理——这就需要先精准切出每一列,再旋转90度,才能送进识别模型。可是古籍呢?经常是三列正文夹两行小注,栏线还粗细不均,想自动切准,比拆炸弹还难。”
小菜恍然大悟:“所以竖排识别,本质上是把‘版面分析’和‘文字方向检测’这两个问题搅在一起了。先得知道哪些是正文、哪些是注文、哪些是标题,还得搞清楚它们分别朝哪个方向。这比以前处理现代横排书复杂了不止一个量级。”
“没错。这也是为什么,直到深度学习模型有了足够的‘空间感知能力’,竖排识别才真正突破。你用上PPStructure之后会发现,它里面有个‘图像方向分类器’,专门判断文字块的朝向,然后自动旋转校正。这背后是ResNet这类网络在撑腰,它在训练时见过了各种旋转角度的文字,所以能本能地判断:‘这块文字是歪的,给我转正’——就像你拿起手机看照片,会自动旋转屏幕一样自然。”
三、神经网络登场:当古籍遇上CNN+Transformer
时间快进到2012年,AlexNet在ImageNet上大放异彩,深度学习正式复苏。OCR领域也开始了翻天覆地的变化。大胖老师指着PPT上的时间线:
2015年:CRNN(卷积循环神经网络)被提出,它把CNN提取图像特征、RNN处理序列、CTC转录出文字,串成了一条流水线。这个架构直接成为了后来所有OCR引擎的“标准模板”。从此,OCR从传统的手工特征+模板匹配,进入了端到端学习的时代。
2019年:PaddleOCR发布,把CRNN搬到了工业级,而且开源。中文识别准确率一下子飙到了95%以上。更重要的是,它开始支持竖排文字的训练——通过数据增强,把训练图片随机旋转90度,让模型学会“见多识广”。
2021年:PPStructure问世,在CRNN基础上加了版面分析模块,用目标检测(YOLO系列)来定位文字块,再用方向分类器摆正,最后OCR识别。到这时,一套能对付复杂版面的引擎才算基本成型。
2023年:Transformer大杀四方,OCR模型也开始引入Attention机制,比如SVTR、ABINet。它们不再死板地依赖RNN的串行处理,而是让每个字都能“看到”上下文,更好地解决形近字、遮挡字的问题。同时,PaddleOCR更新了繁体中文专用模型,训练数据覆盖了康熙字典里的绝大部分字形。
“所以,”大胖老师敲黑板,“我们今天做古籍OCR,本质上是站在三代技术积累的肩膀上:康熙字典定义了汉字边界,CRNN奠定了识别框架,Transformer带来了语义理解。缺一不可。”
四、实战拆解:一页清刻本的“数字化旅程”
为了让小菜直观理解,大胖老师现场打开一页乾隆年间的刻本《古文观止》,开始逐步演示。
第一步:图像预处理
原图是从PDF里导出的300DPI扫描件,微微发黄,有几个虫蛀小洞,边缘还有模糊的藏书印。大胖老师先用OpenCV做了自适应二值化,把文字和背景彻底分开。他解释:“古籍纸张老化严重,光照不均,普通二值化会丢笔画。自适应阈值能根据局部亮度动态调整,保细节。”
第二步:版面分析
PPStructure的布局检测模型上场。它用基于ResNet的骨干网络提取特征,然后通过特征金字塔(FPN)多尺度融合,检测出不同大小的文字块。页面上立刻被画出了几种颜色的框:红色的是正文竖排块,蓝色的是夹注小块,绿色的是版心外的书名和页码。更妙的是,方向分类器给每个框标记了角度:0度是正向横排,90度是竖排,180度是倒置。所有竖排块都被悄悄旋转了90度,变成了临时的横排图像,准备喂给OCR。
小菜问:“那识别完之后,顺序怎么还原?总不能还是一段一段乱的吧?”
大胖老师笑:“问得好。版面分析模块会输出每个框的坐标,尤其是左上角的位置。我们根据古籍的阅读顺序——从上到下、从右到左——对框进行排序:先按右上角纵坐标分组,确定是同一列;然后在同一列内按横坐标从左到右排。这样输出的时候,就能自动拼接成正确的阅读顺序。”
第三步:文字识别
旋转矫正后的文字块被送入识别模型。这是一个基于SVTR的轻量级Transformer网络。它先用卷积切分图像成小方块(patch),然后通过多层Transformer编码器捕获全局特征,最后用一个线性层分类出每个位置的汉字。由于训练时见惯了繁体、异体,它很轻松地把“説”认成“說”,把“羣”认成“群”。遇到“己”“已”“巳”这样的细微差别,语言模型会根据前后文施加约束——“自己”还是“已经”,概率天差地别。
第四步:后处理与输出
识别出的纯文本还要经过规则校正。比如,古籍中常见的避讳缺笔字“玄”(缺最后一点),模型有时会误认成别的字。后处理模块内置了一个避讳字表,检测到可疑组合时自动补全。最终,所有文字按照正确的阅读顺序拼接,同时保留坐标信息,方便生成双层PDF——在原图上叠加透明文字层,实现“看着是原版,却能搜索复制”的效果。
小菜看着这一气呵成的流程,感叹道:“合着这就是一场流水席啊,康熙字典定的菜名,CRNN配的料,Transformer炒的锅,最后PPStructure端的盘子。”
五、两个让人又笑又叹的落地案例
技术讲完了,大胖老师又开始举实例。
案例一:湖南某县“憋死县令”事件
这套系统刚在湖南某县图书馆试运行时,馆长抱来一套康熙县志,想看看效果。一小时后,全部转成了文字。图书馆一个小姑娘在翻检结果时,忽然笑出了声。大家围过去一看,原来是康熙年间当地闹饥荒的记载中,有这么一句:“邑令某,率民食观音土,便秘几死。”大意是:县令带头吃观音土,结果拉不出屎,差点憋死。原文是双行小注,藏在某页右下角,以前的扫描件根本没人注意到。版面分析模型把它单独拎出来,OCR准确识别出“便秘几死”四个字,尤其是那个“秘”字的异体写法,模型竟认得分毫不差。馆长感慨:“这就是数字化的意外之喜——它不光能存史,还能刨梗。”
案例二:上海初中生的“米价曲线”
另一个例子,是上海某初中生做的研究性学习。课题是“晚清上海米价波动”,数据全在《申报》的广告版里。那版式,横七竖八,什么“白粳”“上白米”“糙米”分类极细,价格数字还混在广告词里。以前要做这个课题,得蹲图书馆抄一个月。这次他用了文渊慧典的公开版,上传扫描件后,系统不但把价格条目全识别出来,还通过版面分析定位到“日期-品种-价格”的结构,直接导出Excel。孩子花了一周就画出了漂亮的米价曲线,作业拿了一等奖。他在致谢里写:“感谢那个不懂拒绝的老学究系统,它帮我翻遍了十年的报纸,却不求一杯奶茶。”
六、这场“战争”远没有结束
小菜听得热血沸腾:“那我们是不是已经赢了?竖排繁体彻底攻克了?”
大胖老师摇摇头,指了指窗外:“早呢。咱们现在搞定的,主要是刻本——印刷体。但古籍里还有大量手抄本、稿本、信札。那字迹,比医生的处方还狂草。而且,还有满文、蒙文、藏文古籍,它们也是竖写的。另外,识别出来只是第一步,后面的自动句读、实体提取、知识图谱构建,每一项都是硬骨头。”
“但好在,方向对了。从康熙字典为汉字立规矩,到深度学习让计算机‘识字’,再到我们用工程化手段把技术送到每个县图书馆,这条路走了三百年。竖排战争的下一阶段,是让AI不仅能‘看到’字,还能‘读懂’句,从文字识别走向知识挖掘。”
他顿了顿,抿了一口枸杞茶:“不过,那又是另一个大坑了。今天先讲到这儿,你回去把那个虫蛀的‘怪’字再测试一下,看咱们的新模型能不能猜到它缺的胳膊。”
小菜合上笔记本,脑子里闪过一句话:竖排三千载,一页一乾坤。键盘敲下的,是过去;屏幕亮起的,是未来。而这之间的桥梁,正由一行行代码浇筑而成。
窗外,图书馆的灯还亮着,王大姐正在电脑前,把又一张发黄的扫描件拖进文渊慧典的网页里。进度条转动,像时间在倒流。