夜雨聆风学习资料网

ARTICLE · 1128627

Sigil插件分享

Sigil插件分享

如果你也做过网文 EPUB,大概能懂这种崩溃:好不容易找到一本想看的书,下载下来的文本里,章节标题后面跟着“(二合一)(求月票)”,正文里塞着平台广告、导航行、页码标记,偶尔还冒出几行繁体字,缺章跳章更是家常便饭。

插件传送门:https://wwbcm.lanzouq.com/b01gicnsoj密码:9ri1

我一开始的做法很原始:打开文本人工逐段扫,扫完再用正则一批批替换。一本书几百章,校完一部书就像做了一次大扫除。后来我想明白一件事——规则是可以沉淀的。每校完一本书,就把这一轮用到的规则记下来,攒着攒着,就成了一个小工具箱。

再后来,我把这些规则做成了 15 个 Sigil 插件。Sigil 是开源的 EPUB 编辑器,它的插件机制能对整本书做检查和修改。这 15 个插件分两类:8 个“体检医生”,只检查不写书;7 个“编辑”,先预览再动手。

15 个插件一览

表115 个插件一览(校验=只报告不改动,编辑=预览后应用)

序号

插件

类型

版本

一句话功能

1

CheckAdverbDe

校验

1.2.0

副词“的/地”分类核查(慢慢/悄悄可改地,深深排除,淡淡/冷冷/远远仅状语搭配)

2

CheckChapterGap

校验

1.5.0

缺章/重复/乱序/跳跃检测(支持中文数字与卷章合一标题)

3

CheckDuplicateLines

校验

1.1.0

相邻重复行/同行重复章节/重复章节名

4

CheckEpub2Compliance

校验

1.3.0

EPUB2 合规体检(元数据/manifest/spine/引用可达性)

5

CheckEpubStructure

校验

1.3.0

标题层级、插图模板、alt 连续编号体检

6

CheckLineBreakPunctuation

校验

1.1.0

行首标点断行错误检测

7

CheckShortFragmentLines

校验

1.1.0

OCR 短促残句行检测(行首丢字/行尾截断)

8

CheckTraditionalChinese

校验

1.1.0

繁体残留扫描(排除繁简同形字)

9

CleanPageMarkers

编辑

1.2.0

去页标记/页眉页脚/孤立页码/空白块

10

CleanTitleBrackets

编辑

1.1.0

章节标题尾部括号注释清洗(删发布说明、留结构标识)

11

DeWatermark

编辑

1.3.0

去广告短段/导航行/页码/页眉页脚

12

FixDivider

编辑

1.2.0

分割线段落替换为插图 div(幂等)

13

FixPunctuation

编辑

1.4.0

标点/引号/HTML实体/全角化修正

14

FormatNovel

编辑

1.6.0

排版与章号规范化(标题/缩进/空段)

15

StripAuthorNotes

编辑

1.3.0

去引流短段/作者感言/完本标记截尾

先说清楚这两类插件的关系:校验型扫完全书,把问题逐条列进表格,文件、段落、类别、上下文一目了然,但没有任何写回按钮;编辑型要先“扫描预览”,确认后才“应用修改”。这个设计贯穿全部 15 个插件,后面会细说。

检查类(8 个):只报告,不动手

校验型插件的原则是“只报告,不改动”。为什么不直接改?因为校对最怕误伤,机器判断永远有边界,把判断权留给人才是安全的。每个插件扫完都会给出定位和上下文,你只需逐条看一眼,决定要不要处理。

文字质量五项

CheckAdverbDe(的地核查)。“的”和“地”是网文里最高频的错别字之一:“慢慢的说”应该是“慢慢地说”,但“深深的脚印”就不能改成“深深地脚印”。插件把规则拆成几档:慢慢/悄悄/轻轻这类固定副词几乎只作状语,报告改“地”;“深深”不参与替换;“淡淡/冷冷/远远”只在明确的状语搭配里报告。改完还会复扫一遍,把“一个冷冷地声音”这种改过头的回退。

CheckTraditionalChinese(繁体残留扫描)。难点在排除繁简同形字——比如“那”,繁简同形,直接整字匹配会误报几千行。插件用繁体专用字表扫描、剔除同形字;“著”在简体里合法(著作、原著),只有“说著”“站著”这种作“着”用时才按动词前缀甄别报告。

CheckDuplicateLines(重复行)。检查相邻重复行(整理版粘贴重复)、同行重复章节(一行出现两个标题)、重复章节名。对话排比、刻意复读这类剧情正文不报。

CheckLineBreakPunctuation(行首标点)。行首出现右括号、右引号、逗号句号问号叹号等标点,说明上一行硬回车断错了位置。省略号、破折号开头的合法续行和对话分行不报。

