Tesseract

Descrição

De acordo com a página do Tesseract, Tesseract é um mecanismo de reconhecimento óptico de caracteres (OCR) de código aberto, disponível sob licença Apache 2.0.

Versões Disponíveis

  • tesseract/4.00.00alpha (default)

Carregando o Módulo

# Carregar Tesseract
module load tesseract/4.00.00alpha

# Verificar instalação
tesseract --version

# Variáveis disponíveis
echo $TESSDATA      # Diretório com dados de treinamento
echo $LEPTONICA     # Caminho para o Leptonica

Nota

O Tesseract no GridUnesp foi instalado com dependência para o Leptonica/1.75.3, que inclui ferramentas para conversão de formatos de imagem.

Conversão de PDF para Imagem

O Leptonica inclui ferramentas para conversão de arquivos PDF para formatos de imagem processáveis pelo Tesseract.

convert_pdf_to_png.sh
#!/bin/bash
#SBATCH -J convert_pdf
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=4G

export INPUT="documento.pdf"
export OUTPUT="paginas/"

module load tesseract/4.00.00alpha

mkdir -p paginas

# Converter PDF para formato de imagem (usando Leptonica)
# O comando convertfilestopdf ou convertformat podem ser usados
$LEPTONICA/bin/convertformat documento.pdf paginas/pagina.png

Submissão de Jobs Básica

submit_tesseract.sh
#!/bin/bash
#SBATCH -J tesseract
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 23:00:00
#SBATCH --mem=4G

export INPUT="$TESSDATA"
export OUTPUT="out.txt"

module load tesseract/4.00.00alpha

job-nanny tesseract --tessdata-dir $TESSDATA -l heb hebrew.png out

Processamento em Lote de Imagens

submit_tesseract_batch.sh
#!/bin/bash
#SBATCH -J tesseract_batch
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 48:00:00
#SBATCH --mem=8G

export INPUT="imagens/"
export OUTPUT="texto/"

module load tesseract/4.00.00alpha

mkdir -p texto

# Processar todas as imagens
for img in imagens/*.png imagens/*.jpg imagens/*.tiff; do
    if [ -f "$img" ]; then
        base=$(basename "$img" | sed 's/\.[^.]*$//')
        echo "Processando $img ..."
        job-nanny tesseract --tessdata-dir $TESSDATA -l por "$img" "texto/${base}"
    fi
done

Job Array para Múltiplas Imagens

submit_tesseract_array.sh
#!/bin/bash
#SBATCH -J tesseract_array
#SBATCH --array=1-50
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 12:00:00
#SBATCH --mem=4G

IMAGENS=($(ls imagens/*.png imagens/*.jpg 2>/dev/null))
IMAGEM=${IMAGENS[$SLURM_ARRAY_TASK_ID-1]}
BASE=$(basename "$IMAGEM" | sed 's/\.[^.]*$//')

export INPUT="$IMAGEM"
export OUTPUT="texto/${BASE}.txt"

module load tesseract/4.00.00alpha

mkdir -p texto

job-nanny tesseract --tessdata-dir $TESSDATA -l por "$IMAGEM" "texto/${BASE}"

Múltiplos Idiomas

submit_tesseract_languages.sh
#!/bin/bash
#SBATCH -J tesseract_langs
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=4G

export INPUT="documento.tiff"
export OUTPUT="documento_*.txt"

module load tesseract/4.00.00alpha

# Português
job-nanny tesseract --tessdata-dir $TESSDATA -l por documento.tiff documento_por

# Inglês
job-nanny tesseract --tessdata-dir $TESSDATA -l eng documento.tiff documento_eng

# Espanhol
job-nanny tesseract --tessdata-dir $TESSDATA -l spa documento.tiff documento_spa

# Múltiplos idiomas
job-nanny tesseract --tessdata-dir $TESSDATA -l por+eng+spa documento.tiff documento_multi

Configurações Avançadas

submit_tesseract_advanced.sh
#!/bin/bash
#SBATCH -J tesseract_advanced
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G

export INPUT="documento.tiff"
export OUTPUT="documento_advanced"

module load tesseract/4.00.00alpha

# Criar arquivo de configuração
cat > config.txt << 'EOF'
tessedit_char_whitelist 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
tessedit_pageseg_mode 6
textord_heavy_nr 1
edges_max_children_per_outline 40
EOF

# Executar com configurações personalizadas
job-nanny tesseract --tessdata-dir $TESSDATA -l por \
                  documento.tiff documento_advanced \
                  config.txt

# Modos de segmentação de página:
# 0 = Orientação e detecção de script
# 1 = Segmentação automática com OSD
# 2 = Segmentação automática sem OSD
# 3 = Total automático (padrão)
# 4 = Coluna única de texto de tamanhos variáveis
# 5 = Bloco único de texto vertical alinhado
# 6 = Bloco único de texto uniforme (recomendado para documentos)
# 7 = Linha única de texto
# 8 = Palavra única
# 9 = Palavra única em círculo
# 10 = Caractere único

Processamento de PDF com Leptonica

O Leptonica, disponível como dependência do Tesseract, oferece ferramentas para conversão de PDF.

pdf_to_text_leptonica.sh
#!/bin/bash
#SBATCH -J pdf_to_text
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 48:00:00
#SBATCH --mem=16G

export INPUT="documento.pdf"
export OUTPUT="texto/"

module load tesseract/4.00.00alpha

mkdir -p texto paginas

# Converter PDF para imagens usando Leptonica
# O executável convertformat pode converter entre vários formatos
$LEPTONICA/bin/convertformat documento.pdf paginas/pagina.png

# OCR em cada página
for pagina in paginas/*.png; do
    base=$(basename "$pagina" .png)
    job-nanny tesseract --tessdata-dir $TESSDATA -l por \
                      "$pagina" "texto/${base}"
done

# Combinar textos
cat texto/*.txt > documento_completo.txt

echo "OCR concluído. Resultado em documento_completo.txt"

Ferramentas Leptonica Disponíveis

O Leptonica fornece várias ferramentas de linha de comando para manipulação de imagens:

# Listar ferramentas disponíveis
ls $LEPTONICA/bin/

# Ferramentas principais:
# convertformat     - Converte entre formatos de imagem (PNG, TIFF, JPEG, etc.)
# convertfilestopdf - Converte imagens para PDF
# convertfilestops  - Converte imagens para PostScript
# converttopdf      - Converte para PDF
# fileinfo          - Informações sobre arquivos de imagem

Exemplo de Conversão com Leptonica

convert_images.sh
#!/bin/bash
#SBATCH -J convert_images
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=4G

export INPUT="scan.tiff"
export OUTPUT="scan.png"

module load tesseract/4.00.00alpha

# Converter TIFF para PNG
$LEPTONICA/bin/convertformat scan.tiff scan.png

# Converter para PDF (múltiplas imagens)
$LEPTONICA/bin/convertfilestopdf imagem1.png imagem2.png documento.pdf

Referências

Ver também