Tesseract OCR: obtendo textos a partir de imagens

Introdução

Existem diversas ferramentas livre para Optical Character Recognition (OCR - Reconhecimento ótico de caracteres) como o gocr e o ocrad. Entretanto, eu ainda não tinha obtido uma eficiência tão boa até usar o Tesseract OCR.

O Tesseract OCR foi desenvolvido em um laboratórios da Hewlett-Packard entre 1985 e 1995. Em 1995 era um dos 3 melhores na competição de exatidão de OCR's organizada pela Universidade de Nevada em Las Vegas (UNLV). Entretanto, logo após isto, a HP decidiu sair do ramo de OCR e o Tesseract foi descontinuado. Felizmente a HP com a ajuda do Instituto de Pesquisas em Ciência da Informação da UNLV decidiu abrir o código fonte do Tesseract. Atualmente o Tesseract é mantido pela Google e já suporta vários idiomas, inclusive o português.

Instalação no Debian

Já existem pacotes nos repositórios do Debian para o Tesseract OCR e alguns idiomas, mas não consegui fazer com que eles funcionassem corretamente. Então eu baixei o código fonte, acrescentei o idioma português, compilei, gerei o pacote com o checkinstall, instalei e deu tudo certo. Basicamente, devem ser feitos os seguintes passos:
  • Obtenha Tesseract via SVN através do comando:
    svn checkout http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr
  • Obtenha o idioma português para o Tesseract através página de downloads do tesseract (a versão mais recente é tesseract-2.01.por.tar.gz)
  • Descompacte o arquivo de idiomas será gerado um diretório chamado tessdata, copie todos os arquivos deste diretório para a pasta tesseract-ocr/tessdata (gerada pelo SVN)
  • Altere o arquivo tesseract-ocr/tessdata/Makefile.am (basta seguir os padrões dos idiomas já incluídos).

    Logo após a linha:
    eng.pffmtable eng.user-words eng.word-dawg eng.unicharset
    Acrescente " \"(sem aspas), e também acrescente as linhas (sem aspas):
    " por.DangAmbigs por.freq-dawg por.inttemp por.normproto \"
    " por.pffmtable por.user-words por.word-dawg por.unicharset"
    Logo após a linha:
    T = confsets makedummiesAcrescente as linhas (sem aspas):
    "por.DangAmbigs por.freq-dawg por.inttemp por.normproto por.pffmtable por.user-words por.word-dawg por.unicharset : makedummies"
    "$(top_srcdir)/tessdata/makedummies por"
  • Altere o arquivo tesseract-ocr/tessdata/Makefile.in.
    No final da linha iniciada por data_DATA = confsets, acrescente por.DangAmbigs por.freq-dawg por.inttemp por.normproto por.pffmtable por.user-words por.word-dawg por.unicharset
  • Altere o arquivo tesseract-ocr/tesseract.spec.
    Logo após a linha:
    Source6: http://tesseract-ocr.googlecode.com/files/tesseract-%{version}.nld.tar.gzAcrescente a linha:
    Source7: http://tesseract-ocr.googlecode.com/files/tesseract-%{version}.por.tar.gzLogo após a linha:
    tar xzvf %{_sourcedir}/tesseract-%{version}.nld.tar.gz
    Acrescente a linha:
    tar xzvf %{_sourcedir}/tesseract-%{version}.por.tar.gzLogo após a linha:
    %{_datadir}/tessdata/nld.word-dawgAcrescente as linhas:
    %package por
    Group: Applications/Multimedia
    Summary: Portuguese language pack for tesseract
    %description por
    The %{name}-%{version}.por package contains the data files required to recognize Portuguese
    %files por
    %{_datadir}/tessdata/por.DangAmbigs
    %{_datadir}/tessdata/por.freq-dawg
    %{_datadir}/tessdata/por.inttemp
    %{_datadir}/tessdata/por.normproto
    %{_datadir}/tessdata/por.pffmtable
    %{_datadir}/tessdata/por.unicharset
    %{_datadir}/tessdata/por.user-words
    %{_datadir}/tessdata/por.word-dawg
  • Configure e compile (acredito que o pacote build-essential resolva todas as dependências):
    ./configure --prefix=/usr --datadir=/usr/share/tesseract-ocr/tessdata
    make
  • Se não houve nenhum erro o programa já está compilado perfeitamente. Se você não faz controle de pacotes basta o comando make install para instalar e usar. Por outro lado, pode-se criar um pacote para instalação através do checkinstall (como root):
    # checkinstall
    Para as perguntas feitas pelo checkinstall basta pressionar enter (seria uma boa idéia preencher a descrição). No final do processo deve ser gerado o arquivo tesseract-ocr_i386.deb. Então basta instalá-lo.
Interfaces para o Tesseract OCR

Uma ótima interface para o Tesseract OCR é o gscan2pdf. Até a próxima.

Referências

Under-Linux.org: Google anuncia Tesseract OCR
Blog do Thadeu Penna: Tesseract OCR chega no Debian Sid
Blog do Thadeu Penna: Brazilian Portuguese oficialmente suportado no Tesseract-OCR
Blog do Thadeu Penna: OCR de qualidade no Linux
Blog do Mitre: Tesseract OCR

Comentários

  1. "Altere o arquivo tesseract-ocr/tessdata/Makefile.in.
    No final da linha iniciada por data_DATA = confsets, acrescente por.DangAmbigs por.freq-dawg por.inttemp por.normproto por.pffmtable por.user-words por.word-dawg por.unicharset"

    Desculpe Sr. Marcos. Desconsidere meu comentário anterior.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Instalando o SMS Power View no Debian

Executando programas 32 bits no Debian Etch amd64