Translumo:基于模块化架构的实时屏幕文本翻译系统
【免费下载链接】TranslumoAdvanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc.项目地址: https://gitcode.com/gh_mirrors/tr/Translumo
Translumo是一个面向Windows平台的实时屏幕文本翻译解决方案,采用C#和.NET技术栈构建。该系统通过集成OCR识别、翻译服务调用和文本处理流水线,实现了对屏幕任意区域文本的实时捕捉与翻译。项目采用工厂模式和多层架构设计,支持多种OCR引擎和翻译服务的可插拔式集成。
技术背景与核心挑战
实时屏幕文本翻译面临三个主要技术挑战:低延迟的屏幕捕捉、准确的多语言OCR识别,以及高效稳定的翻译服务集成。传统的屏幕翻译工具通常面临性能瓶颈和识别准确率问题,特别是在处理动态内容、特殊字体和复杂背景时表现不佳。
Translumo的技术方案通过以下方式解决这些挑战:
- 异步处理流水线:屏幕捕捉、OCR识别和翻译服务调用并行执行
- 多引擎协同:支持Windows OCR、Tesseract和EasyOCR三种识别引擎
- 智能缓存机制:避免重复翻译相同内容,提升响应速度
- 代理轮换策略:支持多代理服务器配置,避免服务限制
系统架构概览
Translumo采用分层架构设计,主要组件包括:
// 核心处理服务位于 src/Translumo.Processing/TranslationProcessingService.cs public class TranslationProcessingService : IProcessingService, IDisposable { private readonly ICapturerFactory _capturerFactory; private readonly IChatTextMediator _chatTextMediator; private readonly OcrEnginesFactory _enginesFactory; private readonly TranslatorFactory _translatorFactory; private readonly TtsFactory _ttsFactory; private readonly TextDetectionProvider _textProvider; private readonly TextResultCacheService _textResultCacheService; }系统工作流程如下:
- 屏幕捕捉模块捕获指定区域图像
- OCR引擎工厂根据配置选择合适的识别引擎
- 文本检测提供器处理识别结果并提取有效文本
- 翻译器工厂调用相应的翻译服务API
- 文本到语音引擎(可选)生成语音输出
- 翻译结果显示在覆盖窗口中
核心模块实现原理
OCR引擎工厂模式
OCR引擎系统采用工厂模式设计,支持多种识别技术的动态选择:
// src/Translumo.OCR/OcrEnginesFactory.cs public class OcrEnginesFactory { public IEnumerable<IOCREngine> GetEngines(IEnumerable<OcrConfiguration> ocrConfigurations, Languages detectionLanguage) { foreach (var ocrConfiguration in ocrConfigurations) { var confType = ocrConfiguration.GetType(); if (confType == typeof(WindowsOCRConfiguration)) { // Windows OCR引擎实现 var engine = TryGetEngine(() => new WindowsOCREngine(langDescriptor), detectionLanguage); if (engine != null) yield return engine; } else if (confType == typeof(TesseractOCRConfiguration)) { // Tesseract引擎实现 var engine = TryGetEngine(() => new TesseractOCREngine(langDescriptor), detectionLanguage); if (engine != null) yield return engine; } // ... 其他引擎处理 } } }每种OCR引擎都有其特定的适用场景:
| 引擎类型 | 技术实现 | 适用场景 | 性能特点 |
|---|---|---|---|
| Windows OCR | Windows.Media.Ocr API | 标准字体、游戏界面 | 原生集成,性能最佳 |
| Tesseract 5.2 | 开源OCR库 | 复杂排版、特殊字体 | 支持多语言,可定制 |
| EasyOCR | 深度学习模型 | 低对比度、模糊文字 | 识别精度高,资源消耗大 |
翻译服务抽象层
翻译模块采用抽象工厂模式,支持多种翻译服务的无缝切换:
// src/Translumo.Translation/TranslatorFactory.cs public class TranslatorFactory { public ITranslator CreateTranslator(TranslationConfiguration translatorConfiguration) { switch (translatorConfiguration.Translator) { case Translators.Deepl: return new DeepLTranslator(translatorConfiguration, _languageService, _logger); case Translators.Yandex: return new YandexTranslator(translatorConfiguration, _languageService, _actionDispatcher, _logger); case Translators.Papago: return new PapagoTranslator(translatorConfiguration, _languageService, _logger); case Translators.Google: return new GoogleTranslator(translatorConfiguration, _languageService, _logger); default: throw new NotSupportedException(); } } }每个翻译器都继承自BaseTranslator基类,实现了统一的翻译接口:
public abstract class BaseTranslator : ITranslator { public abstract Task<string> TranslateTextAsync(string sourceText, CancellationToken cancellationToken = default); }配置管理系统
系统配置采用分层结构,位于src/Translumo/Configuration/目录:
- SystemConfiguration.cs:系统级配置,包含语言设置和全局参数
- ScreenCaptureConfiguration.cs:屏幕捕捉配置,定义捕捉区域和刷新率
- HotKeysConfiguration.cs:热键配置,支持键盘和游戏手柄输入
- ChatWindowConfiguration.cs:翻译结果显示窗口配置
配置系统支持运行时更新和持久化存储,通过MVVM模式实现界面与配置的绑定。
性能优化策略
异步处理流水线
系统采用异步编程模型,避免UI线程阻塞:
private async Task ProcessTranslationAsync(CancellationToken cancellationToken) { // 1. 异步捕捉屏幕 var capturedImage = await _capturer.CaptureScreenAsync(cancellationToken); // 2. 并行执行OCR识别 var ocrTasks = _engines.Select(engine => engine.DetectTextAsync(capturedImage, cancellationToken)); var results = await Task.WhenAll(ocrTasks); // 3. 文本处理和质量评估 var bestText = _textProvider.GetBestDetectionResult(results); // 4. 缓存检查 if (_textResultCacheService.TryGetCachedTranslation(bestText, out var cachedResult)) { // 使用缓存结果 return cachedResult; } // 5. 异步翻译调用 var translation = await _translator.TranslateTextAsync(bestText, cancellationToken); // 6. 更新缓存 _textResultCacheService.CacheTranslation(bestText, translation); }智能缓存机制
文本结果缓存服务TextResultCacheService实现了LRU缓存策略,避免重复翻译相同内容:
public class TextResultCacheService { private readonly LimitedDictionary<string, string> _cache; public bool TryGetCachedTranslation(string sourceText, out string translation) { // 对文本进行标准化处理(去除空格、转换为小写等) var normalizedText = NormalizeText(sourceText); return _cache.TryGetValue(normalizedText, out translation); } }代理轮换与容错
翻译服务集成代理支持,避免API限制:
// src/Translumo.Translation/Configuration/Proxy.cs public class Proxy { public string Host { get; set; } public int Port { get; set; } public string Username { get; set; } public string Password { get; set; } public ProxyType Type { get; set; } } // 代理轮换策略 private IHttpReader GetHttpReaderWithProxy() { var proxy = _proxyManager.GetNextAvailableProxy(); return new HttpReader(proxy); }扩展机制与二次开发
自定义OCR引擎集成
开发者可以通过实现IOCREngine接口集成新的OCR引擎:
public interface IOCREngine { Task<TextDetectionResult> DetectTextAsync(Bitmap image, CancellationToken cancellationToken); OcrConfiguration Configuration { get; } }翻译服务扩展
新的翻译服务需要继承BaseTranslator基类:
public class CustomTranslator : BaseTranslator { public override async Task<string> TranslateTextAsync(string sourceText, CancellationToken cancellationToken = default) { // 实现自定义翻译逻辑 var response = await _httpClient.PostAsync(apiEndpoint, content, cancellationToken); return ParseTranslationResponse(response); } }配置系统扩展
系统配置支持运行时动态加载,新增配置类需要继承相应的基类并注册到DI容器中。
应用场景与技术实现
游戏实时翻译
游戏翻译场景对性能要求极高,Translumo采用以下优化策略:
- 最小化捕捉区域:通过
SelectionAreaWindow精确选择对话区域 - DirectX屏幕捕捉:使用
ScreenDXCapturer实现高性能屏幕捕捉 - 游戏手柄支持:集成
GamepadService支持手柄热键操作
Translumo英文界面演示:实时翻译流程和快捷键操作指南
视频字幕翻译
针对视频硬字幕翻译的特殊需求:
- 动态区域跟踪:自动检测字幕区域变化
- 多语言识别:支持30+种语言的OCR识别
- 翻译质量评估:使用
TextValidityPredictor评估翻译结果准确性
Translumo俄语界面演示:支持多语言界面切换和本地化操作
软件界面翻译
软件界面翻译需要处理静态文本和动态内容:
- 文本区域检测:识别界面中的文本元素
- 上下文感知:考虑界面元素的语义关系
- 批量处理:支持同时翻译多个相关文本区域
部署与配置指南
系统要求
- 操作系统:Windows 10版本2004或更高,Windows 11
- 运行环境:.NET 6.0 Runtime
- 内存要求:2GB RAM(基本功能),8GB RAM(EasyOCR引擎)
- GPU支持:可选NVIDIA GPU(CUDA 11.8)用于深度学习OCR
编译与构建
项目使用Visual Studio解决方案文件管理,支持多种构建配置:
# 克隆项目 git clone https://gitcode.com/gh_mirrors/tr/Translumo # 恢复NuGet包 dotnet restore Translumo.sln # 构建发布版本 dotnet build Translumo.sln -c Release配置文件结构
主要配置文件位于项目根目录和用户配置目录:
📁 项目结构 ├── src/ │ ├── Translumo/Configuration/ # 系统配置类 │ ├── Translumo.OCR/Configuration/ # OCR引擎配置 │ ├── Translumo.Translation/Configuration/ # 翻译服务配置 │ └── Translumo.TTS/ # 语音合成配置 ├── appsettings.json # 应用设置 └── user.config # 用户个性化配置性能调优建议
- 内存优化:调整
TextResultCacheService缓存大小 - 网络优化:配置合适的代理服务器和超时设置
- 识别优化:根据内容类型选择合适的OCR引擎
- 显示优化:调整翻译窗口的透明度和刷新率
技术架构优势
Translumo的模块化架构提供了以下技术优势:
- 可扩展性:工厂模式和接口设计支持新功能的快速集成
- 可维护性:清晰的关注点分离和依赖注入设计
- 性能优化:异步处理和缓存机制确保实时响应
- 多平台支持:基于.NET技术栈,具备跨平台潜力
系统采用现代软件工程实践,包括单元测试、持续集成和代码质量检查,确保项目的长期可维护性。
总结
Translumo作为一个技术驱动的实时屏幕翻译解决方案,通过精心设计的架构解决了屏幕文本翻译中的关键技术挑战。系统的模块化设计、多引擎支持和性能优化策略使其能够适应各种应用场景,从游戏翻译到视频字幕处理,再到软件界面本地化。
项目的开源特性允许开发者根据特定需求进行定制和扩展,而清晰的代码结构和文档则降低了二次开发的门槛。随着人工智能和计算机视觉技术的发展,Translumo的架构设计为未来集成更先进的OCR和翻译技术提供了良好的基础。
【免费下载链接】TranslumoAdvanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc.项目地址: https://gitcode.com/gh_mirrors/tr/Translumo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考