9 nov

Extraindo textos a partir de imagens

Realizando um atendimento (quem lê até pensa que sou médica rs) me deparei com um problema, tinha que converter um arquivo[bb] pdf de 29 páginas para texto, até aí blz, bastava usar um:

$ pdf2text

e pronto, textos a partir do pdf em instantes.

Mas por que facilitar se podemos complicar, né!
O resultado desse comando gerava infomações lixo que não batiam com o conteúdo do pdf.

Tentando de novo, só que agora com outro tipo de arquivo de saída:

$ pdf2html

e… BINGO!! Esse pdf foi gerado a partir de várias imagens organizadas e “linkadas” num index.html. Agora tenho um arquivo html[bb] e 29 arquivos PNG.
Mas não resolvi meu problema, cadê os textos?

Vamos à “mágica[bb]“!!

OCR é um acrónimo para o inglês[bb] Optical Character Recognition, uma tecnologia para reconhecer caracteres a partir de um arquivo de imagem, ou mapa de bits. Através do OCR é possível digitalizar uma folha de texto impresso e obter um arquivo de texto editável.
Fonte: Wikipédia

O que temos nos repositórios do OpenSuse que pode nos ajudar…

anjos:~ # zypper search ocr
Loading repository data...
Reading installed packages...

S | Name        | Summary                                                   | Type
--+-------------+-----------------------------------------------------------+--------
  | gocr        | Optical Character Recognition                             | package
  | gocr-gui    | Optical Character Recognition - Basic Graphical Interface | package
  | ocrad       | GNU Ocrad--Optical Character Recognition Program          | package
  | ocrad-devel | Development files for GNU ocrad                           | package

Vamos instalar o gocr.

anjos:~ # zypper install gocr
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW packages are going to be installed:
  gocr gocr-gui 

2 new packages to install.
Overall download size: 377.0 KiB. After the operation, additional 912.0 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package gocr-0.48-6.4.x86_64 (1/2), 364.0 KiB (895.0 KiB unpacked)
Retrieving: gocr-0.48-6.4.x86_64.rpm [done (68.6 KiB/s)]
Retrieving package gocr-gui-0.48-6.4.x86_64 (2/2), 13.0 KiB (17.0 KiB unpacked)
Retrieving: gocr-gui-0.48-6.4.x86_64.rpm [done]
Installing: gocr-0.48-6.4 [done]
Installing: gocr-gui-0.48-6.4 [done]

Prontinho.
Agora é só testar.

A interface do programa[bb] não é das mais atrativas, mas é funcional.

Aqui é bem simples, basta escolher o arquivo de imagem e clicar em “Run it”. Depois é só salvar o resultado num txt no menu File -> Save output.

Problema resolvido né! Quase…
Imagina ter que gerar o txt de 29 imagens. Por que não otimizar?

T=1;
for A in NACERP0102*.png
do
  if [ -f $A ] ;
  then
    gocr -i NACERP0102-$T.png -o NACERP0102-$T.txt
  fi

T=$(($T+1));
done

Obs.: Quem deu uma força gerando o script[bb] foi meu amigo Cláudio Miranda.

Missão cumprida e usuário feliz. o/

Abraços. 😀

Carol Souza

Caroline de Souza Vieira, mais conhecida como Carol Souza, formada em Análise de Sistemas, administradora de redes Linux, incentivadora do uso de Software Livre e usuária OpenSuse. Membro atuante da Comunidade Software Livre no Rio de Janeiro, colaboradora voluntária de eventos como Hack’n Rio 2011, IV FSLDC e DFDRJ, blogueira em sites como Cotidiano Linux, Gmigos, Mulheres na Tecnologia e CooperaTI além de manter o próprio blog Carolinux. Sonhadora, amiga, determinada, criativa e movida à desafios. Uma “padawan” amante de tecnologia, aspirante a corredora, ritmista e blogueira.