Pular para o conteúdo principal

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

Julio Cesar Gutierrez disse…
"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.

Postagens mais visitadas deste blog

Referências Bibliográficas com ABNTeX e JabRef

É inevitável escrever textos técnicos e científicos sem referências bibliográficas. Quando escrevemos em LaTeX a maneira mais conveniente de trabalhar com referências é a criação de bancos de dados bibliográficos que são incorporados ao documento final com o utilitário BibTeX . Estes bancos de dados são arquivos texto que obedecem uma formatação e possuem extensão "bib" . Para facilitar o nosso trabalho e não termos que nos preocupar com a formatação do arquivo podem ser utilizadas ferramentas específicas para trabalhar com arquivos BibTeX. Nesta postagem vamos explicar como trabalhar com o JabRef , um excelente software livre multiplataforma para lidar com arquivos BibTeX para documentos que usam a classe abnTeX  (Classes LaTeX para as normas ABNT). Antes de criarmos um arquivo e incluir qualquer referência vamos verificar algumas configurações importantes. A primeira delas é definir a codificação padrão para os arquivos através do menu "Options / Preferences" .

Cross-compile com Lazarus no Linux de maneira fácil

Este artigo descreve como realizar cross-compile de aplicações windows sobre a plataforma Linux de uma maneira mais simples. Introdução O Lazarus é um ambiente de desenvolvimento gráfico multi-plataforma que utiliza o compilador Free Pascal. Com ele é possível desenvolver aplicações de maneira muito semelhante ao Delphi. Na documentação wiki do Lazarus existe uma descrição (em inglês) de como realizar cross-compile de aplicações windows sobre a plataforma Linux. Porém, o principal objetivo deste artigo é descrever esta tarefa de uma maneira mais simples. Instalação Neste artigo serão utilizados Kurumin 6.1, Lazarus 0.9.20 e Freepascal 2.0.4, como será usado Kurumin ( que é um descendente do debian) baixei os pacotes para .deb no SourceForge , são eles: fpc-crosswin32_2.0.4-060919_i386.deb fp-compiler_2.0.4-1_i386.deb fpc-src_2.0.4-1_i386.deb fp-ide_2.0.4-1_i386.deb fp-units-base_2.0.4-1_i386.deb fp-units-db_2.0.4-1_i386.deb fp-units-fcl_2.0.4-1_i386.deb fp-units-fv_2.0.4-1_

Instalar Debian com KDE como gerenciador de janelas padrão

Meu gerenciador de janelas preferido no linux é o KDE e minha distribuição favorita é o Debian. Porém o Debian instala por padrão o Gnome (isso para a instalação com DVDs para a instalação com CDs há um CD como o KDE como gerenciado padrão), consultando manual de instalação do debian descobri como instalar o KDE como gerenciador de janelas padrão. Quando se dá o boot com o CD de instalação do Debian Etch deve-se escolher as opções install, expert, installgui ou expertgui. Para Instalar o KDE por padrão deve acrescentar alguns parâmetros após a opção escolhida. No meu caso: expert tasks="standard, kde-desktop" Pode-se escolher outras opções recomendo uma consulta ao manual do Debian: http://www.debian.org/releases/stable/i386/apbs04.html.pt#preseed-pkgsel