使用Python批量调用Google Translate翻译图片时遇‘google模块未找到’错误
解决
ModuleNotFoundError: No module named 'google'及图片批量翻译代码修正 1. 解决模块缺失问题
错误因未安装Google Cloud相关Python SDK导致,执行以下命令安装依赖:
pip install google-cloud-translate google-cloud-vision pillow
若环境中Python 2和3共存,改用pip3确保安装到Python 3环境。
2. 代码修正及完整实现
原代码存在方法不存在、未导入必要模块、路径转义、缺少认证等问题,以下是可运行的修正版本:
import os import io from google.cloud import translate_v2 as translate from google.cloud import vision from PIL import Image, ImageDraw, ImageFont # 配置参数(用原始字符串避免Windows路径转义问题) input_dir = r"D:\e\homework\manga doujins and hentai\[Shuuki] Onechan ga wakan nai! 1" output_dir = r"D:\e\homework\manga doujins and hentai\[Shuuki] Onechan ga wakan nai! 1\translated" target_language = "fr" # Google翻译用标准语言代码,法语为fr而非french # 创建输出目录(不存在则自动创建) os.makedirs(output_dir, exist_ok=True) # 配置Google Cloud认证(替换为你的服务账号密钥文件路径) os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/your-service-account-key.json" # 初始化API客户端 translate_client = translate.Client() vision_client = vision.ImageAnnotatorClient() # 遍历目录内的图片文件 for filename in os.listdir(input_dir): # 仅处理常见图片格式 if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')): file_path = os.path.join(input_dir, filename) # 调用Vision API识别图片文字 with io.open(file_path, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) text_response = vision_client.text_detection(image=image) texts = text_response.text_annotations # 无文字则直接复制原图片 if not texts: print(f"{filename}未检测到文字,直接复制原文件") with open(file_path, 'rb') as src, open(os.path.join(output_dir, filename), 'wb') as dst: dst.write(src.read()) continue # 翻译识别到的文字 original_text = texts[0].description translation_result = translate_client.translate(original_text, target_language=target_language) translated_text = translation_result['translatedText'] # 打开图片并绘制翻译后的文字(基础实现,可根据需求优化字体、位置) img = Image.open(file_path) draw = ImageDraw.Draw(img) # 替换为本地字体路径,例如Windows系统的微软雅黑:r"C:\Windows\Fonts\msyh.ttc" font = ImageFont.truetype("arial.ttf", 20) # 覆盖原文字区域并绘制翻译内容(简单处理,精准匹配需遍历单个文字块坐标) draw.rectangle([(0, 0), img.size], fill='white') draw.text((10, 10), translated_text, font=font, fill='black') # 保存翻译后的图片 img.save(os.path.join(output_dir, filename)) print(f"{filename}翻译完成")
3. 关键注意事项
- Google Cloud认证:需在Google Cloud控制台创建服务账号,下载密钥JSON文件,替换代码中的密钥路径。
- 语言代码:Google翻译API使用标准语言代码,如英语
en、日语ja,而非语言全称。 - 图片处理优化:上述代码为基础实现,如需精准匹配原文字位置替换,可遍历
texts列表中的每个元素获取坐标,逐个处理文字块。
内容的提问来源于stack exchange,提问作者YeetDabMcFapDab
相关产品推荐
相关产品推荐

