Tesseract » History » Version 1

Gabriel Winckler, 05 May 2016 12:51

1 1 Gabriel Winckler
h1. Tesseract
2 1 Gabriel Winckler
3 1 Gabriel Winckler
h2. Envio local, exemplos de scripts
4 1 Gabriel Winckler
5 1 Gabriel Winckler
Informações sobre o uso direto do cluster local estão em [[SLURM|aqui]].
6 1 Gabriel Winckler
7 1 Gabriel Winckler
h3. Exemplo simples
8 1 Gabriel Winckler
9 1 Gabriel Winckler
Exemplo para processar todos os .tiff de um diretório usando apenas um core (serial). Verifica se já existe um arquivo processado antes.
10 1 Gabriel Winckler
11 1 Gabriel Winckler
*ocr.sh:*
12 1 Gabriel Winckler
<pre>
13 1 Gabriel Winckler
#!/bin/bash
14 1 Gabriel Winckler
module load tesseract
15 1 Gabriel Winckler
16 1 Gabriel Winckler
for INPUT in *.tiff
17 1 Gabriel Winckler
do
18 1 Gabriel Winckler
  BASENAME=$(basename $INPUT .tiff)
19 1 Gabriel Winckler
20 1 Gabriel Winckler
  if [ ! -f "${BASENAME}.pdf" ]
21 1 Gabriel Winckler
  then
22 1 Gabriel Winckler
    echo "Processing $INPUT"
23 1 Gabriel Winckler
    tesseract "$INPUT" "$BASENAME" -l por pdf
24 1 Gabriel Winckler
  fi
25 1 Gabriel Winckler
done
26 1 Gabriel Winckler
</pre>
27 1 Gabriel Winckler
28 1 Gabriel Winckler
<pre>
29 1 Gabriel Winckler
sbatch ocr.sh
30 1 Gabriel Winckler
</pre>
31 1 Gabriel Winckler
32 1 Gabriel Winckler
h3. Exemplo paralelo
33 1 Gabriel Winckler
34 1 Gabriel Winckler
Exemplo para processar todos os .tiff de um diretório usando múltiplos cores(paralelo).
35 1 Gabriel Winckler
36 1 Gabriel Winckler
<pre>
37 1 Gabriel Winckler
#!/bin/bash
38 1 Gabriel Winckler
module load tesseract
39 1 Gabriel Winckler
40 1 Gabriel Winckler
for INPUT in *.tiff
41 1 Gabriel Winckler
do
42 1 Gabriel Winckler
  BASENAME=$(basename $INPUT .tiff)
43 1 Gabriel Winckler
44 1 Gabriel Winckler
  if [ ! -f "${BASENAME}.pdf" ] && [ ! -f "${BASENAME}.lock" ]
45 1 Gabriel Winckler
  then
46 1 Gabriel Winckler
    # lock and wait 5 seconds (to reduce concurrency)
47 1 Gabriel Winckler
    echo "$SLURM_ARRAY_TASK_ID" > "${BASENAME}.lock"
48 1 Gabriel Winckler
    sleep 5
49 1 Gabriel Winckler
    
50 1 Gabriel Winckler
    if [ "$(cat ${BASENAME}.lock)" = "$SLURM_ARRAY_TASK_ID" ]
51 1 Gabriel Winckler
    then
52 1 Gabriel Winckler
      echo "Processing $INPUT -- (task $SLURM_ARRAY_TASK_ID)"
53 1 Gabriel Winckler
      TMPNAME=".$BASENAME-$SLURM_ARRAY_TASK_ID"
54 1 Gabriel Winckler
      tesseract "$INPUT" "$TMPNAME" -l por pdf
55 1 Gabriel Winckler
      mv "$TMPNAME.pdf" "$BASENAME.pdf"
56 1 Gabriel Winckler
      rm "${BASENAME}.lock"
57 1 Gabriel Winckler
    else
58 1 Gabriel Winckler
      echo "Lost lock on $INPUT"
59 1 Gabriel Winckler
    fi
60 1 Gabriel Winckler
  fi
61 1 Gabriel Winckler
done
62 1 Gabriel Winckler
</pre>
63 1 Gabriel Winckler
64 1 Gabriel Winckler
Para usar 30 cores:
65 1 Gabriel Winckler
66 1 Gabriel Winckler
<pre>
67 1 Gabriel Winckler
sbatch --array=0-30 ocr.sh
68 1 Gabriel Winckler
</pre>