Ocrdesktop
OCRdesktop 是一款有用的辅助工具,可以通过 OCR 技术从屏幕抓取文本内容。
它会截取当前窗口或工作区的图像,对其进行预处理以获得更好的结果,并使用 tesseract 识别图像上的文本。结果可以显示在支持插入符的文本区域、一个包含坐标和置信度的详细列表中,或者复制到剪贴板。它还可以模拟点击文本。它包含两个主要部分:
- 主窗口:这是一个支持插入符浏览的文本区域,包含识别出的内容。有一个带有许多选项的菜单栏。按
F10聚焦菜单。 - 宏执行器:这是一个窗口,您可以在其中选择“运行”、“卸载”、“加载”或“保存”当前存储的宏和预点击。您也可以通过按“取消”按钮来跳过运行宏。(请参阅 #宏和预点击概念。)
安装
安装 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
调试输出发送到标准输出。所以您必须对其进行管道操作。
/tmp/ 中。