微信公众号“dotNET跨平台”中的文章《一款自用的翻译小工具,开源了》介绍了基于.net framework4.6,采用WPF开发的开源单词查询及文本翻译项目TranslationTool,本文学习并梳理其项目中单词查询及文本翻译相关的实现模块及实现思路,评估是否可以在圈选图片识别文本的程序中调用,实现识别并翻译从图片中圈选的文本区域。
TranslationTool项目的主要功能包括单词查询和文本翻译,支持离线查询及在线查询,离线查询的话主要从本地SQLite数据库中查询,在线查询的话支持从金山、 有道、谷歌、百度等四个翻译网站中查询或翻译相应的单词或文本。
单词查询功能界面如下所示,支持获取单词的基本释义、例句、同根扩展、词组及近义词。如果单词或例句有语音,支持下载并播放单词或例句的语音。
文本翻译的界面相对简单,在窗口上方输入要翻译的内容,点击搜索按钮后,会在下方显示翻译结果。支持按Alt+Enter换行,但是测试时发现换行后,仅会返回第一行的翻译内容,暂时不清楚是怎么回事。
TranslationTool解决方案中包括四个项目,运行VS2022自带的代码度量功能,度量结果如下所示,可以看出项目的代码量不算大。四个项目中,Translation.Api项目定义单词查询及文本翻译结果对应的数据类,包括同根词、词组信息、单词发音、例句信息等;Translation.Business项目定义从本地数据库中查询单词信息的支持类;Translation.WebApi项目定义在线从金山、 有道、谷歌、百度等网站执行单词查询及文本翻译类,同时包含下载音频的支持类,由于每个网站的查询方式、返回结果不同,需要针对每个网站定义对应的查询类、结果类。TranslationTool项目为主程序,程序的主界面、辅助类等都在该项目中定义。
TranslationTool项目中最重要的两个类:SearchWordViewModel和TranslationViewModel,前者面向单词查询,最重要的函数是SearchWord,而后者面向文本翻译,最重要的函数是Search_OnExecute,调试过程中发现,程序查询单词或翻译文本默认都是使用的有道。
学习及梳理过程就到这里,后续尝试是否能将文本翻译功能嵌入到圈选图片识别文本的程序内。
参考文献:
[1]http://news.sohu.com/a/605997424_121124363
[2]https://github.com/Kybs0/TranslationTool