简介:古籍OCR常因繁体异体字覆盖不足、竖排批注版面复杂、页面污损严重而识别率偏低。本文从字符集覆盖、版面分析、字体适应性和图像预处理四个维度,梳理影响古籍识别准确率的关键因素,并给出一套可落地的评测与优化方法,帮助研究团队把常用字识别率提升到99%以上、生僻字识别率稳定在95%以上。
古籍数字化项目在多个省份的中医文献、地方志和民国报刊整理中反复遇到同一类问题:同样的OCR流程,在现代印刷品上可以达到97%甚至更高的字符准确率,一到古籍场景就迅速下降到80%以下,甚至完全不可用。差异主要来自四个方面。
第一,字符集覆盖不足。 现代文档OCR通常基于GB2312或GBK字符集训练,覆盖6000到21000个汉字。但中医古籍中大量使用异体字、俗字和生僻药名,例如“蔞”“蕩”“虈”“薜”等字根本不在常用训练集内。模型遇到这些字符时,要么输出空白,要么错误地映射为字形相近的常用字,例如把“癥”识别为“症”。
第二,版面结构复杂。 现代文档以单栏横排为主,版面分析相对简单。而古籍常见半筒子页、上下双栏、天头地脚批注、行间夹注等形式。如果版面分析模型只能识别单栏结构,遇到双栏页面时会把左右两栏的文字拼接到同一行,或者把批注混入正文,导致输出顺序完全错误。
第三,字体形态差异大。 宋代刻本以软字体为主,明清刻本大量使用方体字,此外还有手写体、行书体等。同一字符在不同字体下的图像特征差异显著,单一字体训练的模型跨字体泛化能力差。
第四,图像质量退化。 古籍扫描件常见污损、透字、墨迹扩散、纸张发黄等情况。这些噪声会破坏字符轮廓,使分割算法失效。
理解了这些差异,就能更有针对性地设计评测指标和改进方案。
多数OCR工具对外公布的“识别准确率”是一个笼统的数字,例如“综合准确率98%”。但这个数字在古籍场景中参考价值有限,因为它通常只在现代印刷体测试集上统计,而且不区分字符频次。
更合理的做法是分层评测:
在实际测试中,常用字识别率达到99%以上、生僻字与异体字识别率达到95%以上,是一个可以追求且具有实用价值的目标。以《伤寒论》通行刻本的测试为例,随机抽取1000个常用字进行人工校验,仅因页面轻微污损错1个,对应99.9%的字符级准确率,这意味着后续人工校对工作量可以降低一个数量级。
字符集覆盖是古籍OCR的第一道门槛。如果模型的输出层只有6000多个类别,那么无论图像特征提取得多好,遇到“蕩”这个字时也只能在6000个类别里找一个最接近的“荡”来输出。从这个角度看,“认得多”和“认得准”不是两个独立指标,而是相互依赖的。
一套面向古籍的OCR系统,字符集至少需要覆盖以下范围:
GB2312: 6763个常用简体汉字GB18030-2022: 27533个常见繁简及异体汉字Unicode扩展区: 中医、方志、佛经等领域的生僻字少数民族语言: 藏文、蒙古文、满文等
以中医古籍为例,“脈—脉”“癥—症”“瘰—瘰”这类异体对应关系在文献中有特定语义,不能简单归一化。系统需要能输出原始字形对应的码点,由后续整理环节决定是否按照规范做映射。
此外,跨语言能力对多民族医学文献研究具有实际意义。藏医古籍中的藏文识别、蒙古文古籍的语序保持,都不是传统汉字OCR所覆盖的范围。如果项目涉及这类材料,在选型阶段就应把多文种支持纳入评测项。
版面分析是古籍OCR中最容易被低估的环节。一个常见误区是:只要字符识别准确率足够高,版面乱一点也能接受。但在批注本场景中,版面分析失败会导致整页输出失去使用价值——读者无法判断哪些文字属于正文,哪些属于批注,更无法按照古籍的阅读顺序还原原始逻辑。
一个有效的古籍版面分析流程包含以下步骤:
步骤1:图像预处理。 包括二值化、倾斜校正、去噪。对于发黄纸张,采用自适应阈值比全局固定阈值效果更好。
步骤2:版面元素检测。 区分文字区域与非文字区域(板框、印章、墨点),再对文字区域进一步分类:正文栏、天头批注、地脚注文、行间夹注、页码等。
步骤3:版面结构解析。 根据检测结果重建阅读顺序。古籍阅读顺序通常是从右至左、从上到下,但具体到某一页还要参考版式特征——比如半筒子页的版心位置、双栏排布的栏线位置等。
步骤4:文本行检测与字符切割。 在竖排文本中,文本行是竖直的,字符沿行方向从右到左排列。如果沿用横排文本的检测逻辑,会得到完全错误的行方向。
以清代的《金匮要略》批注本为例:正文分上下两栏,天头有朱笔点评。如果版面分析不能正确区分朱笔与墨笔、不能识别上下栏边界,输出结果会出现两类错误:批注混入正文,或者上下栏顺序颠倒。而在正确实现上述四个步骤后,这类版面的结构还原准确率可以接近100%。
明清刻本以方体字为主,宋元刻本以颜体、欧体等软字体为主。字体差异带来的挑战在于:同样的字符在不同字体下,笔画粗细、连断、结构比例都会变化。
针对这一问题,训练数据上需要做字体扩增。具体方法包括:
- 收集不同朝代、不同刻工风格的扫描图像- 对同一文本获取不同字体的渲染结果- 在训练集中保持字体分布的均衡性
图像退化方面,古籍常见的问题包括:
针对这些问题,预处理环节可以采用形态学操作去除小面积污渍,使用双边滤波保持笔画边缘的同时去除噪点。对于透字问题,可以利用正反面的对称性进行估计与抑制。这些是行业通行做法,不依赖于特定工具。
评测识别率只是第一步,真正有价值的是把它嵌入到项目工作流中。以古籍数字化项目为例,推荐的工作流如下:
阶段一:小样本评测。 从待处理文献中抽取30到50页代表性样本,覆盖不同的版面类型、字体风格和退化程度。人工标注真实文本,计算分层识别率,而不是只看一个笼统数字。
阶段二:参数调优。 根据评测结果调整预处理参数、版面分析选项和字符集范围。比如处理半筒子页时启用竖排模式,处理多栏时启用栏线检测。
阶段三:批量处理与质检。 对全量文献进行OCR,同时输出置信度分数。对低置信度页面进行人工抽检,高置信度页面可以减少校对轮次。
阶段四:迭代反馈。 把人工校对中发现的错误按照类型归类——是字符错误、版面错误还是图像问题——以此指导下一轮参数调整或模型训练数据的补充。
这种分阶段推进的方式,比一开始就追求全量自动化更务实,也更容易在项目周期内交付可用的中间成果。
古籍OCR的识别率不是单一指标,而是字符集覆盖、版面分析、字体适应和图像预处理共同作用的结果。评测时应当区分常用字与生僻字、字符层准确率与版面层准确率,避免被综合数字误导。在工程实践中,先通过小样本评测建立基线,再有针对性地调整预处理与版面分析策略,最后将人工校对与自动识别形成闭环,是提升整体效率的可靠路径。