当前位置: 首页 > article >正文

translategemma-4b-it代码实例:Python调用Ollama API实现图文翻译自动化

translategemma-4b-it代码实例Python调用Ollama API实现图文翻译自动化1. 了解translategemma-4b-it模型translategemma-4b-it是一个基于Google Gemma 3模型系列构建的轻量级翻译模型。这个模型专门设计用来处理图文翻译任务支持55种语言之间的互译。这个模型的最大特点是既能处理文本翻译又能识别图片中的文字并进行翻译。它可以将输入的图片归一化为896×896分辨率并将每个图像编码为256个token总输入上下文长度达到2K个token。对于需要在本地环境部署翻译服务的开发者来说translategemma-4b-it是个不错的选择。它体积相对较小可以在普通笔记本电脑、台式机或个人云基础设施上运行让更多人能够使用前沿的翻译技术。2. 环境准备与Ollama部署2.1 安装Ollama要使用translategemma-4b-it首先需要在本地安装Ollama。Ollama是一个简化大模型本地部署的工具让用户能够轻松运行各种开源模型。# 在Linux/macOS上安装Ollama curl -fsSL https://ollama.ai/install.sh | sh # 在Windows上可以从官网下载安装包 # 访问 https://ollama.ai/download 下载Windows版本安装完成后启动Ollama服务# 启动Ollama服务 ollama serve2.2 拉取translategemma模型Ollama服务运行后需要拉取translategemma模型# 拉取translategemma:4b模型 ollama pull translategemma:4b这个过程可能会花费一些时间取决于你的网络速度。模型大小约4GB左右确保你有足够的磁盘空间。2.3 验证模型安装模型拉取完成后可以通过以下命令验证是否安装成功# 查看已安装的模型 ollama list # 测试模型运行 ollama run translategemma:4b 你好如果看到模型正常响应说明安装成功。3. Python调用Ollama API实现图文翻译3.1 安装必要的Python库首先安装需要的Python库pip install requests pillow python-dotenvrequests用于发送HTTP请求到Ollama APIpillow用于处理图片文件python-dotenv用于管理环境变量可选3.2 基础API调用代码下面是一个简单的Python脚本演示如何调用Ollama API进行文本翻译import requests import json def translate_text(text, source_langen, target_langzh-Hans): 使用translategemma模型进行文本翻译 Args: text (str): 待翻译的文本 source_lang (str): 源语言代码默认为英语 target_lang (str): 目标语言代码默认为简体中文 Returns: str: 翻译后的文本 # Ollama API端点 url http://localhost:11434/api/generate # 构建提示词 prompt f你是一名专业的{source_lang}至{target_lang}翻译员。 你的目标是准确传达原文的含义与细微差别同时遵循语法、词汇及文化敏感性规范。 仅输出{target_lang}译文无需额外解释或评论。 请翻译以下文本 {text} # 请求数据 data { model: translategemma:4b, prompt: prompt, stream: False } try: # 发送请求 response requests.post(url, jsondata) response.raise_for_status() # 解析响应 result response.json() return result[response].strip() except requests.exceptions.RequestException as e: print(fAPI请求错误: {e}) return None except KeyError: print(响应格式错误) return None # 示例使用 if __name__ __main__: english_text Hello, world! This is a test of the translation system. translated translate_text(english_text) print(f原文: {english_text}) print(f译文: {translated})3.3 图片翻译完整示例对于包含图片的翻译任务需要先将图片转换为base64编码然后发送给APIimport base64 import requests from PIL import Image import io def translate_image_with_text(image_path, text_instruction, target_langzh-Hans): 翻译图片中的文字内容 Args: image_path (str): 图片文件路径 text_instruction (str): 翻译指令 target_lang (str): 目标语言 Returns: str: 翻译结果 # 读取并处理图片 try: with Image.open(image_path) as img: # 调整图片大小可选模型会自动处理 if img.size ! (896, 896): img img.resize((896, 896), Image.Resampling.LANCZOS) # 转换为base64 buffered io.BytesIO() img.save(buffered, formatJPEG) img_base64 base64.b64encode(buffered.getvalue()).decode(utf-8) except Exception as e: print(f图片处理错误: {e}) return None # 构建完整的提示词 prompt f你是一名专业的翻译员。你的目标是准确传达原文的含义与细微差别。 仅输出{target_lang}译文无需额外解释或评论。 {text_instruction} # 请求数据 data { model: translategemma:4b, prompt: prompt, images: [img_base64], stream: False } try: # 发送请求 response requests.post(http://localhost:11434/api/generate, jsondata) response.raise_for_status() result response.json() return result[response].strip() except requests.exceptions.RequestException as e: print(fAPI请求错误: {e}) return None # 使用示例 if __name__ __main__: # 翻译图片中的英文文本 result translate_image_with_text( example.jpg, 请将图片中的英文文本翻译成中文 ) print(f翻译结果: {result})3.4 批量翻译处理对于需要处理大量图片或文本的情况可以编写批量处理函数import os import time from concurrent.futures import ThreadPoolExecutor, as_completed def batch_translate_images(image_dir, output_file, text_instruction, max_workers3): 批量翻译图片目录中的图片 Args: image_dir (str): 图片目录路径 output_file (str): 输出文件路径 text_instruction (str): 翻译指令 max_workers (int): 最大并发数 # 获取所有图片文件 image_extensions [.jpg, .jpeg, .png, .bmp, .tiff] image_files [ os.path.join(image_dir, f) for f in os.listdir(image_dir) if os.path.isfile(os.path.join(image_dir, f)) and os.path.splitext(f)[1].lower() in image_extensions ] results [] def process_image(image_path): 处理单张图片 try: result translate_image_with_text(image_path, text_instruction) return { image: os.path.basename(image_path), translation: result, status: success } except Exception as e: return { image: os.path.basename(image_path), translation: None, status: ferror: {str(e)} } # 使用线程池并发处理 with ThreadPoolExecutor(max_workersmax_workers) as executor: future_to_image { executor.submit(process_image, img_path): img_path for img_path in image_files } for future in as_completed(future_to_image): result future.result() results.append(result) print(f处理完成: {result[image]} - {result[status]}) # 保存结果 with open(output_file, w, encodingutf-8) as f: for result in results: f.write(f图片: {result[image]}\n) f.write(f状态: {result[status]}\n) if result[translation]: f.write(f翻译: {result[translation]}\n) f.write(\n -*50 \n) print(f批量处理完成结果已保存到: {output_file}) # 使用示例 if __name__ __main__: batch_translate_images( image_dir./images, output_file./translation_results.txt, text_instruction请将图片中的英文文本翻译成中文 )4. 实际应用场景与技巧4.1 文档翻译自动化translategemma-4b-it特别适合处理包含图片的文档翻译。比如扫描的PDF文档、带有插图的说明书等def translate_document_pages(pdf_path, output_dir, target_langzh-Hans): 翻译PDF文档的每一页需要先将PDF转换为图片 # 这里需要先将PDF转换为图片可以使用pdf2image库 # pip install pdf2image from pdf2image import convert_from_path # 创建输出目录 os.makedirs(output_dir, exist_okTrue) # 转换PDF为图片 images convert_from_path(pdf_path) results [] for i, image in enumerate(images): # 临时保存图片 temp_path os.path.join(output_dir, fpage_{i1}.jpg) image.save(temp_path, JPEG) # 翻译图片内容 translation translate_image_with_text( temp_path, f请将图片中的文本翻译成{target_lang} ) results.append({ page: i1, translation: translation }) print(f已完成第 {i1} 页翻译) return results4.2 网页内容翻译对于需要翻译网页截图的情况可以结合浏览器自动化工具def translate_webpage_screenshot(url, output_path, target_langzh-Hans): 截取网页截图并翻译内容 # 需要使用selenium进行网页截图 # pip install selenium webdriver-manager from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 设置浏览器 options webdriver.ChromeOptions() options.add_argument(--headless) # 无头模式 options.add_argument(--disable-gpu) options.add_argument(--window-size1920,1080) driver webdriver.Chrome( serviceService(ChromeDriverManager().install()), optionsoptions ) try: # 访问网页并截图 driver.get(url) driver.save_screenshot(output_path) # 翻译截图内容 translation translate_image_with_text( output_path, f请将图片中的网页内容翻译成{target_lang} ) return translation finally: driver.quit() # 使用示例 webpage_translation translate_webpage_screenshot( https://example.com, screenshot.png, zh-Hans )4.3 优化翻译质量的技巧为了提高翻译质量可以优化提示词和预处理def optimized_translate(text_or_image, source_langen, target_langzh-Hans, contextNone): 优化后的翻译函数提供更好的翻译质量 # 构建更详细的提示词 if context: prompt f你是一名专业的{source_lang}至{target_lang}翻译员具有丰富的翻译经验。 翻译要求 1. 准确传达原文的含义与细微差别 2. 遵循{target_lang}的语法规范和表达习惯 3. 保持专业术语的一致性 4. 注意文化差异的适当处理 上下文信息{context} 请翻译以下内容仅输出{target_lang}译文 else: prompt f你是一名专业的{source_lang}至{target_lang}翻译员。 请准确翻译以下内容仅输出{target_lang}译文 # 如果是文本翻译 if isinstance(text_or_image, str): full_prompt f{prompt}\n\n{text_or_image} data { model: translategemma:4b, prompt: full_prompt, stream: False } # 如果是图片翻译 else: full_prompt f{prompt}\n\n请翻译图片中的内容 data { model: translategemma:4b, prompt: full_prompt, images: [text_or_image], # 这里应该是base64编码的图片 stream: False } # 发送请求 response requests.post(http://localhost:11434/api/generate, jsondata) result response.json() return result[response].strip()5. 常见问题与解决方案5.1 连接问题处理在使用过程中可能会遇到连接问题这里提供一些重试机制def robust_api_call(url, data, max_retries3, timeout30): 带重试机制的API调用 for attempt in range(max_retries): try: response requests.post(url, jsondata, timeouttimeout) response.raise_for_status() return response.json() except (requests.exceptions.RequestException, requests.exceptions.Timeout) as e: if attempt max_retries - 1: raise e print(f请求失败第{attempt1}次重试...) time.sleep(2 ** attempt) # 指数退避 return None # 修改翻译函数使用重试机制 def translate_with_retry(text, max_retries3): data { model: translategemma:4b, prompt: f请翻译以下文本为中文{text}, stream: False } return robust_api_call(http://localhost:11434/api/generate, data, max_retries)5.2 性能优化建议对于大量翻译任务可以考虑以下优化措施# 使用连接池提高性能 session requests.Session() def optimized_translate_batch(texts, batch_size5): 批量翻译优化版本 results [] for i in range(0, len(texts), batch_size): batch texts[i:ibatch_size] # 可以并行处理每个批次 with ThreadPoolExecutor(max_workersbatch_size) as executor: futures [ executor.submit(translate_with_retry, text) for text in batch ] for future in as_completed(futures): try: result future.result() results.append(result) except Exception as e: results.append(f翻译失败: {str(e)}) print(f已完成 {min(ibatch_size, len(texts))}/{len(texts)}) return results5.3 错误处理与日志记录添加完善的错误处理和日志记录import logging from datetime import datetime # 设置日志 logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, handlers[ logging.FileHandler(ftranslation_{datetime.now().strftime(%Y%m%d_%H%M%S)}.log), logging.StreamHandler() ] ) def safe_translate(text_or_image, operation_idNone): 安全的翻译函数包含完整的错误处理和日志记录 if operation_id is None: operation_id datetime.now().strftime(%Y%m%d_%H%M%S) try: start_time time.time() if isinstance(text_or_image, str): # 文本翻译 result translate_text(text_or_image) log_message f文本翻译完成 - 长度: {len(text_or_image)}字符 else: # 图片翻译 result translate_image_with_text(text_or_image, 请翻译图片内容) log_message f图片翻译完成 - 文件: {text_or_image} elapsed time.time() - start_time logging.info(f{log_message} - 耗时: {elapsed:.2f}s - ID: {operation_id}) return result except Exception as e: logging.error(f翻译失败: {str(e)} - ID: {operation_id}) return None6. 总结通过本文的介绍你应该已经掌握了如何使用Python调用Ollama API来实现translategemma-4b-it模型的图文翻译自动化。这个方案的优势在于部署简单只需要安装Ollama和拉取模型无需复杂的深度学习环境配置功能强大支持55种语言的文本和图片翻译满足大多数翻译需求灵活易用提供了从简单到高级的各种代码示例可以根据实际需求进行调整在实际应用中你可以根据具体场景选择合适的方案。对于简单的文本翻译使用基础API调用就足够了对于复杂的图片文档翻译可以使用批量处理函数对于需要高质量翻译的场景可以尝试优化提示词和添加上下文信息。记得根据实际需求调整并发数、超时时间和错误处理策略以确保翻译服务的稳定性和可靠性。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

