工作中有大量的英文文档要翻译,都是PDF格式的。试了下网易等公司的PDF翻译功能,出来的东西实在没法用。
简单测试一下发现,翻译效果差的原因是这堆PDF文档每一行后面都跟了一个换行符。去掉这些换行符,翻译软件们就认识这几行是一句话,翻译出来就像样了。
因此要做的事情很简单,C#写个小APP,把黏贴进来的PDF文本用正则表达式把不是句号后面的换行符都替换成空格。因为句号后面的换行符一般是另起一个自然段。核心代码就下面三行。
string needTrans = inputText.Text;
Regex reg = new Regex(@"(?<!\.)\r\n");
string tmp= tongyongfanyi( reg.Replace(needTrans, " "));
然后就是从app端调用百度翻译API。这个上https://api.fanyi.baidu.com/doc/11照着范例来就好。拿到的结果是JSON的,以前没处理过。装Newtonsoft.Json包。
public class baiduTrans
{
public string src { get; set; }
public string dst { get; set; }
}
public class baiduResponse
{
public string from { get; set; }
public string to { get; set; }
public IList<baiduTrans> trans_result { get; set; }
}
#以上为定义部分,下面是翻译函数中的调用部分
string tmp= tongyongfanyi( reg.Replace(needTrans, " "));#tmp为百度返回的翻译结果字符串
baiduResponse br= JsonConvert.DeserializeObject<baiduResponse>(tmp);
string res="";
foreach (baiduTrans bt in br.trans_result)
{
res += bt.dst+"\r\n";
}
outputText.Text = res;#输出最终所有自然段翻译结果