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

如何批量翻译图片?附Python代码报错修复求助

批量图片翻译的免费方案

如果要批量处理200余张漫画类图片,可从以下免费途径入手:

  • 开源脚本组合:用Tesseract OCR做批量文字识别,搭配DeepL免费API、百度翻译免费API完成翻译,自行编写简单脚本即可实现全流程自动化,适合有编程基础的用户。
  • 桌面工具:
    • 天若OCR:支持批量导入图片识别文字,内置翻译功能,可直接导出结果,免费版的批量处理能力足以应对200张图片的需求。
    • 部分本地OCR工具支持命令行调用,可写批处理脚本循环处理文件夹内所有图片。
  • 在线平台:部分正规免费在线OCR网站支持批量上传几十到上百张图片,识别完成后可批量翻译并导出文本,注意避免上传敏感内容。
Python代码修复方案

原代码存在多处关键问题,以下是修复后的版本及问题说明:

问题分析

  1. 缺少os模块导入,代码中多处用到os相关方法但未声明导入。
  2. Google Cloud凭证配置错误:GOOGLE_APPLICATION_CREDENTIALS需要的是服务账号JSON密钥文件的路径,而非API Key,API Key无法用于Vision和Translate客户端的身份验证。
  3. 图片处理逻辑错误:原代码仅生成空白图片保存,未将翻译后的文字叠加到原图上,完全不符合漫画翻译的需求。
  4. 未处理Vision API的响应错误,可能导致静默失败。

修复后的代码

import os
from google.cloud import vision
from google.cloud import translate_v2 as translate
from PIL import Image, ImageDraw, ImageFont

# 设置Google Cloud服务账号JSON密钥文件路径
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path/to/your/service-account-key.json'

# 初始化客户端
vision_client = vision.ImageAnnotatorClient()
translate_client = translate.Client()

def detect_and_translate_text(image_path, target_language='zh-TW'):
    with open(image_path, 'rb') as image_file:
        content = image_file.read()

    image = vision.Image(content=content)
    response = vision_client.text_detection(image=image, image_context={"language_hints": ["ja"]})

    # 处理API错误
    if response.error.message:
        raise Exception(f"Vision API Error: {response.error.message}")

    texts = response.text_annotations
    if not texts:
        return None, []

    # 提取所有文本块的内容和边界框(第一个是全文,后面是单个文本块)
    detected_text = texts[0].description
    text_boxes = [text.bounding_poly for text in texts[1:]]

    # 翻译文本
    translation = translate_client.translate(detected_text, target_language=target_language)
    translated_lines = translation['translatedText'].split('\n')

    return translated_lines, text_boxes

def translate_and_save_image(input_folder, output_folder, target_language='zh-TW', font_path='path/to/your/font.ttf'):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 加载字体,根据需要调整大小
    try:
        font = ImageFont.truetype(font_path, 20)
    except:
        #  fallback到默认字体
        font = ImageFont.load_default()

    for filename in os.listdir(input_folder):
        if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, filename)

            try:
                translated_lines, text_boxes = detect_and_translate_text(input_path, target_language)

                if translated_lines:
                    # 打开原图
                    img = Image.open(input_path).convert('RGB')
                    draw = ImageDraw.Draw(img)

                    # 用白色覆盖原文本区域,然后绘制翻译后的文字
                    for box in text_boxes:
                        # 获取边界框坐标
                        vertices = box.vertices
                        x0, y0 = vertices[0].x, vertices[0].y
                        x1, y1 = vertices[2].x, vertices[2].y
                        # 绘制白色矩形覆盖原文字
                        draw.rectangle([(x0, y0), (x1, y1)], fill='white')

                    # 绘制翻译后的文字(基础版本,可根据漫画排版优化文本块对应关系)
                    y_offset = 50
                    for line in translated_lines:
                        draw.text((50, y_offset), line, font=font, fill='black')
                        y_offset += 30

                    img.save(output_path)
                    print(f'处理完成: {filename}')
                else:
                    print(f'未检测到文字: {filename}')
            except Exception as e:
                print(f'处理{filename}出错: {str(e)}')

# 设置输入输出文件夹(Windows路径用单斜杠或双反斜杠)
input_folder = 'C:/input_folder'
output_folder = 'C:/output_folder'

# 执行批量处理(替换字体路径为本地中文字体路径,比如微软雅黑)
translate_and_save_image(input_folder, output_folder, font_path='C:/Windows/Fonts/msyh.ttc')

额外说明

  • 若没有Google Cloud付费额度,建议替换为免费服务:用Tesseract OCR替代Google Vision,用DeepL免费API或百度翻译免费API替代Google Translate,避免产生费用。
  • 漫画翻译的文字对齐需要更精细的处理,上述代码为基础版本,可根据实际排版优化文本块的位置、字体大小等参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:35:11