Deepin運用ocr屏幕取詞翻譯
OCR 屏幕取詞
原理解說:利用深度截屏的自動保存功能將圖片存儲特定位置,再監(jiān)控特定位置的文件變化失仁,當有圖片存入時,利用 tesseract 對圖片進行識別们何,再將識別的內(nèi)容穿給 goldendict 萄焦,從而實現(xiàn)所需功能。
說明:tesseract 自帶的英文識別不是太好,可以到項目地址下載最新的英文識別訓練文件拂封,特殊識別可自行訓練或使用各云端的OCR—api 來使用
#!/bin/bash
#本地goldendict的OCR取詞
cd /home/shui/OCR #監(jiān)控和圖片存儲目錄
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
#統(tǒng)計字數(shù),對單個單詞不作翻譯
num=$( echo "$1" | wc -w )
if [ "$num" -ge "2" ] ;then
#網(wǎng)絡代理
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格式的結果轉(zhuǎn)換字典結構
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("請輸入要翻譯的內(nèi)容,如果退出輸入q")
# content = input()
# if (content == 'q'):
# break
baidu_translate(sys.argv[1])
然后在 goldendict 中的如圖位置填寫:
goldendict詞典來源-程序
命令行一欄為:
python3 /home/user/translate-for-goldendict/Baidu/demo.py "%GDWORD%"