我创建了一个 .sh 脚本,用于对我使用 Shutter 制作的屏幕截图进行简单的 OCR 处理。该脚本如下所示 ( ocrFile.sh
):
#!/bin/bash
convert $1 /tmp/output.pnm
cat /tmp/output.pnm | pamstretch 4 > /tmp/stretched.pnm
convert /tmp/stretched.pnm -colorspace gray /tmp/output600dpi.tif
tesseract /tmp/output600dpi.tif ./outputText -l eng
此脚本执行使用 tesseract 进行 OCR 时所需的一些图像增强。如果从终端调用,它可以正确完成工作。我想要在 Nemo 中完成整个过程,因此我创建了一个名为OCR.nemo_action
inside 的自定义操作/home/user1/.local/share/nemo/actions
,其内容如下:
[Nemo Action]
Name=OCR The Screenshoot
Comment=OCR Function for Nemo File Manager
Exec=<ocrFile.sh %F>
Icon-Name=gtk-execute
Selection=Any
Extensions=png;
此 Nemo 操作不会使用上面给出的脚本产生输出。.sh 脚本也位于 Nemo 自定义操作的文件夹中。
请帮忙!
答案1
伟大的!!
-- ~/OCR.sh(chmod +x ~/OCR.sh)
#!/bin/bash
convert $1 /tmp/OCR-output.pnm
cat /tmp/OCR-output.pnm | pamstretch 4 > /tmp/OCR-stretched.pnm
convert /tmp/OCR-stretched.pnm -colorspace gray /tmp/OCR-output600dpi.tif
tesseract /tmp/OCR-output600dpi.tif ~/Desktop/OCR-outputText -l eng
rm /tmp/OCR-output.pnm /tmp/OCR-stretched.pnm /tmp/OCR-output600dpi.tif
– ~/.local/share/nemo/actions
[Nemo Action]
Active=true
Name=OCR picture
Comment=OCR Function for Nemo File Manager
Selection=S
Exec=/bin/bash /home/user/OCR.sh %F --- change "user"
Icon-Name=gtk-execute
Extensions=png;jpg;jpeg;bmp;
并且 OCR 文本就在我的桌面上!!!
答案2
我在 Cinnamon 中找到了解决此问题的方法。该.nemo_action
文件包含以下内容。
[Nemo Action]
Name=OCR The Screenshoot
Comment=OCR Function for Nemo File Manager
Selection=S
Exec=gnome-terminal --working-directory=%P -e "/media/storage/Scripts/actions/ocrFile.sh %F"
Icon-Name=gtk-execute
Extensions=png;jpg;jpeg;bmp;
Active=true
使用终端启动来完成这项工作在这里是一种变通方法。其他一切似乎都没有产生结果。
bash 脚本本身基本保持不变,仅改变了一条指令,即保持终端打开直到执行命令集。
#!/bin/bash
convert $1 /tmp/output.pnm
cat /tmp/output.pnm | pamstretch 4 > /tmp/stretched.pnm
convert /tmp/stretched.pnm -colorspace gray /tmp/output600dpi.tif
tesseract /tmp/output600dpi.tif ./outputText -l eng
rm /tmp/output.pnm /tmp/stretched.pnm /tmp/output600dpi.tif
bash
我最终渴望的是让这个过程完全脱离终端。在我看来,这个过程与 Gnome2 (Mate) 略有不同。这里是包含以下内容的 bash 脚本终端命令不要在“后台某处”执行。对于调用 GUI 应用程序的 bash 脚本,Gnome3 的Exec=
指令允许该<script.sh %F>
值。
答案3
这是 bash 脚本吗?试试
Exec=/bin/bash /home/user1/.local/share/nemo/actionsocrFile.sh %F
(或者甚至/bin/sh
通常dash
可能会稍微快一些。)
至于调试,在命令行:
$ nemo -q # quit all instances of nemo
$ NEMO_ACTION_VERBOSE=1 nemo
然后从打开的 nemo 窗口运行操作。