找回密码
 立即注册
查看: 2053|回复: 8

【工具】字幕质检工具 Subtitle QC Tool - aegisub插件 (2026/02/04 更新v1.2)

49

主题

531

回帖

1万

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2209108
tmdtmdtmdqq 发表于 2026-1-1 00:00:01 | 显示全部楼层 |阅读模式
本帖最后由 tmdtmdtmdqq 于 2026-2-5 00:40 编辑

一个集
检查字幕中闪轴、叠轴、关键帧、时长、字数、标签、错字等问题,
可自动校正闪轴、叠轴、关键帧,
替换特定字符,
清理无用内容,
还原子集化字体名字
等功能于一体的aegisub插件。

subtitle_qc_tool.lua 放到 aegisub 所在目录下的 automation/autoload 目录
subtitle_qc_tool_typo_dict.cfg 放到 aegisub 所在目录
然后重新打开aegisub即可

2026/01/01 Init v1.0
2026/01/04 Update v1.1:
    ○优化:【一键疑似错字检查】,大大缩短检查时间
    ○删除:【无用内容清理】中实际无效的选项“清除除了[Script Info]、[V◯◯ Styles]、[Events]以外ass字幕非标准段的内容”(实测aegisub的subtitles对象是读取不到这部分内容的)
2026/02/04 Update v1.2:
    ○增加:【ass字幕进阶工序】功能,因有些段的清理/时间修正操作无法在aegisub中实现,所以直接读写字幕文件进行这类工序的处理
    ○优化:配置信息实现缓存
    ○优化:代码优化和一些其它的小修正


subtitle_qc_tool v1.0.rar (27.13 KB, 下载次数: 94)
subtitle_qc_tool v1.1.rar (27.03 KB, 下载次数: 106)

subtitle_qc_tool v1.2.rar (33.38 KB, 下载次数: 80)
※ 只测试了wangqr版的aegisub v3.3.3
此插件已经包含之前我写的另一个工具official_subtitle_processor的绝大部分功能


目前有8个功能:
1. 时轴检查&校正
2. 字符替换
3. 无用内容清理
4. 一键标签检查
5. 一键疑似错字检查
6. 一键还原子集化字体
7. 一键清除填充的检查提示
8. ass字幕进阶工序(成功后不可再点击【保存】,否则会还原) 【v1.2新增】



※ 含有“一键”的功能是没有选项界面的,下拉菜单点击后会立即执行。
本工具会在字幕的【特效(Effect)列】输出检查提示。
清除这些提示请用功能【7. 一键清除填充的检查提示】选项(清除后会还原成特效列的原始数据)。


1. 时轴检查&校正
Snap_func1.png

Snap_func1_log.png

Snap_func1_result.png
下面简单说明一下几个设置的含义。
关键帧4个选项:
Snap_func1_keyframe.png
闪轴选项:
Snap_func1_flash.png
叠轴选项:
Snap_func1_overlap.png
※ 在字幕检查提示中,
chuizi.png 代表已经校正过,后面跟的是原字幕信息,方便用来发现校正错了而进行还原
fangdajing.png 代表仅检查过(还没改),后面跟的是应修正成的信息,方便用来跟着这个信息进行手工修正
LXXX 代表aegisub字幕编辑框中的行号,“”代表开始时间,“”代表结束时间
                                                   “”代表时间增大(右移),“”代表时间缩小(左移)
比如【 chuizi1.png 末闪轴→L150◈0:00:08.00】就代表 当前行的结束时间跟150行字幕有闪轴,已经通过增大(右移)修正,原本这行的结束时间是0:00:08.00
fangdajing1.png 始叠轴→L156◈0:00:12.00】就代表 当前行的开始时间时跟156行字幕叠轴,还没修正,需要增大(右移)到0:00:12.00
fangdajing2.png 末K帧←0:00:45.86】就代表 当前行结束时间大于(超过了)关键(Key)帧时间,需要缩小(左移)到0:00:45.86
fangdajing3.png 轴被全覆盖#L165】就代表 当前行的开始和结束时间被165行字幕全覆盖了,还没修正,要手工检查
PS:视频自带关键帧信息过于不准的话,可以用这个工具重新生成关键帧信息文件,然后 视频->打开关键帧 加载刚才生成的关键帧信息文件

