import os
from google.cloud import translate_v3beta1 as translate
def upload_and_translate(input_dir, output_dir, target_language):
"""Uploads all images in a directory, translates them using Google Translate, and downloads the translated images to a specified output directory.
Args:
input_dir: The directory containing the images to be translated.
output_dir: The directory to which the translated images will be downloaded.
target_language: The target language for the translation.
"""
# Create a Google Translate client.
client = translate.Client()
# Get a list of all the files in the input directory.
files = os.listdir(input_dir)
# Iterate over the files and upload them to Google Translate.
for file in files:
with open(os.path.join(input_dir, file), "rb") as f:
# Upload the image to Google Translate.
response = client.translate_image(
f,
target_language=target_language,
)
# Download the translated image.
with open(os.path.join(output_dir, file), "wb") as f:
f.write(response.translated_image)
# Example usage:
if __name__ == "__main__":
input_dir = "example\path\to\things"
output_dir = "example\path\to\finishedthings"
target_language = "en"
upload_and_translate(input_dir, output_dir, target_language)
尝试使用此脚本来翻译一个包含 jpg 文件的文件夹,谷歌翻译网站会很乐意接受这些文件,但不知道从这里该怎么做。
AttributeError:
'Client' object has no attribute 'translate_image'
和
AttributeError: module 'google.cloud.translate_v3beta1' has no attribute 'Client'
在我尝试时都显示运行这个,当这个脚本显然在过去为其他人工作过时。
不使用虚拟环境,因为我读到这是没有必要的。依赖项也已重新安装。
是对的,Google Cloud Translate API 中没有直接名为
translate_image
的函数。此外,
google.cloud.translate_v3beta1
库主要用于文本翻译。
要翻译图像,需要结合使用 Optical Character Recognition (OCR) 和 Google Cloud Translation API。
以下是如何执行此操作的步骤:
-
使用 OCR 引擎提取图像中的文本。
可以使用 Cloud Vision API 的
DOCUMENT_TEXT_DETECTION
功能。 -
将提取的文本发送到 Google Cloud Translation API 进行翻译。
使用
google.cloud.translate_v3
库中的TranslationServiceClient
。 - (可选)可以使用原始图像并将翻译后的文本覆盖在检测到的文本区域上。 这需要一些图像处理工作。
以下是使用 Python 中的 Cloud Vision API 和 Cloud Translation API 翻译图像的示例代码:
import os
from google.cloud import vision
from google.cloud import translate_v3 as translate
def translate_image(image_path, target_language="en"):
"""使用 Google Cloud Vision API 和 Translation API 翻译图像。
Args:
image_path: 图像的路径。
target_language: 目标语言代码。
Returns:
翻译后的文本或出现错误时为 None。
"""
# 实例化 Cloud Vision 客户端
client = vision.ImageAnnotatorClient()
# 从文件中加载图像
with open(image_path, "rb") as image_file:
content = image_file.read()
image = vision.Image(content=content)
# 执行文本检测
response = client.document_text_detection(image=image)
text = response.full_text_annotation.text
# 如果检测到文本,则将其翻译
if text:
translate_client = translate.TranslationServiceClient()
location = "global"
parent = f"projects/your-project-id/locations/{location}"
response = translate_client.translate_text(
request={
"parent": parent,
"contents": [text],
"mime_type": "text/plain",
"target_language_code": target_language,
}
)
# 返回翻译后的文本
return response.translations[0].translated_text
else:
return None
# 示例用法:
image_path = "path/to/your/image.jpg"
target_language = "es" # 例如,翻译成西班牙语
translated_text = translate_image(image_path, target_language)
if translated_text:
print(f"翻译后的文本:{translated_text}")
else:
print("无法从图像中提取文本。")
请记住,需要执行以下操作:
-
安装必要的库:
pip install google-cloud-vision google-cloud-translate
- 设置的 Google Cloud 项目并启用 Vision API 和 Translation API。
-
在的代码中设置的凭据。
可以设置
GOOGLE_APPLICATION_CREDENTIALS
环境变量以指向的服务帐户密钥文件。
这种方法使用 OCR 首先从图像中提取文本,然后将其发送到 Translation API。这样,就可以翻译图像中的文本。
标签:python,google-cloud-platform,google-translate,google-translation-api,google-clou From: 78615111