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

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

  • TA的每日心情

    8 小时前
  • 签到天数: 1587 天

    [LV.Master]伴坛终老

    49

    主题

    533

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2248529
    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, 下载次数: 91)
    subtitle_qc_tool v1.1.rar (27.03 KB, 下载次数: 95)

    subtitle_qc_tool v1.2.rar (33.38 KB, 下载次数: 84)
    ※ 只测试了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
    回复

    使用道具 举报

  • TA的每日心情

    8 小时前
  • 签到天数: 1587 天

    [LV.Master]伴坛终老

    49

    主题

    533

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2248529
    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

    主题

    117

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    12024
    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
    回复

    使用道具 举报

  • TA的每日心情

    8 小时前
  • 签到天数: 1587 天

    [LV.Master]伴坛终老

    49

    主题

    533

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2248529
    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

    主题

    117

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

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

    感谢回复!

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

    回复

    使用道具 举报

  • TA的每日心情

    8 小时前
  • 签到天数: 1587 天

    [LV.Master]伴坛终老

    49

    主题

    533

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2248529
    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
    回复

    使用道具 举报

  • TA的每日心情

    8 小时前
  • 签到天数: 1587 天

    [LV.Master]伴坛终老

    49

    主题

    533

    回帖

    1万

    VC币

    星辰大海

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

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

    使用道具 举报

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

    本版积分规则

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