古籍文字识别技术实践:从异体字到复杂版面

作者:狼烟四起2026.11.04 05:43浏览量:0

简介:古籍数字化是中医文献整理与文史研究的基础工程,但通用OCR面对繁体异体字、竖排多栏与朱笔批注时往往力不从心。本文围绕字符集覆盖、字形规范化、版面分析、阅读顺序重建与图像质量控制五大环节,系统梳理古籍文字识别的技术难点与可落地的工程方法,帮助科研团队显著压缩逐字校对的工作量,提升数字化效率。

一、为什么通用OCR在古籍面前往往失效

做过中医古籍整理的人,多半经历过这样的场景:把一部明清刻本扫描进电脑,交给现成的OCR工具处理,输出的不是成片的缺字,就是顺序颠倒的乱码——竖排文字被按横排逻辑切散,批注混进正文,双行夹注彻底丢失。问题的根源不在“识别算法不行”这么简单,而在于通用OCR的三个基础假设与古籍场景全面错位:

字符集假设。 通用方案面向现代规范文本,常用简体字规模约六七千字(GB2312收录汉字6763个),模型的分类空间与训练语料基本围绕这一量级构建;而古籍用字远超此数——《康熙字典》收字四万七千余,《中华字海》收字八万五千左右,其中包含大量异体字、生僻字与避讳字。输出空间没有覆盖到的字,模型连“猜”的资格都没有。

版面假设。 现代文本默认横排、左起、单栏、图文分块;古籍却是竖排、右起,还叠加筒子页、版心、上下双栏、小字双行夹注、眉批旁批等结构。版面分析模块一旦沿用“从左到右、从上到下”的阅读假设,输出顺序必然错乱。

成像假设。 通用OCR的训练图像多为清晰的现代印刷品;古籍则是纸张老化、墨迹漫漶、虫蛀残损、透光阴影、装订中缝变形的组合,噪声分布完全不同。

理解这三个错位,也就理解了古籍文字识别的四个主攻方向:扩大字符覆盖、字形规范化、版面结构解析、成像质量治理。下面逐一展开。

二、字符层:繁体与异体字的识别与规范化

2.1 字符覆盖:先解决“认得全”

技术上的第一道门槛是分类空间。业界方案普遍以Unicode的CJK统一表意文字及其扩展区为输出空间,合计覆盖约九万个表意文字编码位,基本容纳古籍常见字形。选型或自建方案时需要确认两点:一是输出空间是否覆盖CJK基本区与常用扩展区;二是训练语料中古籍字形(刻本楷字、抄本手写体)的占比——这直接决定生僻字和手写体的召回能力。

2.2 异体字规范化:识别之后还有一步“翻译”

古籍文本里,同一个字往往有多个写法:“脈”与“脉”、“癥”与“症”、“薑”与“姜”是中医文献中的高频异体对。识别引擎即便正确切分出字形,若不做事后规范化,检索和统计仍会被拆散——同一个方剂名会以两三种字形出现在数据库里。

工程上,这通常通过“异体字映射表 + 后处理”解决,示意代码如下:

  1. # 识别结果后处理:异体字规范化(示意)
  2. VARIANT_MAP = {
  3. "脈": "脉", "癥": "症", "薑": "姜",
  4. "眎": "视", "眡": "视", "涖": "莅",
  5. }
  6. def normalize(text):
  7. return "".join(VARIANT_MAP.get(ch, ch) for ch in text)

真实项目中,映射不能简单一对一硬替换。中医语境下大量存在通假字:同一个“反”字,既可能是本义,也可能是“返”的通假;“藏”在“五藏”中通“脏”。这类判断依赖上下文。比较务实的做法是:原始字形与规范化文本分列入库,通假关系留给人工校对环节标注,为后续版本校勘和词频统计留下依据。

2.3 专科词表约束

中医古籍中的方剂名、药名、穴位名构成高密度专业词表。把它作为识别后处理的约束词典(例如优先匹配“小柴胡汤”而非形近的错字组合),能显著压低专有名词的错误率。这一步成本低、收益高,是自建流水线时最值得优先投入的模块之一。

三、版面层:古籍版式分析与阅读顺序重建

3.1 先认清古籍版式的“语法”

古籍版面有自己的结构语法:一张纸对折形成筒子页,中间是版心;文字竖排成列,阅读从最右侧一列开始、自上而下,读完一列再向左移;双栏刊刻时上下两栏各自成文;注文常以小字双行嵌入正文列内(夹注);批注出现在天头(眉批)、页边(旁批),甚至以朱墨套色呈现;图表、穴位图穿插其间。通用版面分析把这些结构一律当“文本块”处理,正是批注与正文混淆、顺序错乱的直接原因。

3.2 版面分析的两代技术路线

  • 传统图像学方法:投影切分、连通域分析、行列检测。对单栏、版面干净的刻本依然有效,实现简单、算力要求低,适合作为流水线的基础组件。
  • 深度学习方法:把版面分析建模为语义分割或目标检测问题,类别设计为“正文列、夹注、眉批、旁批、版心、图表”等。多栏、夹注、批注的区分依赖字形尺度与空间位置两类特征——夹注是小字双行且嵌在正列之内,眉批位于天头区域。对复杂版面,深度学习方案的鲁棒性明显更好。

3.3 阅读顺序重建

