Deepin运用ocr屏幕取词翻译

Deepin运用ocr屏幕取词翻译

OCR 屏幕取词

原理解说:利用深度截屏的自动保存功能将图片存储特定位置,再监控特定位置的文件变化,当有图片存入时,利用 tesseract 对图片进行识别,再将识别的内容穿给 goldendict ,从而实现所需功能。
说明:tesseract 自带的英文识别不是太好,可以到项目地址下载最新的英文识别训练文件,特殊识别可自行训练或使用各云端的OCR—api 来使用

#!/bin/bash
#本地goldendict的OCR取词
cd /home/shui/OCR #监控和图片存储目录
while true;do
     num=$(find -name "*.png" -print)  
     if [ ! -n "$num" ]; then
        sleep 1
     else
        mv *.png 1.png
        tesseract 1.png ./out -l 1eng
        var=$(cat out.txt)
        goldendict "$var"
        rm *.png
        rm *.txt
        sleep 1
     fi
done

Google翻译

这里是运用Translate-shell这个脚本。

#!/bin/bash

#统计字数,对单个单词不作翻译
num=$( echo "$1" | wc -w )

if [ "$num" -ge "2" ] ;then
#网络代理
   export http_proxy="http://127.0.0.1:12333"
   export https_proxy="http://127.0.0.1:12333"
    /home/user/app/trans/trans -e google -s auto -t zh-CN -show-original y -show-original-phonetics n -show-translation y -no-ansi -show-translation-phonetics n -show-prompt-message n -show-languages y -show-original-dictionary n -show-dictionary n -show-alternatives n "$1"
else
    echo "^ _ ^"
fi
exit

注意了/home/user/app/trans/trans是你的Translate-shell脚本的位置。

百度翻译

翻译接口需自己申请,通用的翻译每个月前200万字符免费,申请后拿到 appid 和 secretKey ,再新建一个后缀 .py 的文件填入,代码如下:

#来源于:http://http://blog.csdn.net/lcyong_
#coding: utf8
 
import http.client
import hashlib
import json
import urllib
import random
import sys
 
def baidu_translate(content):
    appid = ''
    secretKey = ''
    httpClient = None
    myurl = '/api/trans/vip/translate'
    q = content
    fromLang = 'en' # 源语言
    toLang = 'zh'   # 翻译后的语言
    salt = random.randint(32768, 65536)
    sign = appid + q + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(
        q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
        salt) + '&sign=' + sign
 
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
        # response是HTTPResponse对象
        response = httpClient.getresponse()
        jsonResponse = response.read().decode("utf-8")# 获得返回的结果,结果为json格式
        js = json.loads(jsonResponse)  # 将json格式的结果转换字典结构
        dst = str(js["trans_result"][0]["dst"])  # 取得翻译后的文本结果
        print(dst) # 打印结果
    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()
 
if __name__ == '__main__':
#    while True:
#       print("请输入要翻译的内容,如果退出输入q")
#        content = input()
#        if (content == 'q'):
#            break
        baidu_translate(sys.argv[1])

然后在 goldendict 中的如图位置填写:

goldendict词典来源-程序

命令行一栏为:
python3 /home/user/translate-for-goldendict/Baidu/demo.py "%GDWORD%"

参考资料
goldendict + ocr屏幕取词 + 百度翻译 + goog

你可能感兴趣的:(Deepin运用ocr屏幕取词翻译)