Como você já está processando as páginas uma a uma, isso pode ser feito usando a avaliação aritmética bash .
Substitua a parte que lê atualmente
# process each page
for f in $( ls *.jpg ); do
# extract text
com o seguinte:
CURRENT_PAGE=0
# process each page
for f in *.jpg ; do
CURRENT_PAGE=$(( $CURRENT_PAGE + 1 ))
echo Processing page $CURRENT_PAGE ...
# extract text
O $(( ... ))
significa avaliação aritmética. Veja man bash
para mais detalhes; procure por ARITHMETIC EVALUATION
.
Começamos na página 0 e adicionamos imediatamente 1 a isso antes de processarmos o primeiro arquivo, depois imprimimos o número da página atual.
Se nenhum dos comandos chamados imprimir qualquer saída, você poderá obter uma saída mais limpa substituindo a linha echo
por:
printf "Processing page %d ...\r" $CURRENT_PAGE
O \r
significa "retornar ao início da linha" (tecnicamente ele é tratado como um caractere de retorno de linha), portanto a saída do próximo comando sobrescreverá o que você acabou de imprimir. Para vê-lo depois que o script terminar, adicione direto no final:
printf "\n"
para passar para a próxima linha.
E, como terdon apontado em um comentário , você realmente deveria usar
for f in *.jpg
em vez de for f in $( ls *.jpg )
, mas esse é um problema diferente. (Eu incorporei isso ao acima). Eu também sugiro adicionar citações em torno da expansão da variável em todos os lugares que você está se referindo a $f
de alguma forma, pela mesma razão.