跳转至内容

Ocrdesktop

来自 ArchWiki

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

它会截取当前窗口或工作区的图像,对其进行预处理以获得更好的结果,并使用 tesseract 识别图像上的文本。结果可以显示在支持插入符的文本区域、一个包含坐标和置信度的详细列表中,或者复制到剪贴板。它还可以模拟点击文本。它包含两个主要部分:

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

安装

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

配置

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

基本上,这应该可以在任何桌面环境中工作。

在 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/ 中。