我正在尝试在文件夹中的一系列 .tif 文件上使用 tesseract 和 hocr2pdf。
使用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 命令中遇到了问题。
我该如何避免这个问题?
答案1
xargs 不适合这个任务。您需要一个 shell 来进行重定向。
一种选择是从 xargs 调用 bash,但使用 for 循环更简单:
for f in ./*.tif; do
tesseract "$f" "$f" -l fra hocr
hocr2pdf -i "$f" -n -o "$f.pdf" < "$f.html"
done
答案2
现在,它不起作用的原因是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
使用 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