Capture2Text - Ubuntu Mate 中的替代方案(直接从屏幕捕获文本)

Capture2Text - Ubuntu Mate 中的替代方案(直接从屏幕捕获文本)

我在这个网站上发现了几个类似的问题,但无法完成这个过程。

来自如何使用 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

在此处输入图片描述

  1. 然后我点击了Add
  2. 名称:Capture2Text
  3. 命令:bash /home/blueray/Documents/Translate/screen_ts.sh
  4. 点击Apply
  5. 点击右侧的快捷方式。
  6. 按下 WinQ

现在当我按下 时WinQ,什么也没有发生。我究竟做错了什么?

答案1

您不需要“scrot”。Imagemagick(提供“mogrify”)可以完成屏幕截图的工作。您也不需要保存中间图像,因为“tesseract”可以接受标准输入中的图像。

因此,上述内容简化为......

convert x: -modulate 100,0 -resize 400% -set density 300 png:- |
  tesseract stdin stdout | xsel -bi

但是我还在我的脚本版本中添加了以下内容,以便在屏幕上弹出文本,以便您检查。

xsel -po | xless - &

当然,tesseract 可以对某些字体进行一些改进!例如,某些字体中的“f”有一个小钩子,这会让 tesseract 认为它们是“P”!啊……

编辑:我使用的完整脚本位于...

https://antofthy.gitlab.io/software/#capture_ocr

我使用窗口管理器(openbox)将其链接到“热键”(Meta-Print),以便可以随时使用它。

如果您不能使用热键,并且需要揭开屏幕包含文本的部分,您可以随时延迟启动它......

睡眠5;capture_ocr

享受

答案2

我必须修改@anthony 的脚本以便它能在我的机器上运行(Kubuntu 18.04):

我没有使用下面这一行,而是convert使用了:

import -resize 300% +dither png:- |

另外,我删除了-最后一行末尾的减号,因此:

xsel -ob | $XPAGER

工作很棒。

相关内容