在古籍数字化的流水线中,从OCR识别到自动标点,往往卡在看似简单却极其棘手的“最后一公里”——换行符的语义歧义。OCR输出的文本流中,单个换行符\n仅表示物理行尾,并非语义上的段落边界;然而早期自动标点API将其误判为段落终结,导致每一行都被当作独立句子处理,标点符号频繁错位,尤其对律诗、骈文、奏折等连续文本干扰严重。为解决这一底层解析冲突,用户不得不手动删除所有换行,将长篇文献压缩为单行字符串,这不仅丢失了原始版式信息,也破坏了后续排版还原的可能性。
所谓多行段落,即内容连续但因排版需要跨越多行的文本块,行间仅以\n分隔。古籍OCR的text字段天然输出这种格式。面对这一场景,古籍酷自动标点API近期完成两项关键进化:一是段落完结判定逻辑从“单个\n”升级为“两个及以上连续\n”,使同一段落内的连续行得以整体标点;二是在此基础上进一步推出“保留换行”(keep_wrap) 与“排除特定行”(target) 两大参数,分别解决版式还原与选择性标点的工程化难题。
保留换行:让标点后的文本“记住”原来的排版
对于古籍整理、影印本对照、校勘记生成等场景,保留原始版式中的换行符至关重要——它不仅影响阅读体验,更关系到后续的版面重排与引用定位。
为此,自动标点API新增了整数参数 keep_wrap,用于控制标点结果中是否保留源文本的换行符\n:
- keep_wrap = 0(默认):标点结果中不保留任何换行符。所有文本行被合并为一个连续的字符串,标点符号按语义正常添加。适用于无需关注原始版式的全文检索、文本分析等场景。
- keep_wrap = 1:标点结果会在对应位置插入源文本中的换行符。具体而言,API在逐行处理时,会记录每个\n出现的位置,完成标点后再将这些换行符按原序回填。这样,输出文本既拥有正确的标点符号,又保持了原始OCR结果的行末换行格式,既方便逐行对照原始图像,也支持自动化排版工具直接复用。
演示代码(Python)
import requests
from pathlib import Path
url = 'https://ap2.jzd.cool:9043/punct_pro'
headers = {'Authorization': 'gjcool YOUR_ACCESS_TOKEN'}
text_file = Path(__file__).with_name('test.txt')
data = {'src': text_file.read_text(encoding='utf-8'), 'keep_wrap': 1}
response = requests.post(url, headers=headers, data=data)
result = response.json()
print(result['text'][0])
排除特定行:让不该标点的部分“全身而退”
古籍OCR的输出并非每一行都需要添加标点。典型的例子包括:
- 偈颂:佛经中的偈颂(如《金刚经》中的“一切有为法,如梦幻泡影”),其排版常以半角空格进行分词或对齐,本质上不需要现代标点介入。
- 音释:经卷末尾的音义注释,通常用 【】 标记,例如“【般若】此云智慧”,这类内容本身是对字音的说明,添加标点反而显得冗余甚至错误。
此前,自动标点API采用“全量处理”策略,所有文本行一视同仁地被加上句读。用户只能后处理删除,效率低下且易误删。
新功能通过字符串参数 target 实现“排除特定行”的逻辑:
- target接受一个字符串,其中包含的任意一个字符都将成为排除标记。凡是包含这些字符的文本行,跳过标点,原样保留。
- 未包含排除字符的行,正常进行自动标点。
- 最终输出按照原文次序,将“已标点的行”与“未标点的行”拼接起来,保证段落结构完整。
| 目标场景 | target参数值 | 含义 |
|---|---|---|
| 排除包含半角空格的偈颂行 | target=" " | 只要某行出现一个半角空格,就不标点 |
| 排除包含【】的音释行 | target="【】" | 某行含有【或】,则不标点 |
| 同时排除空格和方括号 | target=" 【】" | 注意:第一个字符是空格,后跟【和】 |
组合使用:兼顾排版保留与选择性标点
keep_wrap与target可以同时启用,互不冲突。设置方法:
data = {'src':'…', 'keep_wrap':1, 'target':' 【】'}
此时API的处理流程为:
- 按行扫描,识别每行是否包含target中的字符。
- 对不包含排除字符的行进行自动标点;包含排除字符的行保持原样。
- 在输出中,根据keep_wrap=1,在每行末尾(包括未标点的行)保留原始的
\n。
这种组合模式,可以覆盖了古籍整理中相对复杂的一些需求:保留原版换行,同时跳过偈颂、音释、批注等特殊行,实现了从OCR到高质量标点文本的自动化流水线。
从“逐行切断”到“连贯成篇”,从“全盘标点”到“智慧取舍”——古籍酷自动标点API的每一次迭代,看似只是技术参数的微调,实则是对古籍原貌与人文脉络的深度致敬。
技术并非要替代人的判断,而是让整理者能更专注于真正需要思想光照的地方。
当OCR的“看见”与标点的“理解”在细节处握手,我们离“让古籍活起来”的愿景,便又近了一行诗、一页经、一座数字文明的新里程。