You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Googletrans API触发JSONDecodeError的原因及解决方法

Googletrans JSONDecodeError 问题排查与修复方案

问题背景

你提到之前用Googletrans API可以正常完成翻译,但在批量处理对话转录文本后,突然出现了JSONDecodeError: Expecting value: line 1 column 1 (char 0)的错误——甚至连最基础的测试代码都跑不通了。从错误栈能看出来,问题核心是谷歌翻译返回的内容无法被解析成有效JSON,这说明返回的结果根本不是预期的翻译数据格式。

可能的原因

  • 谷歌翻译公开接口变更:Googletrans本质是调用谷歌翻译的非官方公开接口,谷歌会不定期调整这个接口的返回格式。旧版本的Googletrans库没适配新格式,自然会解析失败,这是这类问题最常见的诱因。
  • 反爬机制触发:批量处理时请求频率太高,触发了谷歌的反爬限制,此时谷歌返回的可能是验证码页面、限流提示页,而非正常的翻译结果JSON,解析自然出错。
  • 库版本兼容性问题:可能你无意中升级或降级了Googletrans、requests等依赖库,导致版本不兼容,进而引发JSON解析异常。

修复方案

1. 更换为维护中的Googletrans分支

官方的Googletrans已经很久没更新了,推荐使用第三方维护的4.0.0预览版,这个版本专门修复了接口变更的问题:

pip install googletrans==4.0.0-rc1

更新后,测试代码可以这样写(新版本用法略有调整,但稳定性更强):

from googletrans import Translator
translator = Translator()
# 可明确指定目标语言,比如翻译成英文
result = translator.translate('안녕하세요.', dest='en')
print(result.text)

2. 优化批量请求,规避反爬

如果是批量处理触发了限流,试试这两个方法:

  • 添加请求延迟:每处理完一行文本后,暂停1-2秒,降低请求频率:
    import time
    from googletrans import Translator
    
    translator = Translator()
    with open('your_transcript.txt', 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if line:
                result = translator.translate(line, dest='zh-CN')
                print(result.text)
                time.sleep(1)  # 延迟1秒,避免请求过于频繁
    
  • 使用代理IP:如果你的IP被限制,可以通过代理来请求:
    translator = Translator(proxies={
        'http': 'http://your-proxy-address:port',
        'https': 'https://your-proxy-address:port'
    })
    

3. 检查并更新依赖库

有时候requests等依赖库的版本也会影响解析,执行以下命令更新依赖:

pip install --upgrade requests

验证修复

先运行最简单的测试代码,确认翻译功能正常,再逐步测试批量处理的场景,看看是否还会出现JSON解析错误。

内容的提问来源于stack exchange,提问作者Rethliopuks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:17:56