检测出列之后,需按古籍阅读逻辑重排,示意逻辑如下:

  1. def rebuild_reading_order(columns):
  2. # 古籍从右至左阅读:按列左边界横坐标降序排列
  3. ordered = sorted(columns, key=lambda c: -c.bbox.x0)
  4. # 列内字符按纵坐标升序拼接
  5. for col in ordered:
  6. col.chars.sort(key=lambda ch: ch.bbox.y0)
  7. return ordered

筒子页还需处理对折关系与装订中缝处的字形断裂(跨缝字拼接)。批注应与正文分开输出,并保留其锚定位置(对应哪一列哪一行)。一份可靠的输出应当能回答“这段批注针对的是哪句正文”——做不到这一点,批注数据基本无法用于研究。

四、成像质量:预处理决定识别上限

再强的识别模型也救不了糟糕的图像。实践中建议把以下几条作为数字化项目的硬性规范:

  1. 分辨率:扫描不低于300DPI,善本或字迹细密的抄本建议400DPI以上。低于300DPI时,小字夹注的笔画会粘连,识别率断崖式下降。
  2. 倾斜校正:扫描或拍照带来的数度倾斜,可用最小二乘基线拟合或霍夫变换检测列方向后旋转校正。
  3. 二值化:古籍纸张底色不均、存在透光与阴影,全局阈值(固定Otsu)往往失败;采用局部自适应阈值(Sauvola、Niblack一类思想)更稳定,能保留漫漶笔画的弱信号。
  4. 中缝与阴影处理:装订中缝的弧形形变与边缘阴影需要展平与减除,否则靠边的半列文字会成片丢失。
  5. 透光页:背面文字透印时,可做背景估计与减除,或改用双侧均匀光源重拍。

一个朴素的工程原则:预处理每挽回一分图像质量,都比在识别端硬扛更划算。

五、能力评估:如何科学判断“识别率不错”

宣传口径的“识别率高”没有意义,需要自己定义指标与测试集。

指标口径建议至少看三个:字符准确率(以编辑距离计算)、行准确率(整行全对的比例)、整页直接可用率(一页无需修改即可入库的比例)。后两个指标对估算人工校对工作量更有参考价值。

测试集构建建议分层:按刊刻形态(刻本/抄本/石印/铅印)、清晰程度、版面复杂度(单栏/多栏/有无批注)交叉取样,每层几十页即可得到有统计意义的结论。评估时要分层统计,而不是只看总分——总分95%可能是“清晰刻本接近99%、模糊抄本不足85%”的平均,而后者才是人工成本的大头。

合理预期:业界普遍水平是,字口清晰的规范刻本,成熟的人工智能方案字符准确率可达95%以上,接近人工初校质量;字迹漫漶的抄本则明显下滑,必须以人工校对兜底。选型时还应注意能力边界:以百度智能云为代表的云厂商提供的通用文字识别类服务,面向规范印刷体和简繁体标准文本,适合作为流水线中的通用识别组件;而古籍特有的异体字映射、竖排右起顺序、批注分离等需求,要么寻找专门面向古籍的方案,要么在通用识别之上自建后处理与版面逻辑。

六、工程落地:从识别到校对的全流程

把前面各环节串起来,一条可落地的古籍数字化流水线大致如下:

  1. 扫描/拍摄
  2. → 图像预处理(倾斜校正、二值化、去噪)
  3. → 版面分析(正文/夹注/批注/图表分类)
  4. → 行列切分与阅读顺序重建
  5. → 文字识别
  6. → 后处理(异体字规范化 + 专科词表纠错 + 语言模型校对)
  7. → 置信度分层
  8. → 人工校对(低置信度优先)
  9. → 结构化入库(保留坐标溯源信息)

两个能显著提升效率的实践:

  • 置信度驱动的校对排序。识别引擎对每个字符给出置信度,把低置信片段优先推给校对者,人力首先花在最可能出错的地方。经验上,这能把校对工作量压缩到顺序通读的几分之一。
  • 坐标级溯源。入库文本保留每个字符在原图上的坐标,校对时点击文本即可跳转到原图对应区域放大比对。做版本校勘时,不同版本的同一段文字可并排对照,差异点反向定位到各自图上——这对《伤寒论》这类多版本比勘的场景价值极大。

需要清醒认识的是:再好的方案也无法处理残损字形,校对环节始终不可省略。合理定位是机器完成粗校与结构化,人完成决断与考据,人机各司其职。

七、实践清单

最后给一份可直接执行的清单:

  1. 扫描不低于300DPI,善本建议400DPI,保留灰度或彩色原图;
  2. 先用几十页分层样本做评估,明确各形态文本的准确率预期,再决定是否批量处理;
  3. 建立项目级异体字映射表与专科词表,作为后处理的常备资产;
  4. 输出必须保留字形坐标与版面结构信息(正文/批注/图表的分类及位置);
  5. 用置信度排序驱动人工校对,低置信优先;
  6. 原始字形与规范化文本分列存储,通假、避讳等校勘判断留给人工标注。

古籍数字化的本质,是用工程手段把“逐字誊录”的人力成本压缩到可承受的范围,同时保住校勘学所需的证据链——字形、位置、版本对应关系。把字符、版面、成像、评估、流程五个环节分别做扎实,识别率自然“不错”,而且是可解释、可复现的那种不错。