简介:本文系统解析古籍数字化整理中的三项核心AI技术:文字识别、自动标点与命名实体识别。读者将了解如何通过“检测—识别—排序”流水线从影印图像中还原文字与阅读顺序,如何用序列标注模型为无断句古籍自动加注标点,以及如何识别人名、地名、书籍、时间、官职五类专名。文章兼顾原理、工程实现要点与评估方法,适合从事文档数字化、OCR与NLP应用开发的工程师参考。
古籍善本既是文化遗产,也是可供挖掘的文本数据。然而,影印图像中的文字缺乏机器可读的编码结构,多数古籍更没有现代意义上的断句与标点,专有名词也分散在浩繁篇章之中。要让这些材料真正“可用”,需要一条从图像到结构化文本的完整处理链路。本文围绕文字识别、自动标点、命名实体识别三项核心技术,讨论古籍文本结构化的工程实现思路与关键细节。
古籍数字化整理的目标并非简单地把书页拍成图片,而是把页面上的视觉信息转换为带层级结构的文本表示。这一转换可以拆解为几个递进层次:
三层技术恰好对应上述四个层次中的后三个:文字识别解决字符与顺序,自动标点解决句读,命名实体识别解决语义标签。三者串联,构成一条“图像→文本→标点文本→带实体标注的结构化文本”的处理流水线。
古籍 OCR 与通用文档 OCR 的最大差异在于版面。竖排、从右至左的阅读方向、双行小字夹注、边框与界栏、批注与印章,都会干扰朴素的“从左到右、从上到下”假设。因此工程上通常把文字识别拆成三个子问题。
检测阶段负责从整页图像中定位每一个字符或文本行。常见做法是先做版面分析,分离正文区、批注区、边框与插图,再在正文区内进行字符级检测。对于粘连严重的刻本字体,字符级检测往往比行级检测更稳健,因为行级切分在双行夹注处容易出错。输出通常是一组带坐标的字符框:
# 示意:检测结果的数据结构chars = [{"box": [x1, y1, x2, y2], "line_id": 3, "column_id": 1},{"box": [x1, y1, x2, y2], "line_id": 3, "column_id": 2},# ...]
每个字符框被裁剪、归一化后送入识别模型,输出候选字符及置信度。古籍识别的难点集中在异体字、避讳字、俗字与残缺字形上。实践中通常需要在训练数据中覆盖这些变体,并在解码阶段引入字符集约束(例如限定在古籍常用字表范围内),以降低把生僻字形误判为形近常用字的概率。原文提到的准确率超过 97.5%,这一指标通常需要在明确的测试集与统计口径下理解:它一般指字符级正确率,且对清晰度较好的扫描件更为乐观;对于污损、虫蛀、墨迹漫漶的页面,实际表现会明显下降,因此工程上应保留置信度输出,供后续人工校对排序使用。
识别出“是什么字”还不够,还要知道“先读哪个字”。阅读顺序的判定需要结合文字内容与文字位置两方面信息:位置提供先验(竖排优先按列、列内自上而下、列序自右向左),内容提供校验(例如利用语言模型判断某一排列是否形成通顺字串)。一种实用策略是先按几何规则生成候选顺序,再用语言模型对候选顺序打分,在少数歧义场景(如跨栏、夹注插入位置)做选择。对双行夹注,通常需要单独建一条子序列,再按注释锚点插入主序列。
古籍原文大多没有现代标点,部分只有简单的句读符号。自动标点的本质是:在字与字之间的每个“间隙”上做两类判断——此处是否断句,以及断句处应使用何种标点。
把输入视为字符序列,在每个相邻字符之间设置一个分类位置,输出标点类型集合(如无标点、句号、逗号、顿号、问号、冒号等)。这本质上是一个序列标注问题,可用双向编码器加分类头实现:
# 示意:标点预测的输入输出形式tokens = ["学", "而", "时", "习", "之", "不", "亦", "说", "乎"]# 在每个字符后预测标点,None 表示不断句labels = [None, None, None, None, None, ",", None, None, "?"]
模型为每个间隙计算各标点类型的概率,取概率最高者作为输出。训练数据可从已整理过的标点古籍中获取,但需注意不同整理者的标点风格差异,避免模型学到互相冲突的标注习惯。
在完成断句后,进一步的任务是识别文本中的专有名词。原文给出的实体类型包括人名、地名、书籍、时间、官职五类,这五类基本覆盖了古籍检索与知识组织中最常用的查询维度。
实体识别通常采用序列标注框架,为每个字符预测实体标签。工程上建议使用带边界信息的标注方案(如 B/I/E 体系),避免相邻同类型实体被合并:
# 示意:BIO 风格标签text = ["孔", "子", "适", "周", "问", "礼", "于", "老", "聃"]labels = ["B-PER", "I-PER", "O", "O", "O", "O", "O", "B-PER", "I-PER"]
五类实体的边界判定各有难点:人名存在单字名与字号、谥号混用;地名存在古今异名与简称;书籍名常含“志”“记”“传”等易与普通词混淆的字;时间表达包括干支、年号、纪年等多种形式;官职名则常见长短不一的复合结构。因此标注规范需要明确定义边界与嵌套处理规则。
基础方案是字符级序列标注模型,输出每个字符的实体标签。在此基础上可加入两类增强:
实体识别不宜只看整体准确率,应按实体类型分别统计精确率与召回率。人名与地名的召回通常较高,书籍名与官职名的边界错误更集中,时间表达则受历法换算影响。分类型评估才能定位真正的薄弱环节。
三项技术不是孤立的,工程上需要把它们组织成可回溯的流水线:
几个容易被忽视的工程细节值得强调:
古籍文本结构化的核心,是把一个视觉与语言交织的复杂问题分解为字符识别、顺序还原、句读判定与实体抽取四个可独立优化的子问题,再用统一的置信度机制把它们串成可校对、可迭代的流水线。文字识别决定了下限,标点与实体识别决定了文本的可用上限。对开发者而言,真正的挑战不在单个模型的选型,而在版面多样性、标注规范一致性与错误传播控制这些工程层面的取舍。把这些环节做扎实,古籍材料才能真正从“可看”走向“可检索、可计算、可关联”。