缘起
在Linux上,没找到跟Goldendict配套的OCR屏幕取词插件,那么自已动手造了个【凑了个】
使用效果展示
录了几次,没录好,可参照GoldenDict++OCR效果
OCR引擎
先来说说OCR引擎,最方便的是 tesseract, 各大发行版仓库中已自带
sudo apt install tesseract-ocr tesseract-ocr-eng
对纯英文而言,若是白底黑字,tesseract 还是可的,但当背景不是黑色时,tesseract 就看运气了
这里推荐 tr
本地OCR引擎 ,项目地址:GitHub - myhub/tr: Free Offline OCR 离线的中文文本检测+识别SDK
选此理由:
- 核心代码全部采用C++开发,速度保证
- 部署简单(主要是不需要装一大堆东西)
- 识别准确率高。
对英文而言,经测试,各种场景下取词的识别准确率都非常高,中文常规取词已是非常棒的。
tr 安装
把仓库中的文件拌到本地后,直接运行里面的 demo.py
python demo.py
缺啥补啥,把这个 demo.py
正常跑起来就行了。
插件安装
先安装本插件的依赖:
sudo apt install zenity imagemagick scrot
插件分两个,一个是Python的,用于跟 tr
交流,一个是 shell ,用于整个功能的实现
GD_ocr.py (242 Bytes)
GD-ocr.tar.gz (702 Bytes)
请将如下两个文件,分别放在不同的地方:
-
GD_ocr.py
放在tr
项目内,即上面的demo.py
的文件夹内 -
GD-ocr.sh
放在tr
文件夹的同一级目录内
完整文件位置如下:
.
├── GD-ocr.sh
└── tr
├── demo.py
├── GD_ocr.py
├── imgs
│ ├── id_card.jpeg
│ ├── line.png
│ ├── name_card.jpg
│ ├── output
│ │ ├── id_card
│ │ │ ├── 1.png
│ │ │ └── 2.png
│ │ └── name_card
│ │ ├── 1.png
│ │ └── 2.png
│ └── web.png
├── LICENSE
├── MANIFEST.in
├── README.md
├── setup.py
├── test-multi-thread.py
├── test.py
└── tr
├── char_table.txt
├── crnn.bin
├── ctpn.bin
├── __init__.py
├── libonnxruntime.so.1.3.0
├── libtr.so
├── __pycache__
│ ├── __init__.cpython-39.pyc
│ └── tr.cpython-39.pyc
└── tr.py
如此完成,在系统内设置一个快捷键调用 ‘GD-ocr.sh’ 便可以愉快的OCR屏幕取词了
后记
人生苦短,劝君早离微软 「windows」