Я создал скрипт .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
Этот скрипт выполняет некоторое улучшение изображения, которое требуется при OCR с помощью tesseract. Он выполняет работу правильно, если вызывается из терминала. Я хотел выполнить весь процесс в 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, который состоит изкоманды терминалане выполняться "где-то в фоновом режиме". В скриптах bash, вызывающих приложения с графическим интерфейсом, Exec=
директива Gnome3 допускает <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.