Tesseract » History » Version 1

Version 1/5 - Next » - Current version
Gabriel Winckler, 05 May 2016 12:51


Tesseract

Envio local, exemplos de scripts

Informações sobre o uso direto do cluster local estão em aqui.

Exemplo simples

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 paralelo

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

Also available in: PDF HTML TXT