Desktop Tools Assistant是一款仿Bob、PopClip.的屏幕取词、OCR、翻译、取色工具,使用Electron、Vite、Vue3开发。
图片识别、翻译功能可仅使用自建服务(paddocr + meta-ai fairseq nllb)
集成ahk2,自定义按键后可拥有与macos同样的按键体验
- PaddleOCR 识别率还行,部署在自己的服务器比较放心。后面考虑集成本地版
docker run --name ppdocr -p 8866:8866 -d drainkeng/paddleocr:2.6-cpu-latest
- 百度文字识别OCR 备选方案
- unicode识别,不涉及语义
- Google Cloud Translation API detect
- 腾讯云 语种识别 这个是免费的还是和文本翻译共用免费额度不太清楚...
- 默认使用自动模式: 腾讯云 -> Google -> unicode,要快的话直接换unicode
- 有道翻译 查词时还是很有用的
- 百度通用翻译 高级版100万字符免费额度
- Google Cloud Translation API v2 v2版本够用了,每月50万字符免费额度
- 腾讯云 文本翻译 500万字符免费额度
- 微信翻译 为了接入还注册了个小程序,没提收费的事,但API只支持中英互转
- 彩云小译 100万字符免费额度,支持中英日互译
import { IConfig } from '@/types'
export default {
init: true,
// 截图类型,shareX、html
screenhost_type: 'shareX',
// 滑词检索配置
takeword: {
// 启用
enable: true,
// 自动隐藏时间,单位:秒
auto_hide_time: 1,
// 跳过要处理的进程,进程名称、路径
skip: ['MobaXterm_Personal_22.1.exe', 'D:\\JetBrains\\apps', 'C:\\Program Files\\PowerShell', 'WindowsTerminal.exe', 'explorer.exe']
},
// 翻译配置
trans: {
// 钉住窗口
pinup: false,
// 默认启动位置,未使用
position: 'right-top',
// 语言检测方式
lang_testing: 'local',
// ocr识别方式
current_ocr: 'paddocr',
// 识图后复制到剪切板
ocr_clipboard: true,
// 单个翻译接口超时时间
timeout: 15,
// 本地ip前缀
local_ip: '172.20.0.',
// ocr配置
ocr: [
{
enable: true,
name: 'baidu',
label: '百度通用场景文本识别',
token_url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials',
url: 'https://aip.baidubce.com/rest/2.0/ocr/v1/',
client_id: '',
client_secret: '',
detect_direction: true,
type: '标准' as '高精度' | '高精度含坐标' | '标准' | '标准含坐标',
type_action: { 标准: 'general_basic', 标准含坐标: 'general', 高精度: 'accurate_basic', 高精度含坐标: 'accurate' }
},
{ enable: true, name: 'paddocr', label: '飞桨OCR', url: '你的地址' }
],
translate: [
{ enable: true, name: 'youdao', label: '有道翻译', url: 'http://openapi.youdao.com/api', appKey: '', key: '' },
{ enable: true, name: 'baidu', label: '百度翻译', url: 'https://fanyi-api.baidu.com/api/trans/vip/translate', appid: '', secret: '' },
{ enable: true, name: 'google', label: '谷歌翻译', zh2en_enable: false, url: 'https://你的workers地址.workers.dev/trans', apiKey: '' },
{ enable: true, name: 'tencent', label: '腾讯翻译', url: 'tmt.tencentcloudapi.com', region: 'ap-chengdu', secretId: '', secretKey: '' },
{ enable: true, name: 'wechat', label: '微信翻译', url: 'https://api.weixin.qq.com/cgi-bin', appid: '', secret: '' },
{ enable: true, name: 'caiyun', label: '彩云小译', url: 'http://api.interpreter.caiyunai.com/v1/translator', token: '' }
],
languages: [
{ name: '中文', default: 'zh', wechat: 'zh_CN', youdao: 'zh-CHS', google: 'zh_CN' },
{ name: '英语', default: 'en', wechat: 'en_US' },
{ name: '日语', default: 'ja', wechat: '-' },
{ name: '韩语', default: 'ko', baidu: 'kor', caiyun: '-', wechat: '-' },
{ name: '俄语', default: 'ru', caiyun: '-', wechat: '-' },
{ name: '德语', default: 'de', caiyun: '-', wechat: '-' },
{ name: '法语', default: 'fr', baidu: 'fra', caiyun: '-', wechat: '-' }
]
}
} as IConfig
- 飞桨OCR部署完成后的地址是host:port/predict/ocr_system.我自己代理了一层到cdn,要用的话记得改成你自己的url
- google api调用建议使用CloudFlare的Workers,稳定免费,脚本如下:
unction
main(request)
{
const { lang, text, key } = await request.json()
const req = { "target": lang, "q": text }
const response = await fetch(
'https://translation.googleapis.com/language/translate/v2?key=' + key,
{ body: JSON.stringify(req), method: 'POST', headers: { 'content-type': 'application/json;charset=UTF-8' } }
)
const { headers, status } = response
if (status == "200" && headers.get('content-type').includes('application/json')) {
const res = await response.json()
if (res.data) {
let translations = res.data.translations
return (Array.isArray(translations) ? translations[0] : translations).translatedText
// detectedSourceLanguage
}
}
throw new Error("Failed response from Google Translate")
}
export default {
async fetch(request, env) {
if (request.method !== 'POST' || !request.url.endsWith('/trans')) {
return new Response('', { status: 404, headers: { "Cache-Control": "no-cache" } })
}
let status = true
let text = ''
try {
text = await main(request)
} catch (e) {
status = false
text = e.message
}
return new Response(text, { status: status ? 200 : 400, headers: { "Cache-Control": "no-cache" } })
}
}
- 只支持了部分语言,有需要的自己加,文末有各平台语言编码对照链接
- 只使用了常用的包,理论都能自己打包出来
- 集成了AutoHotKey 2.0,做改键会更像mac,打包成dll了,放在pack/ahkh2x64.dll,改键脚本是pack/Mac.ahk