我在这个网站上发现了几个类似的问题,但无法完成这个过程。
来自如何使用 OCR 工具从屏幕区域即时提取文本的答案?以及如何在部分屏幕截图上使用 OCR 来获取文本?
首先我安装了依赖项
sudo apt-get install tesseract-ocr
sudo apt-get install imagemagick
sudo apt-get install scrot
sudo apt-get install xsel
然后我将以下脚本放入/home/blueray/Documents/Translate/screen_ts.sh
#!/bin/bash
# Dependencies: tesseract-ocr imagemagick scrot xsel
SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT
scrot -s $SCR_IMG.png -q 100
# increase image quality with option -q from default 75 to 100
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png
#should increase detection rate
tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
cat $SCR_IMG.txt | xsel -bi
exit
请注意,我删除了
select tesseract_lang in eng rus equ ;do break;done
# Quick language menu, add more if you need other languages.
希望它只会考虑英语。如果不是这种情况,请告诉我。
现在当我把
bash /home/blueray/Documents/Translate/screen_ts.sh
它按我的意愿工作。
在 Windows 中,使用 Capture2Text,我曾经使用Win+Q将屏幕的一部分捕获为文本。所以,我检查了如何设置自定义键盘快捷键来控制音量?
我去了Menu-> Searched for Keyboard Shortcuts -> Click
- 然后我点击
Add
- 名称:Capture2Text
- 命令:
bash /home/blueray/Documents/Translate/screen_ts.sh
- 已点击
Apply
- 点击右侧的快捷方式。
- 按下 WinQ
现在,当我按下 时WinQ,什么也没有发生。我究竟做错了什么?
你不需要“scrot”。Imagemagick(提供“mogrify”)可以完成屏幕捕获的工作。您也不需要保存中间图像,因为“tesseract”可以接受标准输入上的图像。
因此,上述简化为...
但是,我还在我的脚本版本中添加了以下内容,以在屏幕上弹出文本以便您检查它。
当然,tesseract 可以对某些字体进行一些改进!例如,某些字体中的 'f' 有一个小钩子,使 tesseract 认为它们是 'P'!啊……
编辑:我使用的完整脚本位于...
https://antofthy.gitlab.io/software/#capture_ocr
我使用我的窗口管理器(openbox)将它链接到一个“热键”(Meta-Print),所以我可以随时使用它。
如果您不能使用热键,并且需要打开包含文本的屏幕部分,您可以延迟启动它...
睡觉 5; capture_ocr
享受
我不得不修改@anthony 的脚本,这样它才能在我的盒子上运行(Kubuntu 18.04):
而不是
convert
线,我用:import -resize 300% +dither png:- |
-
另外,我从最后一行删除了尾随的减号,所以:xsel -ob | $XPAGER
工作很棒。