NEKOparapa / AiNiee

一款专注于Ai翻译的工具,可以用来一键自动翻译RPG SLG游戏,Epub Word TXT小说,Srt Vtt Lrc字幕等等。
GNU General Public License v3.0
1.4k stars 77 forks source link

译文行数不符并拆分翻译多次后,将行数还是异常的译文误识别为正常结果 #322

Closed Orienser closed 4 weeks ago

Orienser commented 1 month ago

AiNiee版本:5.0 AI模型:Sakura 1.0 原文文件:Translator++ 导出文件(.xlsx)

现象: AI返回的译文和原文行数不符,软件会不断拆分再译,如果拆分到最后译文行数仍是错误的,会被判为正常结果。 不太清楚这一现象是否是预期内的,按我理解这些拆到最后仍是错的译文应归于翻译错误一类。

可见下面日志:

  1. 第一次翻译:
    
    [INFO] 携带上文功能已开启,实际携带 3 行上文 ...
    [INFO] 保留句内换行符功能已开启,将替换句内换行符为特殊符号 ...
    [INFO] 已发送请求,正在等待AI回复中-----------------------
    [INFO] 线程 ID: 1068, 文本行数: 10, tokens数: 201
    [INFO] 当前发送的原文文本:
    沈黙
    睡眠
    混乱
    麻痺
    即死
    炎/単体1
    炎/単体2
    炎/全体1
    炎/全体2
    炎/全体3

[INFO] 已成功接受到AI的回复----------------------- [INFO] 线程 ID: 1068, 等待时间: 0.87 秒 [INFO] AI回复的文本内容: 吸收 毒 黑暗

[Warning] AI回复内容存在问题: 提取到的文本行数与原来数量不符合,将进行重新翻译

[Warning] 错误重新翻译最大次数限制: 1 剩余可重试次数: 1 到达次数限制后,该段文本将进行拆分翻译

(省略之后相同的一次重试)

2. 拆分后重试

[INFO] 携带上文功能已开启,实际携带 3 行上文 ... [INFO] 保留句内换行符功能已开启,将替换句内换行符为特殊符号 ... [INFO] 已发送请求,正在等待AI回复中----------------------- [INFO] 线程 ID: 8020, 文本行数: 5, tokens数: 159 [INFO] 当前发送的原文文本: 沈黙 睡眠 混乱 麻痺 即死

[INFO] 已成功接受到AI的回复----------------------- [INFO] 线程 ID: 8020, 等待时间: 0.87 秒 [INFO] AI回复的文本内容: 吸收 毒 黑暗

(省略之后相同的一次重试)

3. 拆分后重试(单行)

[INFO] 携带上文功能已开启,实际携带 3 行上文 ... [INFO] 保留句内换行符功能已开启,将替换句内换行符为特殊符号 ... [INFO] 已发送请求,正在等待AI回复中----------------------- [INFO] 线程 ID: 9248, 文本行数: 1, tokens数: 140 [INFO] 当前发送的原文文本: 睡眠

[INFO] 已成功接受到AI的回复----------------------- [INFO] 线程 ID: 9248, 等待时间: 0.88 秒 [INFO] AI回复的文本内容: 毒 黑暗 沉默。


[Success] AI回复内容检查通过!!!已翻译完成75.44%



拆到单行时,“睡眠”被翻成了3行,却通过了检查。