translategemma-4b-it代码实例:Python调用Ollama API实现图文翻译自动化

translategemma-4b-it代码实例:Python调用Ollama API实现图文翻译自动化 1. 了解translategemma-4b-it模型 translategemma-4b-it是一个基于Google Gemma 3模型系列构建的轻量级翻译模型。这个模型专门设计用来处理图文翻译任务,支持55种语言之间的互译…...

GLDAS数据变量单位速查与避坑指南:别再搞混土壤湿度和蒸散发单位了!

GLDAS数据变量单位解析与科研避坑实战指南 科研工作中最令人沮丧的瞬间之一,莫过于花费数周时间分析数据后,发现因为单位换算错误导致所有结论需要推倒重来。GLDAS数据集作为全球陆地水文研究的重要数据源,其NOAH、VIC等模型输出的土壤湿度、…...

Jmeter压测实战—Jmeter二次开发之自定义函数

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、前言 Jmeter是Apache基金会下的一款应用场景非常广的压力测试工具,具备轻量、高扩展性、分布式等特性。Jmeter已支持实现随机数、计数器、时间戳…...

从脚本NPC到自主决策体,SITS2026实测对比:AIAgent使玩家沉浸时长提升217%,你还在用状态机?

第一章:SITS2026分享:AIAgent游戏NPC应用 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026大会上,AIAgent技术首次系统性地应用于开放世界游戏NPC行为建模,突破了传统状态机与行为树的响应边界。通过将LLM推理能力、记…...

