Ocrdesktop

出自 ArchWiki

此文章或章节需要扩充。

原因: 此 Wiki 页面是 chrys 的工作成果。(在Talk:Ocrdesktop中讨论)

OCRdesktop 是一款有用的辅助工具,可通过 OCR 技术从屏幕上抓取内容作为文本。

它获取当前窗口或工作区的图像,对其进行预处理以获得更好的结果,并使用 tesseract 识别其中的文本。结果以启用插入符的文本区域、带有坐标和置信度的详细列表或剪贴板形式呈现。它还可以模拟在文本上单击。它由两个主要部分组成

  1. 主窗口:这是一个可插入符浏览的文本区域,包含识别的内容。有一个包含许多选项的菜单栏。使用 F10 聚焦菜单。
  2. 宏执行器:这是一个窗口,您可以在其中选择运行卸载加载保存当前存储的宏和预点击。您也可以通过按下取消按钮来跳过运行宏。(请参阅#宏和预点击概念。)

安装

安装 ocrdesktop 软件包。确保您已安装 tesseract-data 组中与您的语言对应的软件包。

配置

在您的桌面环境中为命令 ocrdesktop 分配一个快捷方式。您还可以使用参数来扩展 OCRdesktop 的功能。对于英语以外的语言,您需要设置您的语言代码 ocrdesktop -l <languagecode>。对于 <languagecode>,请使用 tesseract 语言代码

基本上,这应该在任何桌面环境中都有效。

在 Gnome 中,您可以通过Gnome 控制中心中的键盘窗口下的快捷方式选项卡执行此操作。

使用

只需按下分配的快捷方式。在没有参数的情况下,OCRdesktop 将仅识别当前窗口并将其呈现在启用插入符的文本区域中。

视图模式

OCRdesktop 提供不同的视图模式。您可以使用 Alt+v 在模式之间切换。

  • 浏览模式:在可插入符导航的文本框中显示所有文本。该视图呈现当前识别内容的布局。您可以使用箭头键移动插入符。
  • 详细模式:这基本上是一个列表,您可以在其中查看浏览模式下任何单词的详细信息。例如字体大小、字体颜色、屏幕上的位置 (X, Y)、OCR 过程的置信度和其他属性。字体大小或颜色之类的内容是近似值,因为它是由 OCR 图像计算得出的。某些字符在视觉上比其他字符小,因此存在一些差异。

OCR 语言

OCRdesktop 能够使用所有可用的 tesseract 语言,通过 -l <language code>。如果未设置语言。OCRdesktop 将使用英语。

$ ocrdesktop -l deu

您还可以设置多种 OCR 语言

$ ocrdesktop -l deu+eng

OCR 选项

OCRdesktop 始终将当前屏幕截图放大 3 倍以获得更好的结果。除此之外,您可以在 OCRdesktop 尝试识别文本之前使用不同类型的转换。您可以使用所需的参数启动 OCRdesktop,或通过OCRdesktop菜单的OCR 选项子菜单在导航窗口中选择选项。选择选项后,按 F5 再次识别文本。这需要一些试验和错误才能获得更好的结果。

提示: 您还可以组合不同的选项。

反转

如果原始图像中的颜色导致文本识别出现问题,则颜色反转可能会带来更好的结果

$ ocrdesktop -i

灰度

此处整体移除了颜色。我们得到一系列不同的灰度色调,这可以减少 tesseract 的混淆。

$ ocrdesktop -g

障碍黑白方法

这可能是最常获得最佳结果的方法。灰度始终处于活动状态。不同的灰度色调将在 0(白色)和 255(黑色)之间的定义值处断开。小于定义点的所有内容都将转换为黑色。等于或大于的灰度色调将转换为白色。这为 OCR 带来了清晰的图像。没有颜色,没有噪点,没有灰度,只有黑色和白色。使用这种类型的图像,tesseract 也可以读取非常明亮的彩色字体(因为它们被转换为黑色)。参数 -b 激活此功能。参数 -t <barriervalue> 设置障碍值。 <barriervalue> 是 0 到 255 之间的整数。如果未设置 -t,则默认值为 200。

$ ocrdesktop -b -t 180

帮助

请参阅 ocrdesktop(1)ocrdesktop -h 以获得一些帮助和可用参数。您可以随时混合使用不同的参数。

识别当前工作区

如果您不想将识别限制为当前窗口,请使用 -d 选项。

$ ocrdesktop -d

分析颜色

Tesseract 将 OCR 文本拆分为框。您可以这样理解,每个单词都是一个框,背景色是一种颜色,字体是另一种颜色。OCRdesktop 现在可以为您分析这些颜色。目前,颜色分析默认处于禁用状态。您可以通过添加 -O 标志作为参数来启用它。

$ ocrdesktop -O

在 OCRdesktop 启动后,您可以移动到您感兴趣的单词并切换到详细视图(请参阅(请参阅#视图模式))在详细视图中,现在有一列颜色,如下所示

白色:62 %,黑色:21 %,灰色:5%

这意味着 3 种最常用的颜色是白色(可能是背景)、黑色(可能是字体颜色)和灰色(一些阴影效果)。您可能会注意到这 3 种颜色的总和不是 100%。这是因为我们默认将结果限制为 3 种颜色。可能还有其他一些较小的效果或样式的东西。您可以使用 -x <value> 更改此默认限制。

$ ocrdesktop -O -x 2

将仅返回 2 种颜色,如下所示

白色:62 %,黑色:21 %

模拟鼠标事件

您可以通过交互菜单模拟在当前光标位置的单词上单击。

快捷键

  • 单击左键 (Ctrl+l):通常用于选择/激活条目
  • 双击左键 (Ctrl+d):通常用于在同一窗口中打开条目
  • 单击右键 (Ctrl+r):打开鼠标下对象的上下文菜单
  • 单击中键 (Ctrl+m):通常在新标签页中打开对象
  • 将鼠标路由到对象上方 (Ctrl+t):用于鼠标悬停事件,例如工具提示

要立即执行鼠标操作,请将鼠标放在文本区域或列表条目(在列表视图中)中的单词上,然后按下相应的快捷键。

宏和预点击概念

预点击的概念起初不容易理解,但它解决了一个非常容易理解的问题。

在大多数桌面环境中,当菜单打开时,全局快捷键不起作用(例如,大多数程序顶部菜单栏中的文件菜单)。

预点击基本上是在 OCRdesktop 截取屏幕截图之前可以运行的宏。这允许您关闭所有菜单,并让 OCRdesktop 在识别窗口之前单击菜单。预点击宏非常易于使用。在交互菜单中,有一个复选框预点击 Ctrl+p。设置此复选框并选择应在 OCRdesktop 下次启动之前执行的鼠标单击,这与执行正常的鼠标单击模拟非常相似(请参阅#模拟鼠标事件)。模拟鼠标单击后,不会发生任何事情。下次您运行 OCRdesktop 时,它会询问您要执行什么操作。您可以按运行,以便执行所有存储的单击。之后,OCRdesktop 截取屏幕截图以进行 OCR(带有打开的菜单)。如果您现在再次选中预点击选项,则第二个单击也将被存储(例如,用于打开子菜单)。您可以保存任意数量的鼠标操作。在宏窗口中选择卸载以擦除宏,使其丢失。如果您按下取消,则不会执行鼠标单击,但会打开主窗口。宏不会被删除,并且下次您启动 OCRDesktop 时会询问您是否要运行存储的单击。

提示: 活动预点击宏文件存储在 ~/.activeOCRMacro.ocrm 下。

您可以使用 -m </path/to/macro/macroname.ocrm> 选项执行存储在硬盘驱动器上任何位置的现有宏文件。

$ ocrdesktop -m </path/to/macro/macroname.ocrm>
提示: 您可以将其与 -n 选项结合使用。OCRdesktop 将只为您启动单击序列,而无需任何 GUI。

模拟键盘事件

您还可以将键盘快捷键触发到预点击宏中。要进入快捷键录制模式,请按 Ctrl+k 或在交互菜单中选择发送按键菜单项。现在,您键入的每个按键都会附加到当前活动的预点击宏。按 F4 将退出录制模式。退出快捷键录制模式可能会有最多 2 秒的延迟。这是一个已知问题。

处理宏

您可以从菜单中保存、加载、卸载或运行当前宏。

  • 保存 (Ctrl+s):将宏保存在文件系统中,以防您更频繁地需要它。
  • 加载 (Ctrl+o):加载意味着下次 OCRdesktop 运行时将启动此宏
  • 卸载 (Ctrl+u):从缓冲区中删除宏并阻止其运行。如果您从文件系统加载宏,则原始宏文件将不会被使用
  • 运行 (Ctrl+n):关闭窗口并立即运行宏

复制到剪贴板

OCRdesktop 提供了将当前识别的内容发送到剪贴板的可能性。

通过指定 -c 选项可以轻松完成此操作。

$ ocrdesktop -c

这将打开主窗口并将内容发送到剪贴板。如果您不想打开主窗口,可以添加“无 GUI”选项 -n

$ ocrdesktop -c -n
提示: 您始终可以使用简写形式。
$ ocrdesktop -cn

现在您已将识别的文本放在剪贴板中,并且不会出现窗口。

当 GUI 打开时,您也可以按 Ctrl+b

调试模式

您可以使用 -v 选项启动调试模式。

$ ocrdesktop -v >> /tmp/debug.out

调试输出将发送到标准输出。因此您必须对其进行管道传输。

提示: OCRdesktop 在调试模式下将所有图像(原始图像、放大图像和处理后的图像)的副本存储在 /tmp/ 中。