附上原文件:
[Animations.xlsx](https://github.com/user-attachments/files/17533765/Animations.xlsx)
neavo commented 1 month ago

我也观察到类似问题,可能是翻译结果检查部分的逻辑有问题,类似的问题还有行数错误被错误的判断为了退化问题等

neavo commented 1 month ago

我猜是这里的问题,是吗?@NEKOparapa

# 将Raw文本恢复根据行数转换成json文本
def convert_str_to_json_str(self,row_count, input_str):

    # 当发送文本为1行时,就不分割了,以免切错
    if row_count == 1:
        result = {"0": input_str}
        return  json.dumps(result, ensure_ascii=False)

    else:
        str_list = input_str.split("\n")
        ret_json = {}
        for idx, text in enumerate(str_list):
            ret_json[f"{idx}"] = f"{text}"
        return json.dumps(ret_json, ensure_ascii=False)
NEKOparapa commented 1 month ago

我猜是这里的问题,是吗?@NEKOparapa

# 将Raw文本恢复根据行数转换成json文本
def convert_str_to_json_str(self,row_count, input_str):

    # 当发送文本为1行时,就不分割了,以免切错
    if row_count == 1:
        result = {"0": input_str}
        return  json.dumps(result, ensure_ascii=False)

    else:
        str_list = input_str.split("\n")
        ret_json = {}
        for idx, text in enumerate(str_list):
            ret_json[f"{idx}"] = f"{text}"
        return json.dumps(ret_json, ensure_ascii=False)

应该是了,以前没有出现这种情况,把if内代码删去就行了

neavo commented 1 month ago

AiNiee版本:5.0 AI模型:Sakura 1.0 原文文件:Translator++ 导出文件(.xlsx)

现象: AI返回的译文和原文行数不符,软件会不断拆分再译,如果拆分到最后译文行数仍是错误的,会被判为正常结果。 不太清楚这一现象是否是预期内的,按我理解这些拆到最后仍是错的译文应归于翻译错误一类。

可见下面日志:

  1. 第一次翻译:
[INFO] 携带上文功能已开启,实际携带 3 行上文 ...
[INFO] 保留句内换行符功能已开启,将替换句内换行符为特殊符号 ...
[INFO] 已发送请求,正在等待AI回复中-----------------------
[INFO] 线程 ID: 1068, 文本行数: 10, tokens数: 201
[INFO] 当前发送的原文文本:
沈黙
睡眠
混乱
麻痺
即死
炎/単体1
炎/単体2
炎/全体1
炎/全体2
炎/全体3

[INFO] 已成功接受到AI的回复-----------------------
[INFO] 线程 ID: 1068, 等待时间: 0.87 秒
[INFO] AI回复的文本内容:
 吸收
毒
黑暗

[Warning] AI回复内容存在问题: 提取到的文本行数与原来数量不符合,将进行重新翻译

[Warning] 错误重新翻译最大次数限制: 1 剩余可重试次数: 1 到达次数限制后,该段文本将进行拆分翻译

(省略之后相同的一次重试)

  1. 拆分后重试
[INFO] 携带上文功能已开启,实际携带 3 行上文 ...
[INFO] 保留句内换行符功能已开启,将替换句内换行符为特殊符号 ...
[INFO] 已发送请求,正在等待AI回复中-----------------------
[INFO] 线程 ID: 8020, 文本行数: 5, tokens数: 159
[INFO] 当前发送的原文文本:
沈黙
睡眠
混乱
麻痺
即死

[INFO] 已成功接受到AI的回复-----------------------
[INFO] 线程 ID: 8020, 等待时间: 0.87 秒
[INFO] AI回复的文本内容:
 吸收
毒
黑暗

(省略之后相同的一次重试)

  1. 拆分后重试(单行)
[INFO] 携带上文功能已开启,实际携带 3 行上文 ...
[INFO] 保留句内换行符功能已开启,将替换句内换行符为特殊符号 ...
[INFO] 已发送请求,正在等待AI回复中-----------------------
[INFO] 线程 ID: 9248, 文本行数: 1, tokens数: 140
[INFO] 当前发送的原文文本:
睡眠

[INFO] 已成功接受到AI的回复-----------------------
[INFO] 线程 ID: 9248, 等待时间: 0.88 秒
[INFO] AI回复的文本内容:
 毒
黑暗
沉默。

--------------------------------------------------------------------------------------

[Success] AI回复内容检查通过!!!已翻译完成75.44%

--------------------------------------------------------------------------------------

拆到单行时,“睡眠”被翻成了3行,却通过了检查。

附上原文件: Animations.xlsx

问题已定位,将在 5.1 版本随着新的翻译页面一起修复

neavo commented 4 weeks ago

测试版已修