2. 字符替换
Snap_func2.png

Snap_func2_result.png
※ 列出的所有功能选项会从上到下的顺序进行处理(即后面的选项会根据前面选项操作后的数据进行处理)


3. 无用内容清理
Snap_func3.png
Snap_func3_log.png


4. 一键标签检查
Snap_func4_result.png
※ 无选项界面,点击菜单就会全字幕处理
特效列的输出提示内容中,
yaowan.png (药丸=要完)表示标签有比较严重的错误,可能会导致显示此行字幕显示走样。
yanjing.png (看看)表示最好看看的地方,对字幕显示影响不大。


5. 一键疑似错字检查
Snap_func5_result.png

※ 无选项界面,点击菜单就会全字幕处理
这是根据文件 subtitle_qc_tool_typo_dict.cfg 的配置去正则检查错字,目前有我汇总的官中字幕简化后常见错字。
可以自己添加修改错字检查的
正则规则。
格式为:
  {pattern = "干吗", replacement = "干嘛"},
  {pattern = "当机(?:[^立]|立(?:[^断]|$)|$)", replacement = "宕机", mark = "当机→宕机"},


pattern是一个正则表达式的字符串。
(※ 注意:“\“需要双重转义。即如果你想匹配制表符“\t”,你需要写成“\\t”;如果你需要匹配字符“\”,你需要写成“\\\\”)
replacement 是替换的内容。“\“同样需要双重转义。如果正则用到括号的分组捕获,则捕获分组需要写成“\\1”、“\\2”……
mark 是用来显示处理提示的,如果没定义,则使用 “{pattern}→{replacement}” 作为值。
比如,第一行规则(没定义mark)的错字会提示是【✍︎#干吗→干嘛】,第二行规则(有定义mark)的【✍︎#当机→宕机】



6. 一键还原子集化字体
Snap_func6_log.png

Snap_func6_result.png

※ 无选项界面,点击菜单就会全字幕处理
只找了几个字幕测试了几种子集化字体的还原方式,不知道有没有别的形式
如果字幕中缺少子集化字体信息,则子集化字体名字会还原不了


7. 一键清除填充的检查提示
※ 无选项界面,点击菜单就会全字幕处理
可以设置一个快捷键快速清理提示
菜单栏 查看 → 选项 → 左侧 界面>热键 → 右侧 字幕栏 → 顶上 新建 → 填入
第一格:自己按下快捷键 (比如图片是Ctrl+P组合键)
第二格:automation/lua/subtitle_qc_tool/~字幕质检工具~ / ⑦ 一键清除填充的检查提示

Snap_func7_shortcut.png


8. ass字幕进阶工序(成功后不可再点击【保存】,否则会还原) 【v1.2新增】
Snap_func8.png
Snap_func8_lost_minus_sign.png
如图,ass字幕中的负数时间被aegisub加载后会丢失掉负号,-1:59:49.00会变成1:59:49.00,这种在此工序中被称为"疑似负数时间"。

直接读写字幕文件进行一些无法在aegisub中实现的清理/时间修正操作。
注意:成功执行后不可再进行【保存】操作,否则字幕文件可能会还原成执行工序前的状态。



Snap_menu.png
Snap_func3.png
Snap_menu.png

评分

参与人数 7活跃度 +139160 收起 理由
dwdwdwd + 666 很给力!
yuriyoh + 6400 牛啊大佬!
yswysc + 32767
群鸟逐孤雁 + 32767 很实用的插件
CLANNADAO + 51200 新年快乐
AnoHana1949 + 10240 赞一个!
tonyhsie + 5120 赞一个!

查看全部评分

欢迎报错继续向上改进我改进过的字幕。
请勿将无实质性修改、劣化精简本人改进过的字幕重新发布到此论坛:如仅改名、仅打包、修改总错字数≤5、删除特效等。       ——20230204
本人改进过的字幕,禁止以任何形式进行商用。若要附带在视频、种子中发布,请先咨询。      ——20231203
一些字幕搜寻、制作的方法和经验汇总  →  >>>帖子<<<
禁止DBD-Raws及其相关人士使用本人所有制作或修正改进过的字幕(包括过往的)      ——20240730
回复

