Informações sobre o uso direto do cluster local estão em aqui.
Exemplo para processar todos os .tiff de um diretório usando apenas um core (serial). Verifica se já existe um arquivo processado antes.
ocr.sh:
#!/bin/bash
module load tesseract
for INPUT in *.tiff
do
BASENAME=$(basename $INPUT .tiff)
if [ ! -f "${BASENAME}.pdf" ]
then
echo "Processing $INPUT"
tesseract "$INPUT" "$BASENAME" -l por pdf
fi
done
sbatch ocr.sh
Exemplo para processar todos os .tiff de um diretório usando múltiplos cores(paralelo).
#!/bin/bash
module load tesseract
for INPUT in *.tiff
do
BASENAME=$(basename $INPUT .tiff)
if [ ! -f "${BASENAME}.pdf" ] && [ ! -f "${BASENAME}.lock" ]
then
# lock and wait 5 seconds (to reduce concurrency)
echo "$SLURM_ARRAY_TASK_ID" > "${BASENAME}.lock"
sleep 5
if [ "$(cat ${BASENAME}.lock)" = "$SLURM_ARRAY_TASK_ID" ]
then
echo "Processing $INPUT -- (task $SLURM_ARRAY_TASK_ID)"
TMPNAME=".$BASENAME-$SLURM_ARRAY_TASK_ID"
tesseract "$INPUT" "$TMPNAME" -l por pdf
mv "$TMPNAME.pdf" "$BASENAME.pdf"
rm "${BASENAME}.lock"
else
echo "Lost lock on $INPUT"
fi
fi
done
Para usar 30 cores:
sbatch --array=0-30 ocr.sh