C# 10分钟完成百度翻译(机器翻译)——入门篇

本文涉及的产品
文档翻译,文档翻译 1千页
图片翻译,图片翻译 100张
语种识别,语种识别 100万字符
简介: C# 10分钟完成百度翻译(机器翻译)——入门篇

我们之前基于百度ai开发平台实现了人脸识别 [1]、文字识别 [2]、语音识别 [3] 与合成的入门和进阶,今天我们来实现百度翻译的实现。

随着“一带一路”政策的开展,各种项目迎接而来,语言不通就成为了痛点。

作为开发人员,相信大家对于翻译不陌生吧,百度翻译,有道词典、谷歌翻译等等或多或少都用过(汉-英,汉-日,汉-俄等等)。

我们现在就基于百度Ai开放平台进行机器翻译,demo使用的是C#控制台应用程序,后续有需要的可以嫁接到指定项目中使用。

1、注册百度账号api,创建自己的Api应用

注册地址: https://login.bce.baidu.com/

注册登录之后,在“产品服务” 菜单下找到机器翻译 ,点击进入,如下图:

 

注意,这里我们需要先进行 领取免费资源 ,开发完成后根据后期需求决定是否进行付费操作,如下图所示:

 

 

领取后,创建我们的Api应用,如下图(主要是Api Key和Secret Key):

 

 

 

2、创建vs控制台应用程序

创建VS控制台应用程序,命名为TranslateProject。

.NET Framework/.NET Core的都可以,甚至于Web应用也行,因为这是Api操作。


3、编写程序并调试

post请求工具类

创建一个http请求接口帮助类(WebRequest方式API请求方式(Post/Get)),命名为 HttpTool(自定义命名),大家可以在网上找一个,或者用下面的:

 /// <summary>
        /// post请求方式
        /// </summary>
        /// <param name="url">请求路径</param>
        /// <param name="parms">传入的值,格式为:{city:"上海",city2:"重庆"}</param>
        /// <param name="token"></param>
        /// <param name="ContentType"></param>
        /// <returns></returns>
        public string HttpPost(string url, string parms, string token,string ContentType= "application/json")
        {
            string result = string.Empty;
            try
            {
                if (url.StartsWith("https:"))
                {
                    //要调用https的API接口,一定要加这句
                    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
                }
                Encoding encoding = Encoding.UTF8;  //转译编码
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//创建
                request.Method = "POST";   //post请求的一些标准参数配置
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                request.ContentType = ContentType;
                //自定义头部内容
                if (!string.IsNullOrEmpty(token))
                {
                    request.Headers.Add(HttpRequestHeader.Authorization, token);  //添加token
                }
                byte[] buffer = encoding.GetBytes(parms);  //译编传入的值格式化为可识别
                request.ContentLength = buffer.Length;  //post传值参数标配
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //尝试获得要请求的URL的返回消息
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    result = reader.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                result = "";
            }
            return result;
        }

文本翻译-通用版

通用版API文档:https://cloud.baidu.com/doc/MT/s/4kqryjku9 [4]

直接看文档就可以了,我这里把代码展示一下,大家拷贝一下就可以执行。

