# eSearch
**Repository Path**: endung/eSearch
## Basic Information
- **Project Name**: eSearch
- **Description**: 截屏OCR搜索翻译以图搜图贴图录屏
- **Primary Language**: JavaScript
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: https://esearch-app.netlify.app/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 43
- **Created**: 2023-05-31
- **Last Updated**: 2023-05-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# eSearch
(中文 | [English](README_en.md))

[](LICENSE)

[](https://github.com/xushengfeng/eSearch/releases/latest)
[](https://github.com/xushengfeng/eSearch/releases/latest)
[](https://github.com/xushengfeng/eSearch/releases/latest)
[](https://aur.archlinux.org/packages/e-search)
[](https://aur.archlinux.org/packages/e-search-git)
## 简介
eSearch 是[Information-portal](https://github.com/xushengfeng/Information-portal.git)的:electron:重写版(顺便加了亿些功能)
主要是想在 Linux 上(win 和 mac 上也能用)实现[锤子大爆炸](https://www.smartisan.com/pr/videos/bigbang-introduction)或[小米传送门](https://www.miui.com/zt/miui9/index.html)这样的**屏幕搜索**功能,当然也是一款方便的**截屏软件**。
经过数次版本迭代,eSearch 的功能愈加丰富
即拥有 **截屏+OCR+搜索+翻译+贴图+以图搜图+录屏**

> 字体是[FiraCode](https://github.com/tonsky/FiraCode),字体可在设置里设置

## 下载安装
到网站[eSearch](https://esearch.vercel.app/#download)下载
或在右侧 releases 打开标签,选择符合你系统的包并下载安装
国内可以用[GitHub Proxy](https://ghproxy.com)加速下载
ArchLinux 可在 AUR 查找安装 `e-search`或`e-search-git`
winget `winget install esearch`
## OCR 服务
本地 OCR 由[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)的模型提供支持。
默认启用本地 OCR 服务,若想使用在线 OCR,目前提供了百度在线 OCR,需要依据[教程](https://cloud.baidu.com/doc/OCR/s/dk3iqnq51)获取*API KEY* 以及 _Secret KEY_,截止 2022 年 1 月,百度 OCR 还是可以[免费领取服务](https://cloud.baidu.com/doc/OCR/s/dk3iqnq51)。将获取到的*API KEY* 和*Secret KEY* 以及相应的你选择的文字识别服务[_URL_](https://cloud.baidu.com/doc/OCR/s/zk3h7xz52#%E8%AF%B7%E6%B1%82%E8%AF%B4%E6%98%8E) 填入软件设置,去掉离线 OCR 的勾选即可使用在线 OCR。
## 源码运行&编译
编译需要`python` 和 `C++`环境,Windows 下编译需要 `python` 和`visual studio`(安装 C++)
```shell
git clone https://github.com/xushengfeng/eSearch.git
cd eSearch
npm install
# 运行
npm run start
# 调试
npm run dev
# 编译
npm run dist
# 将在build目录产生安装包和解压的目录
```
## 启动
在你的启动器打开 eSearch,他将出现在托盘。Gnome 用户需要安装[appindicator](https://extensions.gnome.org/extension/615/appindicator-support/)插件
默认快捷键为 Alt+C(你也可以在设置里设置快捷键)
### cli
**eSearch**支持 cli,可以通过命令行进行简单的截屏。
```shell
esearch (若找不到,请尝试e-search)
-a # 自动识别
-c # 截屏搜索
-s # 选中搜索
-b # 剪贴板搜索
-q # 快速截屏
```
不建议在终端进行自动或选中搜索,否则**eSearch**会执行Ctrl+C,从而导致终止终端程序
## 功能
已经勾选的功能是开发过程最新功能,但可能还没发布在最新版本
- [x] 截屏
- [x] 框选裁切
- [x] 框选大小位置可调整(支持方向键或 WASD)
- [x] 框选大小栏可输入四则运算式调整
- [x] 取色器
- [x] 放大镜
- [x] 画笔(自由画笔)
- [x] 几何形状(边框填充支持调节)
- [x] 高级画板设置(使用 Fabric.js 的 api)
- [x] 图像滤镜(支持局部马赛克模糊和色彩调节)
- [x] 自定义框选松开后的操作
- [x] 快速截取全屏到剪贴板或自定义的目录
- [x] 截屏历史记录
- [x] 窗口和控件选择(使用 OpenCV 边缘识别)
- [x] 长截屏
- [x] 多屏幕
- [x] 录屏
- [x] 录制全屏
- [x] 自定义大小
- [x] 按键提示
- [x] 光标位置提示
- [x] 录制栏
- [ ] 流写入
- [x] 录音
- [x] 录制摄像头
- [x] 自定义比特率
- [x] 保存(可选保存为 SVG 可编辑文件)
- [x] 其他应用打开
- [x] 复制到剪贴板
- [x] 钉在屏幕上
- [x] 滚轮缩放
- [x] 恢复默认大小位置
- [x] 透明度
- [x] 鼠标穿透
- [x] 二维码识别
- [x] OCR 识别
- [x] 离线 OCR([eSearch-OCR](https://github.com/xushengfeng/eSearch-OCR))
- [x] 自定义离线 OCR 模型和字典
- [x] 其他在线 OCR
- [x] 在线公式识别
- [x] 支持自己申请秘钥
- [ ] 表格识别
- [x] 以图搜图
- [x] 托盘
- [x] 划词句来搜索
- [x] 识别展示
- [x] 自动搜索翻译
- [x] 搜索
- [x] 翻译
- [x] 自定义搜索翻译引擎
- [x] 自定义搜索翻译引擎(POST 模式,可用 Api)
- [x] 软件自带浏览器打开
- [x] 跟随关闭、失焦关闭
- [x] 系统浏览器打开
- [x] 链接识别
- [x] 历史记录
- [x] 自动删除换行(用于自动排版)
- [x] 查找替换(支持正则匹配)
- [x] 其他编辑器编辑(支持自动重载)
- [x] 行号
- [x] 拼写检查
- [x] Wayland 桌面
## 插件
[简单的小插件](https://esearch-app.netlify.app/plugin.html)
- 隐藏鼠标跟随栏(取色器和坐标)
- 隐藏工具栏按钮(可自行更改)
https://user-images.githubusercontent.com/28475549/155870834-34ffa59f-9eac-4eea-9d82-135681d7dfa9.mp4
> 截屏,自由调整框选大小(视频约 2.6MB)
https://user-images.githubusercontent.com/28475549/155870857-99c7d6d0-a90b-4558-872a-85f2603225d6.mp4
> 取色器(视频约 1MB)
https://user-images.githubusercontent.com/28475549/155870867-fb0d31f0-2e06-431c-9ae9-ee3af5a5c08e.mp4
> Ding 在屏幕上,透明度调节、归位以及鼠标操作(视频约 1.8MB)

> 绘图界面
https://user-images.githubusercontent.com/28475549/155870881-9b2fc1b3-77de-4a99-8076-ed49b7b5c4c0.mp4
> 主页面搜索和其他应用编辑(视频约 1.6MB)

> 主页面查找替换(支持正则)
## 国际化
大多数按钮使用图标,简少了不必要的翻译
- [x] 简体中文
- [x] 繁体中文
- [x] 世界语
- [x] 西班牙语
- [x] 阿拉伯语
- [x] 英语
- [x] 法语
- [x] 俄语
## 测试
在 ArchLinux,KDE plasma,Xorg 下测试通过
Windows10 和 Windows11 测试通过
macOS Catalina 测试通过
## Q&A
### 为什么选择 electron
- 跨平台需要,本来我是想在 Linux 上也能体验 Windows 下优秀的截屏工具,Linux 独占也不好,所以选择跨平台。
- qt 依赖 c++,学习成本太高。flutter 桌面版还不太成熟。我更擅长 js 开发。
- 截屏依赖本地系统,这是目前浏览器做不到的。
- 最后只有 js 类跨平台方案,我选择了较为成熟,使用最多的 electron。
### [tauri](https://github.com/tauri-apps/tauri) 也支持跨平台,也使用 js 开发,会转为 tauri 开发吗
- 有这个打算,还很心动。不过主进程 2000 行代码迁移到 rust 还是有些费劲的,所以现在不会很快迁移。
### A JavaScript error occurred in the main process
这是主进程报错,可能由于各种原因导致,真正有用的错误信息是下面的具体错误,并且是代码错误。因此直接搜索“A JavaScript error occurred in the main process”很难解决问题。
一般来说,重装软件,恢复设置能解决 99%的问题。最好的办法是记录详细报错信息,提交一个[issue](https://github.com/xushengfeng/eSearch/issues/new?assignees=&labels=bug&template=bug_report.md&title=%E2%80%A6%E2%80%A6%E5%AD%98%E5%9C%A8%E2%80%A6%E2%80%A6%E9%94%99%E8%AF%AF)进行反馈。
积累的错误及其讨论、解决方案:[#123](https://github.com/xushengfeng/eSearch/issues/123) [#133](https://github.com/xushengfeng/eSearch/issues/133)
### 更新版本后出现了以前没有的错误
一般是因为不同版本的配置不兼容,可以尝试在 设置-高级-高级设置 里 恢复默认设置。
若未能解决问题,请提交 issue
## 贡献
请查看[贡献指南](CONTRIBUTING.md)
## 开发原因
我在用 Windows 时一直用这个好用的截屏软件:[Snipaste - 截图 + 贴图](https://zh.snipaste.com/),但我现在切换到 Linux,Snipaste 不支持,所以我选择了[Flameshot](https://flameshot.org/),很可惜它没有直观的取色器。
促使我开发 eSearch 的另一个契机是我很享受在手机上使用[锤子大爆炸](https://www.smartisan.com/pr/videos/bigbang-introduction)或[小米传送门](https://www.miui.com/zt/miui9/index.html)这样的即时信息搜索工具,但我没有找到电脑上类似的代替品。
所以我干脆自己开发一个“截屏+OCR+搜索+贴图”的软件。最开始用 python+pyqt 开发出[Information-portal](https://github.com/xushengfeng/Information-portal.git),但因为我不熟悉 pyqt,所以我转战:electron:,开发出本软件。😄
## License
[GPL-3.0](LICENSE) © xushengfeng