使用道具 举报

49

主题

531

回帖

1万

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2209108
tmdtmdtmdqq  楼主| 发表于 2026-1-4 18:23:08 | 显示全部楼层
2026/01/04 Update v1.1:
    ○优化【一键疑似错字检查】,大大缩短检查时间
    ○删除【无用内容清理】中实际无效的选项“清除除了[Script Info]、[V◯◯ Styles]、[Events]以外ass字幕非标准段的内容”(实测aegisub的subtitles对象是读取不到这部分内容的)

    本次更新只需把新的 subtitle_qc_tool.lua 放到 aegisub 所在目录下的 automation/autoload 目录

欢迎报错继续向上改进我改进过的字幕。
请勿将无实质性修改、劣化精简本人改进过的字幕重新发布到此论坛:如仅改名、仅打包、修改总错字数≤5、删除特效等。       ——20230204
本人改进过的字幕,禁止以任何形式进行商用。若要附带在视频、种子中发布,请先咨询。      ——20231203
一些字幕搜寻、制作的方法和经验汇总  →  >>>帖子<<<
禁止DBD-Raws及其相关人士使用本人所有制作或修正改进过的字幕(包括过往的)      ——20240730
回复

使用道具 举报

17

主题

106

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
9993
QH7B 发表于 2026-1-4 20:02:09 | 显示全部楼层
你好,感谢提供实用的工具。
在修改字幕文件时,个人非常需要下面这3个功能:
删除夹杂在各个段中的分号开头的注释行。
整体平移时轴导致的开始(Start)字段为诸如-1:59:59.91的无效值,批量设置为0。
心形等emoji符号容易缺字,批量修改为特定字体,如Arial Unicode MS。
不知能否在未来的版本中实现。

点评

v1.2 新增功能可以处理分号行和负数时间(和疑似负数时间)了  发表于 2026-2-4 09:07
回复

使用道具 举报

49

主题

531

回帖

1万

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2209108
tmdtmdtmdqq  楼主| 发表于 2026-1-5 01:09:22 | 显示全部楼层
本帖最后由 tmdtmdtmdqq 于 2026-1-5 10:57 编辑
QH7B 发表于 2026-1-4 20:02
你好,感谢提供实用的工具。
在修改字幕文件时,个人非常需要下面这3个功能:
删除夹杂在各个段中的分号开 ...

1. 分号开头的行在aegisub的subtitles对象中是获取不了的,所以操作不了(我能获取子集化字体信息是因为外部读取了字幕文件)
如果外部处理的话,保存就是个大问题。因为外部保存的文件在aegisub中是不同步的。
如果外部处理保存后,在aegisub按了一下保存,那么之前外部保存的文件就会被覆盖,分号又会产生。
所以,任何要外部保存才能实现的功能,本插件中是不会出现的。

2. 负时间轴问题,我先看看能不能简单获取到,再判断要不要加。
经测试,aegisub的subtitles对象获取不到负时间(负时间读取出来也是正数,raw字段获取出来也已经变成了正数)。如果用外部字幕文件读取,会有因字幕文件未保存导致行不同步的问题,解决起来比较麻烦,所以此功能也不会有。(这不像子集化信息那样固定在那里,字幕行是会根据aegisub的编辑而变化行号的)

