批量翻译游戏图片遇认证错误,求Google Cloud配置分步教程
批量翻译游戏图片解决方案
一、需启用的Google Cloud API
- Cloud Translation API:负责翻译提取出的文字
- Cloud Vision API:负责识别图片中的日文文字(原代码错误调用了不存在的
translate_image方法,正确流程需要先识别文字再翻译)
二、创建服务账号与配置凭证(分步操作)
- 登录Google Cloud控制台,进入你的项目
- 左侧导航栏选择「IAM与管理员」→「服务账号」
- 点击「创建服务账号」,填写名称和描述后完成创建
- 在服务账号列表中找到刚创建的账号,点击「编辑」→「添加权限」
- 搜索并添加「Cloud Translation API 用户」权限
- 搜索并添加「Cloud Vision API 用户」权限
- 点击「保存」
- 切换到该服务账号的「密钥」标签页,点击「添加密钥」→「创建新密钥」
- 选择「JSON」格式,点击「创建」,密钥文件会自动下载到本地
三、本地凭证配置
- 将下载的JSON密钥文件放到项目目录或其他安全路径
- 设置环境变量:
- Windows(命令提示符):
set GOOGLE_APPLICATION_CREDENTIALS="你的密钥文件完整路径.json" - Linux/macOS(终端):
export GOOGLE_APPLICATION_CREDENTIALS="你的密钥文件完整路径.json"
- Windows(命令提示符):
四、可运行的Python脚本
以下脚本实现「图片文字识别→翻译→顶部添加黑条+翻译文字」的完整流程:
import os from google.cloud import vision_v1 as vision from google.cloud import translate_v2 as translate from PIL import Image, ImageDraw, ImageFont def process_single_image(input_path, output_path, target_lang='en'): # 1. 识别图片中的文字 vision_client = vision.ImageAnnotatorClient() with open(input_path, 'rb') as img_file: img_content = img_file.read() image = vision.Image(content=img_content) text_response = vision_client.text_detection(image=image) # 无文字时直接复制原图片 if not text_response.text_annotations: print(f"{input_path} 未识别到文字,直接复制原文件") with open(input_path, 'rb') as src, open(output_path, 'wb') as dst: dst.write(src.read()) return original_text = text_response.text_annotations[0].description # 2. 翻译文字 translate_client = translate.Client() translate_result = translate_client.translate(original_text, target_language=target_lang) translated_text = translate_result['translatedText'] # 3. 给图片添加顶部黑条并写入翻译文字 with Image.open(input_path) as img: bar_height = 40 # 黑条高度,可根据需求调整 # 创建带黑条的新图片 new_img = Image.new('RGB', (img.width, img.height + bar_height), 'black') new_img.paste(img, (0, bar_height)) # 绘制文字 draw = ImageDraw.Draw(new_img) # 加载字体,可替换为本地可用的字体路径 try: font = ImageFont.truetype("arial.ttf", 24) except IOError: font = ImageFont.load_default() # 文字居中显示 text_width = draw.textlength(translated_text, font=font) text_x = (new_img.width - text_width) // 2 text_y = (bar_height - 24) // 2 draw.text((text_x, text_y), translated_text, fill='white', font=font) # 保存处理后的图片 new_img.save(output_path) def batch_process_images(input_dir, output_dir, target_lang='en'): # 创建输出目录(不存在则自动创建) os.makedirs(output_dir, exist_ok=True) # 支持的图片格式 supported_extensions = ('.png', '.jpg', '.jpeg', '.bmp') for filename in os.listdir(input_dir): if filename.lower().endswith(supported_extensions): input_path = os.path.join(input_dir, filename) output_path = os.path.join(output_dir, filename) print(f"正在处理:{filename}") process_single_image(input_path, output_path, target_lang) if __name__ == "__main__": # 替换为你的输入/输出目录路径 INPUT_DIR = "path/to/your/input/images" OUTPUT_DIR = "path/to/your/output/images" batch_process_images(INPUT_DIR, OUTPUT_DIR)
五、依赖安装
运行脚本前需安装以下依赖包:
pip install google-cloud-vision google-cloud-translate pillow
内容的提问来源于stack exchange,提问作者Johnny Guides
相关产品推荐
相关产品推荐

