在古籍数字化的流水线中,从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的处理流程为:

  1. 按行扫描,识别每行是否包含target中的字符。
  2. 对不包含排除字符的行进行自动标点;包含排除字符的行保持原样。
  3. 在输出中,根据keep_wrap=1,在每行末尾(包括未标点的行)保留原始的\n

这种组合模式,可以覆盖了古籍整理中相对复杂的一些需求:保留原版换行,同时跳过偈颂、音释、批注等特殊行,实现了从OCR到高质量标点文本的自动化流水线。

原文档 能往詣一切刹海悉能觀見一切佛海徧能聽受一 切法雲能破一切衆生癡闇能於生死大夜之中出 生一切智慧光明而我云何能知能說彼功德行善 男子去此不遠菩提樹王道塲右面有主夜神名喜 目觀察一切衆生汝詣彼問菩薩云何學菩薩行修 菩薩道爾時普徧吉祥無垢光主夜神欲重明此解 脫門義爲善財童子而說偈曰 一切三世諸如來 皆爲信心而出現 若具淸淨廣大眼 則能普見諸佛海 汝觀諸佛無垢身 妙相莊嚴極淸淨 标点效果 能往詣一切刹海,悉能觀見一切佛海,徧能聽受一 切法雲,能破一切衆生癡闇,能於生死大夜之中出 生一切智慧光明;而我云何能知能說彼功德行?善 男子!去此不遠,菩提樹王道塲右面,有主夜神,名:喜 目觀察一切衆生。汝詣彼問:菩薩云何學菩薩行、修 菩薩道?爾時,普徧吉祥無垢光主夜神,欲重明此解 脫門義,爲善財童子而說偈曰: 一切三世諸如來 皆爲信心而出現 若具淸淨廣大眼 則能普見諸佛海 汝觀諸佛無垢身 妙相莊嚴極淸淨

从“逐行切断”到“连贯成篇”,从“全盘标点”到“智慧取舍”——古籍酷自动标点API的每一次迭代,看似只是技术参数的微调,实则是对古籍原貌与人文脉络的深度致敬。

技术并非要替代人的判断,而是让整理者能更专注于真正需要思想光照的地方。
当OCR的“看见”与标点的“理解”在细节处握手,我们离“让古籍活起来”的愿景,便又近了一行诗、一页经、一座数字文明的新里程。

深入了解「自动标点」API