自己去实现一个翻译引擎这太难了,一是没有这么多语料,二是没有这个技术能力,但是我可以调用几家翻译平台的 API,在体验上进行优化,我做的这个事情是完全解决我自己和我身边人的需求,我准备写完后,开源给大家用。
相比百度、腾讯、Google 网页的翻译,我主要优化了如下几个点。
- 没有长度限制,你可以上传任意长度的文本,翻译完成后,会自动拼接起来。
- 批量翻译,你可以上传多一个文件,以 zip 包的方式,我会自动解压,然后把每一个文件都翻译完成后,再把翻译结果打包成一个 zip 包,这样就可以节省你的时间。
- 多个翻译结果同时对比,你可以选择多个翻译平台,然后比较翻译结果,这样就可以看到哪个翻译结果更好。
- 支持图片到图片的翻译,比如电商场景下,可以把中文的图片翻译成英文的图片。
用了哪些技术
语言:golang
框架:gin
服务器:腾讯轻量云服务器
遇到了哪些困难
在项目集成了百度翻译、腾讯翻译后,这次又集成了 Google 翻译,Google 翻译的开发者体验比腾讯和百度好一些,主要体现在接口的灵活性和易用性方面,我本来认为 3 天就可以把各个翻译平台的 API 接完的,但是最后超出了我的预期,差不多 5 天才接完,因为我没有用 golang 写过项目,以前只是听说过这一门语言,这次是完整的来写一个项目,遇到不少问题,要不断的Google,另外一个原因是在翻译长度这里遇到了点问题,如百度和腾讯翻译都有字数限制,一次只能翻译 2000 个汉字的长度,超过了就直接告诉你翻译失败,所以我要把要翻译的文本分段,然后每段翻译完成后再拼接起来,这样就可以解决这个问题,但是在分段的时候,就会遇到一个很现实的问题,有可能把一个完整的句子分成了两段,这样翻译的结果肯定不对。
- 第一次用 golang 写项目,虽然我那个年代主要写 c,后来写过php,但是遇到一门新的语言时,还是要不断的学习,不然只有思想,无法实现。
- 文本分句,翻译 api 字数的限制,我要先把长文本切成 2000 字以内的块,不能把句子切断了,最简单的办法是根据标点分句,但是会把人名给切断,比如 罗伯特.李,在这个问题上花了不少时间,还没有完全解决。
- api 的调试,主要是在百度 api 格式保留上,花了不少时间,最后发现百度 api 本来就有这方面的问题,不得不放弃了。
Google Api 我认为是在文档和示例上做的最好的,不过 google 文档太多,经常找不到入品,汇总如下。