Вопрос: Использование Xargs с hocr2pdf


Я пытаюсь использовать tesseract и hocr2pdf в серии .tif-файлов в папке.

С помощью ls *.tif | xargs -I% tesseract % % -l fra hocr создает html-файлы, которые имеют одинаковое имя файла, но с добавлением .html. Но ls *.tif |xargs -I% hocr2pdf -i % -n -o %.pdf < %.html не работает. Я получаю сообщение об ошибке %.html not found, Кажется, что у xargs возникают проблемы с < в команде hocr2pdf.

Как мне обойти это?


2
2018-03-23 16:15


Источник




Ответы:


xargs не идеально подходит для этой задачи. Для перенаправления нужна оболочка.

Один из вариантов - вызывать bash из xargs, но гораздо проще использовать цикл for:

for f in ./*.tif; do
    tesseract "$f" "$f" -l fra hocr
    hocr2pdf -i "$f" -n -o "$f.pdf" < "$f.html"
done

3
2018-03-23 16:33



Из любопытства, почему ./*.tif вместо *.tif? - terdon
Если имя файла начинается с дефиса-минуса, его можно интерпретировать как переключатель с аргументом. Например, имя файла -in.tif станет -i n.tif, Ведущий ./ избегает этого. - Dennis
Как сделать это рекурсивным? - To Do


Прежде всего, никогда не разбирайте вывод ls. 

Теперь причина в том, что он не работает. xargs не видит %.html, bash делает. < считается окончанием xargs команды, поэтому подстановка, которую вы создали (-I%) больше не работает. Лучший способ сделать то, что вы хотите, будет примерно таким:

find . -maxdepth 1 -name "*.tif" -print0 | while IFS= read -r -d '' n; do 
    tesseract "$n" "$n" -l fra hocr &&
    hocr2pdf -i "$n.html" -n -o "$n.pdf"
done 

3
2018-03-23 16:30



@slhck, я просто так делал! Благодаря :) - terdon
Не беспокойтесь, ха-ха. Незначительная одержимость моей, извините. Помните, что это рекурсивно, а OP ls *.tif не является. - slhck
Правда. Все рассмотрено, используя цикл for как @Dennis предложенный лучше. - terdon


С помощью GNU Parallel вы можете обработать параллельную обработку:

parallel "tesseract {} {} -l fra hocr; hocr2pdf -i {} -n -o {}.pdf < {}.html" ::: *.tif

Для установки GNU Parallel требуется буквально 10 секунд:

wget pi.dk/3 -qO - | sh -x

Смотрите видеоролики, чтобы узнать больше: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1


0
2018-04-19 22:25