通过C#访问Google翻译

时间:2018-04-27 09:16:09

标签: c# google-translate

首先:我打算编写一个c#应用程序,使用户能够立即将JRPG和Visual Novels中的文本框从日语翻译成英语或任何其他语言。后面的代码将包括检测文本框的方法,这些方法主要受汽车牌照识别的启发,但这在将来还有很长的路要走。到目前为止,我处于开始阶段,我正在使用IronOCR进行OCR,并通过URL将日语字符串发送到谷歌翻译。但由于显而易见的原因,这会导致临时禁令。我想在我的用例中阻止该禁令或找到更安全和更安全的方式来使用谷歌翻译。这里到目前为止的相关代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using IronOcr;
using IronOcr.Languages;



namespace OCRTranslate
{
    class Program
    {

        static void Main(string[] args)
        {

            Bitmap imgsource = new Bitmap(@"C:\temp\Unbenannt.png");
            var Ocr = new AdvancedOcr()
            {
                Language = IronOcr.Languages.Japanese.OcrLanguagePack,
            };
            var Resulta = Ocr.Read(@"C:\temp\Unbenannt.png");
            System.IO.File.WriteAllText(@"C:\temp\Unbenanntiron.txt", TranslateGoogle());

            string TranslateGoogle()
            {
                string html = null;
                string url = string.Format(@"http://translate.google.com/translate_a/t?client=j&text={0}&h1=en&sl=ja&tl=en", Resulta);
                System.Net.WebClient web = new System.Net.WebClient();
                web.Headers.Add(System.Net.HttpRequestHeader.UserAgent, "Mozilla/5.0");
                web.Headers.Add(System.Net.HttpRequestHeader.AcceptCharset, "UTF-8");
                web.Encoding = Encoding.UTF8;
                html = web.DownloadString(url);
                return html;
            }
        }
    }
}

它的工作非常完美,令我惊讶的是,图像中的日文文本已被翻译,但即使只有一次尝试也会导致临时禁令......任何建议甚至谷歌翻译的替代方案都是受欢迎的。

编辑:在我的Firefox中使用该URL显然不会导致禁令。从技术上讲,我可以通过浏览器从c#应用程序打开URL。浏览器使用URL输出文本文件...所以是否可以通过c#捕获texfile?

另一个想法:我可以将URL发送到已打开的Firefox窗口吗?

1 个答案:

答案 0 :(得分:3)

公开发布的Google翻译网站旨在供人类操作员通过浏览器使用。它不是为开发人员设计的API。

改为使用Google Translate API

这允许您选择适用于您的要求的定价/配额组合。此外,还有various nuget Packages随时可用于将C#应用程序连接到Google Translation API。