CheckShortFragmentLines(短促残句行)。专查 OCR 文本常见的行首丢字、行尾截断:没有开引号、长度很短、却以句末标点结尾。它是低置信提示,逐处核对上下文,别直接删。

结构与合规三项

CheckChapterGap(缺章检测)。卷/章连续性核查:缺章、重复、乱序、跳跃都能查,支持中文数字和“第X卷 卷名 第X章 章名”这种卷章合一标题。

CheckEpubStructure(章节结构体检)。检查标题层级(卷/章是不是规规矩矩的 h1/h2)、插图 div 模板是否统一、alt 文本有没有连续编号。

CheckEpub2Compliance(EPUB2 合规体检)。发布前跑一遍心里有底:package version、dc 元数据、manifest、spine,以及每个 src 引用是不是真的可达。

编辑类(7 个):先预览,后应用

编辑型插件都走同一套流程:点“开始运行”先只读扫描,结果逐条列在表格里、可以勾选,你确认后才写回书。预览那一步,就是误改的后悔药。

去杂质

DeWatermark(去广告导航)。删平台广告短段、导航行、孤立页码、页眉页脚。长段或含图的块不删、只报告——那些可能是正文或插图,删错代价太大。书首的“内容简介”块有保护,不会误伤。

CleanPageMarkers(去页标记)。删【页N】【册N】标记、孤立页码、页眉页脚固定串和完全空白块。

StripAuthorNotes(去作者感言)。删求票、加群、公众号引流短段,前注后注、卷末标记;“全书完”这类完本标记只在最后一个文件截尾。正文里的内容不动。

标题与标点

CleanTitleBrackets(标题括号清洗)。章节标题尾巴上的括号注释:“(二合一)(求月票)(本章3000字)”这类发布/更新说明删掉;“(上)(中)(下)(番外)”这类结构标识保留。关键词速判加逐条预览确认,只处理标题行。

FixPunctuation(标点修正)。HTML 实体转成正确的引号、半角标点全角化(千分位有保护,不会把“1,000”拆坏)、行首空格剥离、全角数字转半角、半角引号按语境转全角。只处理文本节点,不碰标签属性;“的的”“象像”这类只报告不改。

排版

FormatNovel(排版与章号)。章节标题统一成“第N章 标题”(中文数字含“两/二”转阿拉伯、卷章合一统一全角空格)、识别“(一)/一 标题/番外一:/【…】”等旧式标题、正文段首统一两个全角空格(只在样式表没声明 text-indent 时)、去空段。

FixDivider(分割线)。正文里单独一行、只有分割符组成的段落,替换成 fengexian 插图 div。幂等,跑两遍不会重复处理;章节首末块跳过。

工程上的几个“强迫症”设计

写这 15 个插件的过程中,我顺手立了一套工程规范。这里挑几个最想分享的点。

校验/编辑双模式。整套插件的骨架:扫描预览永远只读,编辑型才有“应用修改”,校验型根本没有写回按钮。规则可能误判,但预览把风险摊开在你面前。

幂等。同一本书跑两遍同一插件,结果完全一致,不会出现“越改越乱”、“第二次运行又改一遍”的情况。

统一工程化写法。所有插件共用一套结构:plugin.py 只做薄装配——开窗口、起线程、接按钮;utils/ 是纯业务层,所有正则规则都在这里、零 Qt 依赖,可以脱离界面直接用假数据测试;pyqt_import.py 统一 Qt5/Qt6 导入,业务代码里不出现 PySide6/PyQt5 字样,Sigil 用哪个版本都兼容;misc/appconfig.py 负责把勾选项持久化到 config.ini,默认全开等于原规则行为;扫描用 QThread 后台线程,书再厚界面也不卡;还留了无头冒烟模式,自动化测试可以直接跑。

规则来自真实校对。每个插件的规则都有出处:校对规则 R1-R5、逐条挖掘的校对正则,还有校书时真实遇到的案例。规则不是拍脑袋想的,是每一本被认真对待的书攒出来的。

怎么用

在 Sigil 里使用很简单:插件 → 管理插件 → 添加插件 → 选择插件包 → 重启,菜单里就会出现对应项。

校验类随时可以跑,当体检;编辑类建议先点“开始运行”看预览,勾选确认后再“应用修改”。

这套插件也是一路长出来的:最早只有控制台输出,后来加了窗口,现在统一成 Qt 工程化版本——双版本兼容、配置持久化、界面不卡。

回头看,这 15 个插件最值钱的不是代码,是那些被沉淀成规则的判断。工具会过时,但“认真对待每一本书”这件事,什么时候都不过时。

如果你也在做 EPUB 或小说校对,希望这篇能给你一点启发:把重复劳动变成规则,把规则变成工具。

相关学习资料

暂无相关学习资料