【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

前言:目前翻译都是在线的,要在C#开发的程序上做一个可以实时翻译的功能,好像不是那么好做(其实主要是第三方的都要AppID或者授权,太不友好了)。而且大多数处于局域网内,所以访问在线的api也显得比较尴尬。于是,就有了以下这篇文章,自己搭建一套简单的离线翻译系统(当然,你也可以部署到有外网的云服务器上,那就可以变成在线的翻译系统了)。以下内容采用python提供基础翻译服务+ C#访问服务的功能,欢迎围观。

小声哔哔:其实本来要写个WPF版本的翻译神器,对标某道词典或者某度翻译啥的。不过想了想,算了,不搞那么麻烦了,意思一下就行,能跑就可以,大家感兴趣可以自己拓展为自己需要的模样。.

系统环境:WIN10 

开发环境:VS2022 + VS CODE

开发语言环境:Python3.8 + .NET 6

以下正文:

1、由于本地环境没有python,所以先安装python有关环境先。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

2、安装好以后,控制台下输入 python,进入如下终端内容,就代表安装成功了。建议安装时候,选择自动添加到环境变量里面,这样不需要自己配置了。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

3、由于翻译功能,会使用到一些已有的模型进行计算,所以以下需要安装几个包。第一个是pytorch, 输入 pip install torch 即可安装。如果安装比较慢,在后面设置一个镜像,可以加速,例如此处我使用的清华的加速器:https://pypi.tuna.tsinghua.edu.cn/simple

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

4、然后安装flask: pip install flask

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

5、接着需要安装 gevent: pip install gevent

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

6、接着是 transformers

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

7、安装transformers时候,有的会自动安装sentencepiece包,有的时候不会。如果上面查找没有,就手动安装一下:

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

8、以上包安装完毕,打开VS CODE,创建一个python语言文件

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

9、此处文件命名为 MyTranslate.py   然后引入可能所需要的包

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

10、接着,上 https://huggingface.co/Helsinki-NLP 上面,查找需要的语言翻译模型。此处使用的离线翻译,使用的该项目下的。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

11、Models里面有上千个语言模型,选择自己需要的名称,记住就行。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

12、此处,我选了四个模型,分别是英汉/汉英  以及德汉/汉德的翻译模型。有关代码实现如下所示。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

13、接着定义一个api接口,用于提供给外部访问(毕竟主业不是python,提供api就可以跨语言来访问该服务了)。有关代码如下所示。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

14、VS CODE上运行程序,可以看到终端控制台上面打印出一些下载进度。这是因为本地现在还没有模型,我们选择的四个模型,会被下载到本地来,这样下次就不需要再下载模型了。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

15、 模型加载完毕,启动服务。此处0.0.0.0代表本机ip都可以被访问,我们正常使用时候,本机就127.0.0.1即可;如果是局域网或者外网,那就提供真实IP即可。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

16、下载的模型,会自动下载到当前用户文件夹下,具体效果如下图所示。所以如果某个服务器没有外网,也可以直接拷贝该.cache文件夹到指定服务器下面的某用户下,也可以被识别。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

17、打开postman,做个简单的测试。可以看到,服务是可以被成功访问的,说明代码可以跑,问题不是很大。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

18、换一种翻译模式再试一下:

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

19、再试一试另类点的,看看效果:

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

20、看不懂德文,把德文搞到百度在线翻译上面反翻译回来,看来语意好像差不多。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

【中途插播,防止被恶意转载抹除个人出处使用】 该博客原创作者 Wesky,公众号:Dotnet Dancer  博客原地址:https://www.cnblogs.com/weskynet/p/16740041.html

21、程序这样运行不是事儿,所以我们可以把它打包为exe程序来运行,这样就可以在不安装python环境的电脑也可以跑了。安装 pyinstaller:

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

22、在MyTranslate.py同文件夹下,新建一个py文件,名称不能改:hook-ctypes.macholib.py  该文件用于提供虚拟环境使用。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

23、该文件下,需要导入所有可能用到的依赖的包。不然打包可能出错;或者打包完毕以后,运行可能出错。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

24、打包应用的内容,根据个人实际情况来选择,pip 下载时候,有一个 Collecting提示,提示后面就是安装的依赖包,不晓得哪些需要的,就全部搞进去,减少错误几率。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

25、执行打包命名 pyinstaller -F xxx.py --additional-hooks-dir=.     如果不需要有控制台提示,可以加个 -w

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

26、打包安装成功了

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

27、打包成功的exe文件,自动放在 dist文件夹下

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

28、生成的exe文件,如图。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

29、直接运行走一波,看看效果。为了避免看不到错误提示,所以我在控制台内运行,如图

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

30、由于模型被下载过,所以第二次启动,不会重复下载模型。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

31、现在再用 Postman 走一波,看看效果。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

32、直接运行的程序,难免被人不小心误操作给关闭了,所以我们还可以把他丢到Windows服务上面,这样服务器重启也不担心了。使用NSSM工具进行操作。如果想知道如何使用,也可以参考我的另一篇博客。博客地址:https://www.cnblogs.com/weskynet/p/14961565.html

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

33、设置描述,备注为 离线翻译服务。安装为服务 TranslateService(名字可以随意)

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

34、安装以后,可以看到已经生成一个对应的Windows服务了。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

35、服务启动,可以等待一小会儿,加载模型要一丢丢时间。一小会儿以后,使用Postman进行测试一下,看看效果。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

36、接下来,创建一个基于.NET的webapi程序,用来通过代码来访问翻译服务,看看能不能访问到。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

37、创建一个控制器,搭建个基础模子先。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

38、注入IHttpClientFactory(用来访问webapi使用的,实际上就是提供HttpClient)。然后写个简单的测试功能,直接看以下代码:

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

39、通过自带的swagger,走一波。输入有关参数,走一个看看,嘿,可以使用,bingo~

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

40、后记:如果需要源码的,可以微信搜索 Dotnet Dancer 或者扫描以下二维码,在公众号窗口发送 【离线翻译神器】,即可下载。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统

玻璃钢生产厂家沈阳玻璃钢雕塑工程报价美陈玻璃钢动物雕塑销售方法桃子玻璃钢雕塑厂广州玻璃钢雕塑工艺工厂黑龙江园林玻璃钢动物雕塑滁州玻璃钢雕塑订做价格潍坊小品系列玻璃钢雕塑宜宾玻璃钢海豚雕塑厂家山东常用商场美陈研发玻璃钢卡通雕塑的分类商场电影院美陈主题摆件遵义玻璃钢造型雕塑本溪玻璃钢雕塑定制浙江季节性商场美陈市场四川玻璃钢雕塑厂顺德玻璃钢公仔雕塑图片白菜玻璃钢雕塑多少钱河源玻璃钢雕塑生产玻璃钢花盆养金鱼江苏室内商场美陈厂家供应南京知名玻璃钢雕塑厂家直供革命主题玻璃钢雕塑规定曲靖玻璃钢雕塑定制玻璃钢雕塑有裂纹吗绍兴玻璃钢雕塑摆件研发公司浉河玻璃钢雕塑价格甘肃陇南玻璃钢雕塑厂湖州玻璃钢卡通雕塑报价广州玻璃钢吉祥物雕塑孝感玻璃钢考拉雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化