Я создал скрипт .sh для простого распознавания скриншотов, который я делаю с помощью Shutter. Сценарий выглядит следующим образом (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. Это делает работу правильно, если она вызывается из терминала. Я хотел сделать весь процесс в Nemo, поэтому я создал пользовательское действие с именем OCR.nemo_action
внутри /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.
Пожалуйста, помогите!
Отлично !!
#!/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
[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 находится на моем рабочем столе !!!
Я как бы пришел к решению этой ситуации в Корице. Файл .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-скрипт, который состоит из терминальных команд , не выполняется «где-то в фоновом режиме». В сценариях bash, которые вызывают приложения с графическим интерфейсом, директива Exec=
Gnome3 допускает значение <script.sh %F>
.
Это скрипт 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, которое откроется.