Usando Xargs com hocr2pdf

2

Estou tentando usar o tesseract e o hocr2pdf em uma série de arquivos .tif em uma pasta.

Usar ls *.tif | xargs -I% tesseract % % -l fra hocr produz os arquivos html que possuem o mesmo nome de arquivo, mas com .html adicionados. Mas ls *.tif |xargs -I% hocr2pdf -i % -n -o %.pdf < %.html não está funcionando. Eu recebo a mensagem de erro %.html not found . Parece que o xargs está tendo problemas com o < no comando hocr2pdf.

Como posso contornar isso?

    
por To Do 23.03.2013 / 17:15

3 respostas

3

O xargs não é ideal para essa tarefa. Você precisa de um shell para redirecionamento.

Uma opção seria invocar o bash dos xargs, mas é muito mais simples usar um loop for:

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

Primeiro de tudo, nunca analisa a saída de ls.

Agora, a razão pela qual não está funcionando é que xargs não vê o %.html , o bash. O < é considerado o fim do comando xargs , portanto, a substituição que você configurou ( -I% ) não funciona mais. Uma maneira melhor de fazer o que você quer seria algo assim:

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 
    
por 23.03.2013 / 17:30
0

Com o GNU Parallel, você pode obter o processamento em paralelo:

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

Leva literalmente 10 segundos para instalar o GNU Parallel:

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

Assista aos vídeos de introdução para saber mais: link

    
por 20.04.2013 / 00:25