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

Windows系统googletrans模块报'NoneType'无group属性问题求助

Windows下googletrans触发AttributeError: 'NoneType' object has no attribute 'group'

我编写了一款支持文本、图片、音频三种输入类型的Python翻译程序,使用googletrans API实现翻译功能。该程序在Linux系统中运行正常,但在Windows系统运行时触发'NoneType' object has no attribute 'group'错误,两台系统均通过pip包管理器安装了googletrans模块。

程序代码

import googletrans
import pytesseract
import speech_recognition as sr
import cv2  # OpenCV for camera access

def extract_text_from_image(image):
    text = pytesseract.image_to_string(image)
    return text

def translate_text(text, target_language):
    translator = googletrans.Translator()
    translation = translator.translate(text, dest=target_language)
    return translation.text

def translate_speech(target_language):
    recognizer = sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening...")
        audio = recognizer.listen(source, timeout=5)
    
    try:
        recognized_speech = recognizer.recognize_google(audio)
        translation = translate_text(recognized_speech, target_language)
        return recognized_speech, translation
    except sr.UnknownValueError:
        return None, None

def main():
    input_type = input("Enter 'text', 'image', or 'audio' for input: ").lower()
    target_language = input("Enter the target language (e.g., 'fr' for French): ").lower()
    
    if input_type == "text":
        text = input("Enter the text to translate: ")
    elif input_type == "image":
        image_path = input("Enter the path to the image: ")
        frame = cv2.imread(image_path)
        
        if frame is not None:
            # Extract text from the image
            image_text = extract_text_from_image(frame)
            if image_text:
                print("Text extracted from the image:", image_text)
                text = image_text
            else:
                print("No text found in the image.")
                return
        else:
            print("Image not found or invalid path.")
            return
    elif input_type == "audio":
        recognized_speech, translation = translate_speech(target_language)
        if recognized_speech is not None:
            print("Recognized speech:", recognized_speech)
            print("Translated speech:", translation)
        else:
            print("Could not recognize speech.")
        return
    else:
        print("Invalid input type.")
        return
    
    translated_text = translate_text(text, target_language)
    print("Translated text:")
    print(translated_text)

if __name__ == "__main__":
    main()

报错信息

PS C:\Users\Deepak> python -u "c:\Users\Deepak\OneDrive\Translator\new.py"
Enter 'text', 'image', or 'audio' for input: text
Enter the target language (e.g., 'fr' for French): fr
Enter the text to translate: hello! how are you?
Traceback (most recent call last):
  File "c:\Users\Deepak\OneDrive\Translator\new.py", line 67, in <module>
    main()
  File "c:\Users\Deepak\OneDrive\Translator\new.py", line 62, in main
    translated_text = translate_text(text, target_language)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Deepak\OneDrive\Translator\new.py", line 12, in translate_text
    translation = translator.translate(text, dest=target_language)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Deepak\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\client.py", line 182, in translate
    data = self._translate(text, dest, src, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Deepak\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\client.py", line 78, in _translate
    token = self.token_acquirer.do(text)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Deepak\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\gtoken.py", line 194, in do
    self._update()
  File "C:\Users\Deepak\AppData\Local\Programs\Python\Python312\Lib\site-packages\googletrans\gtoken.py", line 62, in _update
    code = self.RE_TKK.search(r.text).group(1).replace('var ', '')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'group'
PS C:\Users\Deepak>

问题原因

这个错误源于googletrans官方版本的token获取逻辑与Google翻译网页的最新结构不兼容,导致无法解析出TKK参数。Windows系统的网络环境或请求头差异会放大这个问题,而Linux环境可能因网络配置或缓存情况暂时规避了该问题。

解决办法

方案1:安装修复版googletrans

卸载官方版本,改用经过社区修复的预发布版本:

pip uninstall googletrans -y
pip install googletrans==4.0.0-rc1

替换后无需修改原有代码,直接运行即可。

方案2:更换更稳定的翻译库

推荐使用维护更活跃的deep-translator库,避免token解析问题:

  1. 安装库:
pip install deep-translator
  1. 修改translate_text函数:
from deep_translator import GoogleTranslator

def translate_text(text, target_language):
    return GoogleTranslator(target=target_language).translate(text)

方案3:临时指定服务URL(不稳定)

在初始化Translator时手动指定Google翻译服务地址,仅作为临时 workaround:

def translate_text(text, target_language):
    translator = googletrans.Translator(service_urls=['translate.google.com'])
    translation = translator.translate(text, dest=target_language)
    return translation.text

注意:该方法可能随时失效,因为Google会调整服务接口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:17:03