【发布时间】:2021-12-03 05:03:52
【问题描述】:
我正在尝试使用名为 ocrmypdf 的包进行一些批处理。
这是一个可以处理1个pdf文件的命令
ocrmypdf input.pdf output.pdf
这是一个可以处理我们运行目录中所有pdf文件的命令。
parallel --tag -j 2 ocrmypdf '{}' 'output/{}' ::: *.pdf
现在,我实际上想对目录中的所有 pdf 文件运行此命令。这个多了一个参数。
ocrmypdf --sidecar txt/input.txt input.pdf out/output.pdf
我之前尝试过这样重写并行命令:
parallel --tag -j 2 ocrmypdf --sidecar txt/{}.txt {}.pdf out/{}.pdf ::: *.pdf
但我得到了错误:
ocrmypdf: error: the following arguments are required: output_pdf
有人可以帮我理解我做错了什么吗?谢谢!
【问题讨论】:
-
也许尝试引用整个命令(在
-j 2和:::之前开始的部分),正如赛勒斯所指的,手册中有一节关于引用。另外,也许尝试明确添加选项--output(或者正确的拼写是ocrmypdf)?您还可以使用并行选项--joblog logfile,这可能会为您节省一些线索信息以帮助您进行故障排除...! -
哦,我认为您也应该摆脱
{}.pdf额外的 .pdf 文件。因为那会给出.pdf.pdf。将--dryrun添加到您的并行命令中,它将准确打印它将运行哪些命令,而无需实际运行它们。因此,也许您的工具以一种模棱两可的方式抱怨,因为它找不到任何 *.pdf.pdf 输入文件,并且搞砸了输出文件参数的继续解析 -
@SkV 我相信我在更新答案中的“潜在解决方案”应该适合您!仅供参考
标签: python-3.x bash parallel-processing gnu-parallel ocrmypdf