3. 缺字相关的问题,我没见到有暴露相关的接口,lua写这种检测字体这种东西会很复杂。所以缺字相关的功能是不会有的。
因为无法判断是否有“错”,所以不会有缺字替换功能。
但是,换个思路。如果你要提示的话,可以在检查错字配置 subtitle_qc_tool_typo_dict.cfg 中配置,这样就可以在【特效】列的提示输出中直接复制过去替换:(【✍︎#♡→{\fnSegoe UI Symbol}♡{\fn}】)
{pattern = "♥", replacement = "{\\fnSegoe UI Symbol}♥{\\fn}"},
{pattern = "♡", replacement = "{\\fnSegoe UI Symbol}♡{\\fn}"},

PS:修改 subtitle_qc_tool_typo_dict.cfg 是不用重启aegisub的,再次执行本插件的功能就会立即生效。

再者,你需要的功能是可以另外写一些外部工具实现,例如用python之类的,需求告诉GPT一下就写好。
因本插件功能多,如果某些功能选项复杂的话,选项界面也没位置写了。
aegisub原生选项界面的api功能实在太少(按钮位置都不能调…),只能简陋实现。

欢迎报错继续向上改进我改进过的字幕。
请勿将无实质性修改、劣化精简本人改进过的字幕重新发布到此论坛:如仅改名、仅打包、修改总错字数≤5、删除特效等。       ——20230204
本人改进过的字幕,禁止以任何形式进行商用。若要附带在视频、种子中发布,请先咨询。      ——20231203
一些字幕搜寻、制作的方法和经验汇总  →  >>>帖子<<<
禁止DBD-Raws及其相关人士使用本人所有制作或修正改进过的字幕(包括过往的)      ——20240730
回复

使用道具 举报

17

主题

106

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
9993
QH7B 发表于 2026-1-5 11:51:19 | 显示全部楼层
tmdtmdtmdqq 发表于 2026-1-5 01:09
1. 分号开头的行在aegisub的subtitles对象中是获取不了的,所以操作不了(我能获取子集化字体信息是因为外 ...

感谢回复!

其实我之前一直用的 EmEditor 修改字幕,但由于没有正式学过编程,只会简单的查找替换。
最近听说“正则表达式”处理文本的功能很强大,所以不知道能不能通过 EmEditor 正则表达式的查找替换功能解决前两个问题。
如果能的话,麻烦有时间帮我写一个正则表达式可以吗,它那个说明文档我实在看不懂。感谢!

回复

使用道具 举报

49

主题

531

回帖

1万

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2209108
tmdtmdtmdqq  楼主| 发表于 2026-1-5 23:16:05 | 显示全部楼层
本帖最后由 tmdtmdtmdqq 于 2026-1-5 23:27 编辑
QH7B 发表于 2026-1-5 11:51
感谢回复!

其实我之前一直用的 EmEditor 修改字幕,但由于没有正式学过编程,只会简单的查找替换。

分号开头的行(含前面带空格),替换成     空字符串
^ *;.*$

负时间轴 (只判断开始时间,适配.ass),替换成    \100:00:00.00
^(Dialogue: \d+,)-\d+:\d{2}:\d{2}\.\d{2}

负时间轴 (只判断开始时间,适配.srt),替换成     00:00:00\1000 -->
^-\d+:\d{2}:\d{2}([,.])\d+ -->

不确定EmEditor是不是用\1代替正则捕获,如果失败,就把\1改为$1试试


点评

非常感谢!  发表于 2026-1-7 19:00
欢迎报错继续向上改进我改进过的字幕。
请勿将无实质性修改、劣化精简本人改进过的字幕重新发布到此论坛:如仅改名、仅打包、修改总错字数≤5、删除特效等。       ——20230204
本人改进过的字幕,禁止以任何形式进行商用。若要附带在视频、种子中发布,请先咨询。      ——20231203
一些字幕搜寻、制作的方法和经验汇总  →  >>>帖子<<<
禁止DBD-Raws及其相关人士使用本人所有制作或修正改进过的字幕(包括过往的)      ——20240730
回复

使用道具 举报

49

主题

531

回帖

1万

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2209108
tmdtmdtmdqq  楼主| 发表于 2026-2-4 09:05:43 | 显示全部楼层
2026/02/04 Update v1.2:
    ○增加:【ass字幕进阶工序】功能,因有些段的清理/时间修正操作无法在aegisub中实现,所以直接读写字幕文件进行这类工序的处理
    ○优化:配置信息实现缓存
    ○优化:代码优化和一些其它的小修正
欢迎报错继续向上改进我改进过的字幕。
请勿将无实质性修改、劣化精简本人改进过的字幕重新发布到此论坛:如仅改名、仅打包、修改总错字数≤5、删除特效等。       ——20230204
本人改进过的字幕,禁止以任何形式进行商用。若要附带在视频、种子中发布,请先咨询。      ——20231203
一些字幕搜寻、制作的方法和经验汇总  →  >>>帖子<<<
禁止DBD-Raws及其相关人士使用本人所有制作或修正改进过的字幕(包括过往的)      ——20240730
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表