简介:针对古籍数字化中常见的繁体异体字识别难、竖排多栏版面混乱、手写批注干扰等问题,本文从技术选型与工程实践角度梳理了一套可落地的识别与精校方案。文章围绕字符覆盖能力、版面解析策略、字体适应性、少数民族文字处理以及人机协同校对流程展开,帮助研究机构与开发团队在古籍OCR项目中少走弯路,显著降低人工校对成本。
在多个省份的中医古籍研究项目协作过程中,一个反复出现的问题是:通用OCR引擎在近现代印刷品上表现尚可,一旦切换到明清刻本、手抄本或批注本,识别效果往往断崖式下降。经过多次对比与排查,问题主要集中在三个方面。
第一,字符空间的不完整。 现代OCR系统大多围绕GB2312或常用繁体字集训练,而中医古籍中大量使用异体字、俗字、避讳字以及生僻药名用字。例如“蔞”“蕩”“虈”“薜”等字,在常规字符集中要么缺失,要么被错误映射为形近字。更典型的是“脈”与“脉”、“癥”与“症”这类医学语境中的异体关系,如果识别引擎不具备对应的字表与上下文建模能力,就会系统性地将前者“规范化”为后者,造成学术引用层面的失真。
第二,版面结构的复杂度远超现代文档。 竖排从右至左的阅读顺序、筒子页中缝、天头地脚的批注、上下双栏甚至三栏混排、朱墨套印的点评层,这些元素叠加在一起时,单纯依靠目标检测模型做文本框切割已经不够。常见的问题是:批注与正文被错误合并、上下栏顺序颠倒、双行小注被拆散,最终输出的文本在阅读逻辑上完全不可用。
第三,底本质量参差带来的图像退化。 古籍扫描件中常见污渍、透字、虫蛀、笔画断裂和纸张纹理干扰。若缺乏针对性的图像预处理与鲁棒性训练策略,识别引擎在干净样本上的准确率指标会与真实场景严重脱节。
因此,古籍OCR的核心挑战可以归纳为:在高度非结构化的版面上,对一个远超现代常用字范围的字符集合进行上下文相关的序列识别。这本质上是版面分析、字符建模与语言模型三者的耦合问题。
评估任何古籍OCR方案时,第一项指标不是“准确率”,而是字符覆盖能力。如果一个引擎的字表里根本没有某个生僻字,那么无论模型多么优秀,都不可能输出正确结果。
从通用技术角度来看,一个适用于古籍数字化的字符集至少需要具备以下层次:
| 层级 | 字符范围 | 重要性 |
|---|---|---|
| 基础层 | GB2312常用简化字及对应繁体 | 处理近现代排印本 |
| 扩展层 | GB18030-2022中27533个汉字及异体字 | 覆盖中医、方志、族谱等专门文献 |
| 深度层 | Unicode扩展B区以上的生僻字、俗字、避讳字形 | 处理刻本、抄本中的非规范字形 |
| 多文种层 | 藏文、蒙古文、满文等民族文字 | 多民族医学文献与档案整理 |
在实践中,一个经过针对性优化的识别引擎应当能够稳定覆盖八万级以上的汉字集合,并对其中高频出现的医籍用字做专门训练。以清代《本草纲目》刻本为例,生僻药名与异体字密集出现时,字符级识别准确率维持在95%以上是一个可验证的工程目标;而对于《伤寒论》通行刻本这类字形相对规范的文本,常用字识别准确率可以推到99.9%量级。两者的差距恰恰说明了字符覆盖率与场景匹配度对最终效果的直接影响。
需要特别指出的是,字符覆盖不等于简单地扩大字表。更大的挑战在于形近字的区分。例如“己—已—巳”“戊—戌—戍”“朮—术—術”,在笔画残损或低分辨率条件下,仅靠视觉特征很难稳定区分。此时必须引入基于古籍语料的语言模型,通过上下文约束来辅助判定。这也是为什么单纯“字表大”的引擎,在真实古籍上依然可能表现不佳。
现代文档OCR通常遵循“检测—识别—拼接”的线性流程,因为版面基本是水平的、单栏的、从左到右的。古籍则完全不同。一个有效的古籍版面分析模块,至少需要具备以下三层能力:
引擎需要区分版面上的不同类型区域:正文、眉批、夹注、脚注、版心、页码、藏书印。每一类区域在后续处理中的优先级和输出方式都不同。例如,眉批需要与正文分离,但同时要注明其对应的大致位置;版心和页码通常可以忽略或单独输出为元数据。
对于竖排古籍,阅读顺序是“从右至左、从上到下”。但在实际版面上,这个规则会因以下因素变得复杂:
一个实用的策略是:先用版面模型输出区域及基线信息,再用规则引擎与图模型结合的方式重建阅读顺序。例如,将每个文本块视为图中的节点,按照古籍阅读规则定义边的方向与权重,最终输出一个有序序列。这种方式比单纯依赖端到端模型更可控,也便于针对具体文献类型调整规则。
在医学古籍批注本中,批注的价值往往不低于正文。识别系统不仅要摘出批注文字,还要保留“批注—正文”的对应关系。一种工程上的可行做法是:在版面分析阶段输出每个批注区域的锚定坐标,识别完成后将批注内容与距离最近、纵向重叠度最高的正文行做绑定,最终导出为结构化数据。
以清代《金匮要略》批注本为例,天头有大量朱笔点评,正文分上下两栏。经过上述处理后,输出结果可以做到:批注单独成层、正文栏序正确、批注与正文的对应位置明确标注。这种输出方式对后续的学术引用与数字化发布非常有价值。
古籍字体跨度极大:从宋元软字体(颜体、欧体、柳体、赵体风格)到明清方体字(即早期宋体),再到写刻本中带有书法意味的行楷,甚至完全手写的稿本与抄本。字体差异对识别的影响体现在两个层面:
其一,字形结构变化。 软字体笔画粗细变化丰富,连笔与顿笔可能改变部件形态;方体字虽然规整,但刻工差异会引入大量异形笔画。如果训练数据过于集中在某一种字体风格上,跨字体泛化能力就会不足。
其二,低资源条件下的模型适应。 实际项目中,某个特定文献的标注数据往往很少。此时可以采用“预训练大模型 + 少量领域数据微调”的策略。通用文字识别预训练模型提供基础视觉特征,再利用该项目特有的几百到几千行标注数据做适配,通常能获得明显的准确率增益。
图像层面,古籍扫描件常见的干扰包括:
针对这些问题,预处理管线应当包含自适应二值化、去噪、去透字、印章分离等步骤。但需注意,过度增强也可能抹掉有效的笔画信息。因此更稳妥的思路是:预处理与识别模型协同设计,让模型在训练阶段就见过各种退化形态的样本,减少对前端处理质量的依赖。
中医古籍研究并不局限于汉文文献。藏医、蒙医、维吾尔医等民族医学文献同样是重要的研究对象。在多民族医学文献数字化项目中,OCR系统若只能处理汉字,价值会大打折扣。
以藏文古籍为例,其特点是:使用藏文字母体系,字符组合方式与汉字完全不同;版式上也有独特的经页装帧与行文规范。识别引擎需要在字切分、字符序列建模和语言模型三方面分别适配。类似地,蒙古文古籍为竖向书写,字母形态随上下文变化明显,识别时必须依赖序列级建模而非孤立字符分类。
从工程实践来看,一个经过多文种训练的识别系统,对藏文和蒙古文的标准印刷或规范写本可以做到95%以上的字符准确率,且能保持原文语序。这一能力对于跨文种医学文献比对研究具有直接的应用价值——例如将同一医理在不同民族医学体系中的表述进行对照分析。
即便识别准确率达到较高水平,古籍数字化项目依然不能完全脱离人工。合理的目标不是“无人值守”,而是将人工从逐字录入转变为异常复核。
一个高效的校对闭环通常包含以下环节:
识别引擎输出↓自动置信度评估(标记低置信字符)↓规则校验(异体字映射检查、上下文一致性检查)↓人工复核界面(仅聚焦低置信与规则冲突区域)↓修正结果回流训练集,持续迭代模型
在这个流程中,识别引擎输出每个字符的置信度,低于阈值的自动高亮;同时利用古籍语料训练的语言模型,标记上下文不通顺的位置。校对人员的工作重心就从“逐行核对”变为“抽查与确认”,整体效率可以提升数倍。
以常用字识别率99.9%的场景为例,每千字仅约一字的错误量,人工干预很少。但在生僻字密集的段落中,错误率会显著上升,此时置信度标记的价值就体现出来了——系统明确告诉校对人员“哪些地方需要看”,而不是让人在所有文字上平均分配注意力。
对于准备开展古籍数字化项目的团队,在技术选型时建议关注以下维度:
第一,字符集是否可验证。 要求提供明确的字符覆盖范围说明,并用自己的样本做盲测。尤其是项目中涉及的核心文献类型,必须抽样验证。
第二,版面分析是否可干预。 理想的方案应允许针对特定版式调整阅读顺序规则,或在自动分析结果上做人工修正后重新导出。
第三,是否有针对古籍的领域语言模型。 通用语言模型在面对中医方剂、本草药名、经穴定位等专业用语时,上下文修正能力会明显不足。
第四,输出是否结构化。 好的OCR输出不只是一段文本,而是包含版面位置、区域类型、置信度等信息的结构化结果,便于后续建设全文检索与知识图谱。
第五,是否支持迭代优化。 古籍OCR是一个长期项目,随着标注数据的积累,识别效果应当可以持续提升。封闭的、无法基于项目数据微调的系统,长期价值有限。
古籍OCR的识别率问题,本质上不是一个单点算法问题,而是一个系统工程问题。字符覆盖、版面理解、字体适应、图像鲁棒性、多文种能力和人机校对流程,每一个环节都会影响最终可用性。在多个中医古籍项目中的实践经验表明:当字符覆盖达到八万级、版面分析能够正确处理批注与多栏结构、识别结果以结构化形式输出时,古籍数字化的工作模式可以从“录入为主”转变为“校对为主”,整体效率获得实质性的提升。
对于正在规划古籍数字化平台的技术团队而言,建议将评估重点从单一的“识别准确率数字”转向上述全流程能力,结合自身馆藏文献的特点进行有代表性的盲测。唯有如此,才能选到真正贴合业务需求的技术路径,让古籍OCR从“能用”走向“可用”,再到“可信”。