如下代码和展示:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace TranslateProject
{
    class Program
    {
        // 百度云中开通对应服务应用的 API Key 建议开通应用的时候多选服务(百度云应用的AK)
        private static String clientId = "qNldYXXtIr2pKBQsv242369Y";
        // 百度云中开通对应服务应用的 Secret Key(百度云应用的SK)
        private static String clientSecret = "L6gemOD3pM2PmafyQUBnXpCGEemk18mR";
        static void Main(string[] args)
        {
            try
            {
                #region 文本翻译-通用版
                //获取Token:详细见 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
                string TokenJson = getAccessToken();
                if (!string.IsNullOrEmpty(TokenJson))
                {
                    AccessToken TokenEntity = JsonConvert.DeserializeObject<AccessToken>(TokenJson);
                    if (!string.IsNullOrEmpty(TokenEntity.error))
                    {
                        if (TokenEntity.error == "invalid_client" && TokenEntity.error_description == "unknown client id")
                            Console.WriteLine("API Key不正确");
                        else if (TokenEntity.error == "invalid_client" && TokenEntity.error_description == "Client authentication failed")
                            Console.WriteLine("Secret Key不正确");
                        else
                            Console.WriteLine("未知错误:获取Token失败");
                        Console.ReadKey();
                        return;
                    }
                    string URL = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token="+ TokenEntity.access_token;
                    string q = "文本翻译是百度翻译依托领先的自然语言处理技术推出的在线文本翻译服务,可支持中、英、日、韩等200+语言互译,100+语种自动检测。";
                    string parms = "{ \"q\":\"" + q + "\",\"from\":\"zh\",\"to\":\"en\"}"; //from:翻译源语言     to:翻译目标语言     q:请求翻译内容
                    HttpTool httppost = new HttpTool();
                    var strJson = httppost.HttpPost(URL, parms, "", "application/json;charset=utf-8");
                    Console.WriteLine(strJson);
                    Console.ReadKey();
                }
                #endregion
            }
            catch (Exception ex)
            {
                Console.WriteLine("翻译失败:" + ex.Message);
            }
        }
        //调用getAccessToken()获取的 access_token建议根据expires_in 时间 设置缓存
        public static String getAccessToken()
        {
            try
            {
                String authHost = "https://aip.baidubce.com/oauth/2.0/token";
                HttpClient client = new HttpClient();
                List<KeyValuePair<String, String>> paraList = new List<KeyValuePair<string, string>>();
                paraList.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
                paraList.Add(new KeyValuePair<string, string>("client_id", clientId));
                paraList.Add(new KeyValuePair<string, string>("client_secret", clientSecret));
                HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
                String result = response.Content.ReadAsStringAsync().Result;
                return result;
            }
            catch (Exception ex)
            {
                return "";
            }
        }
        public class AccessToken
        {
            public string refresh_token { get; set; }
            public int expires_in { get; set; }
            public string scope { get; set; }
            public string session_key { get; set; }
            public string access_token { get; set; }
            public string session_secret { get; set; }
            public string error { get; set; }
            public string error_description { get; set; }
        }
    }
}

文本翻译-词典版

词典版API文档:https://cloud.baidu.com/doc/MT/s/nkqrzmbpc [5]

词典版和通用版大体相同,大家拷贝上面的更换一下请求的URL即可。

文本翻译-图片翻译

图片翻译API文档:https://cloud.baidu.com/doc/MT/s/mki483xpu [6]

这里就不贴代码了,大家点击api文档参照试试,自己做出来乐趣更高哦。

总结

看到这里就介绍了,是不是感觉很简单,就注册一个百度云平台的账号,创建相关的api key应用,

然后对照开发文档进行编写测试,放在项目中很容易移植,快去试试吧。

参考文献

[1].C# 10分钟完成百度人脸识别——入门篇

[2].C# 10分钟完成百度图片提取文字(文字识别)——入门篇

[3].C# 10分钟完成百度语音技术(语音识别与合成)——入门篇

[4].通用版Api文档

[5].词典版Api文档

[6].图片翻译

相关文章
|
26天前
|
设计模式 C# 开发者
C#设计模式入门实战教程
C#设计模式入门实战教程
|
15天前
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
49 0
|
26天前
|
开发框架 .NET Java
C#/.NET/.NET Core自学入门指南
C#/.NET/.NET Core自学入门指南
|
2月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
40 0
|
2月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
56 0
|
2月前
|
数据采集 XML 前端开发
Python爬虫实战:利用代理IP爬取百度翻译
Python 爬虫实战:利用代理 IP 爬取百度翻译
148 2
|
2月前
|
机器学习/深度学习 数据挖掘 C#
ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
59 0
|
3月前
|
自然语言处理 安全 Shell
Linux 提权-SUID/SGID_1 本文通过 Google 翻译 SUID | SGID Part-1 – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。
接下来,让我们看看 SUID3NUM 在枚举 SUID 二进制文件方面的表现如何。 3.2、枚举 SUID 二进制文件 – SUID3NUM 我们将用来枚举 SUID 二进制文件的第二个工具是 SUID3NUM。这是一个很棒的工具,因为它是专门为枚举 SUID 二进制文件而创建的。但这还不是全部,它还提供了可用于提升权限的命令(命令从 GTFOBins 中提取)。 这还不是最好的部分,SUID3NUM 还具有内置的 autopwn 功能,可以通过 -e 开关激活! 在 OSCP 考试中也使用此工具,只要您不使用自动利用功能。 3.2.1、下载并执行 SUID3NUM 我们可以从 GitHubs
25 0
|
4月前
|
存储 C# 索引
技术经验分享:C#入门详解(8)
技术经验分享:C#入门详解(8)
24 0
|
4月前
|
Java API Apache
详尽分享百度翻译api
详尽分享百度翻译api
78 0
下一篇
无影云桌面