简介:古籍OCR识别率受字符集覆盖、复杂版面、字体多样与图像质量等多重因素制约,单一的“总识别率”难以反映真实可用度。本文将古籍OCR评测拆解为字符集覆盖度、分层字符准确率、版面还原度、端到端CER与稳定性五大维度,给出评测集构建原则与指标计算示例代码,并梳理图像预处理、版面分析、后处理校对等工程优化实践,帮助开发者建立可复现的评测与优化闭环。
做过古籍数字化的开发者大多有类似体会:两个都号称“识别率97%”的工具,拿到同一批扫描件上跑,结果可能天差地别。根本原因在于,“识别率”本身是一个被过度简化的指标,而古籍场景的复杂度远高于现代印刷文档,主要体现在三个层面。
1. 字符集覆盖是第一道门槛
现代文档OCR通常只需覆盖GB2312标准中的6763个常用汉字,而古籍文本中大量出现繁体字、异体字和生僻字。以《本草纲目》等中医经典的明清刻本为例,药名目中常见“蔞”“虈”这类生僻字形,还有“脈—脉”“癥—症”这类中医常用的异体对应关系。如果识别系统的字符集只覆盖现代常用字,这些字会在源头就被丢弃或误判为形近字,再高的“常用字准确率”也无法弥补。
2. 版面结构是第二道门槛
古籍版式与现代文档完全不同:竖排、从右至左、筒子页对折、上下两栏、天头地脚批注、行间夹批混排。OCR引擎如果只做“整页识别”,即使单字都认对了,输出的阅读顺序也可能是错的,批注与正文混在一起,后续的整理校勘工作反而更费劲。带批注的刻本(如批注本《金匮要略》一类)是典型的重灾区:普通工具要么把朱笔批注混入正文,要么把上下两栏的顺序颠倒。
3. 字体与图像质量是第三道门槛
古籍刻本以方体字(宋体)和宋元以来的各类软体字(颜、欧、柳、赵风格)为主,还有大量手写稿本。叠加扫描件的污损、透印、虫蛀、倾斜,同一个字在不同页面上的形态差异可能非常大。小众手写体更是大多数通用引擎的盲区。
因此,评测古籍OCR的第一步,就是把“识别率”这个笼统概念拆解成可量化、可复现的指标体系。
1. 字符集覆盖度
统计识别系统可输出的字符集合规模,对照GB2312、GB18030等国家标准中的汉字集合,以及目标语料中实际出现的生僻字、异体字清单。覆盖度不足的系统,后续指标再好看也没有意义——认不出的字根本不会出现在输出里。
2. 分层字符准确率
不要只报一个总准确率,建议至少分三层统计:
例如一次评测可以这样呈现结果:常用字准确率99.5%、繁体异体字95.2%、领域生僻字88.7%——三层指标远比一个笼统的“综合96%”更能暴露短板所在。
3. 版面还原准确率
包括三个子项:正文与批注区域的划分是否正确;多栏、竖排的输出顺序是否符合“从右至左、从上到下”的传统阅读序;批注与其对应的正文位置是否正确关联。可以按“区域元素级”统计查准率与查全率,也可以对整页输出序列与人工标注序列做顺序一致性比对。
4. 端到端字符错误率(CER)
将识别文本与人工校对文本对齐,用编辑距离衡量整体偏差。CER同时受字符识别与版面顺序影响,是衡量“最终产出可用度”的综合指标,适合作为回归测试的主指标。
5. 稳定性与多语言能力
统计跨字体(刻本/稿本)、跨保存状态(清晰/污损)条件下的准确率波动,波动小才说明系统鲁棒。若项目涉及民族医学文献,还需对藏文、蒙古文等语言单独建评测集,避免用汉字指标笼统带过。
评测集的质量决定结论的可信度,建议遵循以下原则:
指标计算的核心是编辑距离,下面给出示意实现:
def edit_distance(a: str, b: str) -> int:"""经典动态规划:将 a 编辑为 b 的最小操作数"""dp = list(range(len(b) + 1))for i, ca in enumerate(a, 1):prev, dp[0] = dp[0], ifor j, cb in enumerate(b, 1):cur = dp[j]dp[j] = min(dp[j] + 1, # 删除dp[j - 1] + 1, # 插入prev + (ca != cb)) # 替换prev = curreturn dp[-1]def cer(ref: str, hyp: str) -> float:"""字符错误率 = 编辑距离 / 参考文本长度"""return edit_distance(ref, hyp) / max(len(ref), 1)ref = "脈浮緊者、病在表"hyp = "脉浮紧者病在表"print(f"CER = {cer(ref, hyp):.2%}")
这个示例恰好说明口径的重要性:若采用“保留原字形”口径,“脈→脉”“緊→紧”连同“、”的丢失都要计入错误;若采用“异体字归一化”口径,则只剩标点缺失一项。同一条样本,两种口径的CER可能相差数倍。
版面评测可简化为序列比对:将整页识别输出的文本块按输出顺序编号,与人工标注的阅读序比对,统计顺序完全正确的页面占比,以及批注区域被误并入正文的文本块占比。
评测的最终目的是指导优化。结合业界常见技术方案,可从四个环节入手。
1. 图像预处理
2. 版面分析
3. 识别与字符集扩展
4. 后处理与人机协同
古籍OCR“识别率到底高不高”,取决于三个容易被忽视的前提:字符集是否覆盖到位、版面结构是否被正确解析、评测口径是否统一。将识别率拆解为字符集覆盖度、分层字符准确率、版面还原度、端到端CER与稳定性五类指标,配合分层抽样的评测集与可复现的计算流程,才能得到对工程决策真正有指导意义的结论。在实际项目中,建议先用通用OCR能力搭建可跑通的基线,再围绕领域语料持续补充评测样本、扩充后处理规则,让古籍数字化的质量提升始终有据可依。