AIAgent强化学习实战跃迁:从OpenAI Gym到工业级决策系统,3周完成Agent训练闭环

第一章:AIAgent强化学习实战跃迁:从OpenAI Gym到工业级决策系统,3周完成Agent训练闭环 2026奇点智能技术大会(https://ml-summit.org) 本章聚焦真实工业场景下的Agent训练闭环构建——以电力调度优化任务为载体,将经典CartPole环…...

告别重复造轮子:OpenAI Codex高效生成脚本实战指南

告别重复造轮子:OpenAI Codex高效生成脚本实战指南 在开发者的日常工作中,“重复造轮子”是一个高频痛点——无论是简单的自动化部署脚本、繁琐的数据处理逻辑,还是基础的测试用例生成,往往需要花费大量时间编写重复代码,不仅降低开发效率,还容易因手动编码出现疏漏。而…...

C#.NET IL 中间码 深入解析:从 C# 编译结果到 CLR 执行链路

简介 很多人第一次认真看 IL,通常不是因为“想学一门汇编”,而是因为碰到了这些问题: 同一段 C#,编译之后到底变成了什么async/await、yield、lock 这些语法糖到底被编译成了什么样为什么有些代码看着简单,运行时却没你…...

AGENTS.md的最佳实践

如果把 AI 编程助手比作一台超跑,那么 AGENTS.md就是它的方向盘和导航仪。它是位于项目根目录的特定配置文件(目前已被 Cursor、Windsurf、Claude Code 等主流 AI 编辑器广泛支持),本质上相当于给 AI 注入的“系统级提示词”。 为了让 AI 从“听话的执行者”进阶为“懂你的…...

使用C#代码在 Excel 中创建数据透视图

数据透视图是数据透视表的图形化展示形式。数据透视表用于对数据进行汇总并支持灵活分析,而数据透视图则将这些汇总结果以可视化图表的方式呈现出来。随着数据透视表内容的变化,数据透视图也会自动更新,因此在数据分析与报表展示中具有重要作…...

赋能智能车与机器人技术转型:大联大世平集团携手AutoSys举办线上研讨会

大联大控股旗下世平集团宣布,于4月1日携手AutoSys(先进智能系统)成功举办“Edge AI赋能智能车与机器人产业的感知技术转型路径”线上研讨会。 当前,智能车与机器人技术正加速融合,AI大模型深度赋能感知与决策&#xff…...

碧蓝航线Live2D提取完全指南:5分钟掌握角色动画资源获取

碧蓝航线Live2D提取完全指南:5分钟掌握角色动画资源获取 【免费下载链接】AzurLaneLive2DExtract OBSOLETE - see readme / 碧蓝航线Live2D提取 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneLive2DExtract 想要提取碧蓝航线中精美的Live2D角色动画…...

落子珠江,新址启航|安托广州子公司盛大开业

4月10日,安托广州子公司正式揭牌。与其说是一场开业仪式,不如说是安托在华南地区的一次技术扎根。广东地区作为我国制造大省和国家数字经济创新发展试验区,正加速向“数智化韧性”跃迁。在此背景下,安托选择落子广州,不…...

安科瑞AIM-T系列工业IT绝缘监测及故障定位解决方案为关键供电场所筑牢安全防线

在工业生产与特殊场所供电系统中,供电的连续性、可靠性和安全性至关重要。为了应对复杂环境下的接地故障风险,IT系统(不接地供电系统) 逐渐成为矿井、矿山、冶金、化工、船舶、玻璃厂、爆炸危险场所等领域的优选方案。安科瑞电气股…...

RobotStudio多版本共存避坑指南:5.0/6.0/2019版如何和平共处?

RobotStudio多版本共存实战指南:从兼容性到高效工作流 在工业机器人开发领域,ABB的RobotStudio是工程师们不可或缺的工具。随着项目需求的多样化,许多开发者发现单一版本的RobotStudio已经无法满足日常工作需要——旧项目维护需要5.0版本&…...

国企行政筹办正式会议,标准国企会议纪要撰写权威指南

2026年国企筹办正式会议,写标准会议纪要是最容易踩坑的环节:表述不准、漏记待办分工都得返工,好多新人熬三个小时写的稿都过不了审。今天就把我摸了大半年的标准撰写方法,还有能省80%时间的工具技巧讲明白。去年我在集团行政部轮岗…...

(二十二)32天GPU测试从入门到精通-DeepSeek 模型测试day20

目录 引言DeepSeek 模型介绍架构特点推理性能测试中文场景优化与其他模型对比实战部署选型建议 引言 DeepSeek 是中国深度求索公司开发的大语言模型系列,以出色的中文能力和高性价比著称,是国产大模型的代表之一。从 2023 年的第一代 DeepSeek LLM&…...

AI 驱动与 Wi-Fi 7 双剑合璧,全屋智能家居迎来“认知革命”

如果你觉得智能家居不过是“用手机开关灯”或者“对着音箱问问天气”,那么 2026 年的今天,这个定义已经被彻底颠覆。在 AI 大模型与 Wi-Fi 7 下一代无线网络技术的深度加持下,家庭空间正从“联网的房屋”进化为拥有感知、决策与执行能力的“智…...

ROS小车换雷达后建图重影?别急着调TF,先检查这个关键参数(附完整排查清单)

ROS小车换雷达后建图重影?别急着调TF,先检查这个关键参数(附完整排查清单) 刚给ROS导航小车换上新的激光雷达,满心期待地启动gmapping建图,结果地图上却出现了令人头疼的重影现象。作为经历过多次类似问题的…...

C++代码静态检查脚本工具(指针判空越界访问除0风险)

做了个小项目需要进行代码规范检查,但试了两个CPP静态检查工具,效果都不太好。为了快速迭代维护,直接用pyAI写了个常规代码规范校验脚本工具。目前实现三个功能并封了界面:空指针访问、数组越界访问、除0风险排查。用sample文件夹…...

Halcon实战:光源不均场景下的平场矫正优化策略

1. 光源不均问题的工业视觉挑战 在工业视觉检测中,光源分布不均是最常见的干扰因素之一。想象一下用手机在逆光环境下拍照——画面中某些区域会过曝,而另一些区域又太暗。工业场景中的情况更为复杂:环形光源老化导致的亮度衰减、多角度照射产…...

CV算法工程师求职全攻略:25个知识点帮你通关面试

CV算法工程师求职全攻略:25个知识点帮你通关面试很多同学让我写面试指南,我一直没动笔。因为面试这事儿没有标准答案,说多了容易让人焦虑。 但今天还是聊聊,毕竟有些经验可以分享。 面试官到底看什么 招一个CV算法工程师&#xff…...

2026 年 Intel 酷睿 Ultra 平台装机:华硕主板全系列专业主板测评与精准选购指南

进入 2026 年,Intel 酷睿 Ultra 200S Plus新品的到来,完成消费级市场的全面落地,新一代硬件架构为游戏、内容创作、AI 应用带来了全新的性能体验。在整机搭建过程中,主板怎么选成为多数用户的核心疑问,华硕主板作为 Intel 平台的核心合作产品,覆盖了从旗舰到入门的全价位段需求…...

AI Agent求职被拒最常见的原因是什么

这些实际上更像工程问题,公司愿意给30k月薪的原因就在这里,Agent开发不是玩具技术人,是能把玩具变成生产力的人。这环节最直接有效的方法就是跟着项目完整走一遍,如果你无从下手,趁着有大佬带队,你直接跟着…...

45、如何理解和实现递归?数组扁平化里递归有什么缺陷?

目录 一、先给面试里的标准定义 什么是递归? 二、递归的核心组成 1. 终止条件 2. 当前层逻辑 3. 递归子问题 三、如何写递归?一个通用思路 例子:求 1 到 n 的和 拆解: 四、递归的执行过程怎么理解? 1. 递进…...

昇腾ATC工具实战:如何为PP-OCRv4文本检测模型设置动态输入(Batch/分辨率/Shape)

昇腾ATC工具深度实战:PP-OCRv4文本检测模型动态输入配置全解析 当工业级OCR系统遇到尺寸各异的身份证、发票或模糊的街景文字时,固定输入尺寸的模型往往成为性能瓶颈。某物流公司曾因无法处理不同规格的运单图片,导致识别准确率骤降30%。这正…...

Java 高级特性” 体系(反射 + 枚举 + Lambda)

1.反射 1.1 定义 Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 不用 new,不用知道类名,也能操作类。 1.2 用途 框架底层核心(S…...

手把手教你用F1C200s驱动正点原子7寸LCD屏:完整配置流程与LVGL测试

从零构建F1C200s嵌入式GUI系统:正点原子7寸屏驱动与LVGL实战指南 在嵌入式开发领域,显示界面的人机交互体验越来越受到重视。F1C200s作为一款性价比极高的国产ARM9芯片,搭配正点原子7寸LCD屏,能够构建出性能稳定、成本可控的嵌入式…...

2026届最火的降重复率方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术研究范畴之内,论文AI网站已然成了提升写作效率的关键工具,这种…...

主流Attention Backend技术选型与实战场景剖析

1. Attention Backend技术全景解析 当你用ChatGPT生成一段文字,或者让Stable Diffusion画一幅画时,背后都有一个关键组件在默默工作——Attention Backend。这就像汽车发动机里的涡轮增压器,虽然用户看不见,却直接决定了AI模型的&…...

亲测口碑好的物联网开发生产厂家分享

亲测口碑好的物联网开发生产厂家分享行业痛点分析在当前物联网开发领域,存在着诸多技术挑战。首先,设备兼容性难题突出,不同品牌、型号的物联网设备通信协议和接口各异,导致系统集成困难。数据表明,约 60%的物联网项目…...