OCR no Alfresco com Tesseract em Português! ( Arquivos TIF )

TesseractOCRToPAGE
Nesta semana fiz uma integração do Alfresco com o Software de OCR Open Source Tesseract.

Minha Infra era Alfresco 5.0 + CentOS 6 + Tesseract 3.02

Escrevi alguns passos a serem realizados para isso funcionar bem!

Primeiramente instale o Tesseract na sua versão de Linux!
No meu Caso era CentOs e segui este passo a passo aqui :
https://alantamproject.wordpress.com/2015/05/12/centos-install-tesseract-ocr/comment-page-1/#comment-1

Para quem usa Ubuntu esta mais fácil : sudo apt-get install tesseract-ocr-por
no pacote e pronto!

Após instalar o tesseract caso queira reconhecer caracteres da lingua portuguesa pode instalar um pacote criado por um professor Thadeu
http://profs.if.uff.br/tjpp/blog/entradas/brazilian-portuguese-oficialmente-suportado-no-tesseract-ocr

é só copiar no diretório usr/local/share/tessdata após instalado!

Alterações no Alfresco que devem ser implementadas :

  1. Crie um arquivo no diretório de extensões do Alfresco com o nome ocr-transform-context.xml em  /tomcat/shared/classes/alfresco/extension  com o conteúdo deste arquivo:
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
       <beans>
            <bean id="transformer.worker.ocr.tiff" class="org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerWorker">
                <property name="mimetypeService">
                    <ref bean="mimetypeService"/>
                </property>
     
                  <property name="checkCommand">
                     <bean class="org.alfresco.util.exec.RuntimeExec">
                        <property name="commandsAndArguments">
                            <map>
                                <entry key=".*">
                                    <list>
                                        <value>/opt/alfresco/ocr</value>
                                    </list>
                                </entry>
                            </map>
                        </property>
                        <property name="errorCodes">
                           <value>2</value>
                        </property>
                     </bean>
                  </property>
     
                  <property name="transformCommand">
                     <bean class="org.alfresco.util.exec.RuntimeExec">
                        <property name="commandsAndArguments">
                            <map>
                                <entry key=".*">
                                    <list>
                                        <value>/opt/alfresco/ocr</value>
                                        <value>${source}</value>
                                        <value>${target}</value>
                                    </list>
                                </entry>
                            </map>
                        </property>
                        <property name="errorCodes">
                           <value>1,2</value>
                        </property>
                     </bean>
                  </property>
     
                  <property name="explicitTransformations">
                     <list>
                        <bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
                            <property name="sourceMimetype"><value>image/tiff</value></property>
                            <property name="targetMimetype"><value>text/plain</value></property>
                        </bean>
    		 </list>
    	      </property>
    	      </bean>
                     <bean id="transformer.ocr.tiff" class="org.alfresco.repo.content.transform.ProxyContentTransformer" parent="baseContentTransformer">
                     <property name="worker">
                     <ref bean="transformer.worker.ocr.tiff"/>
                  </property>
                  </bean>
        </beans>
  2. Adicione um shell script para fazer a manipulação doArquivo via Sistema Operacional/Tesseract , o mesmo deve ser adicionado em /opt/alfresco com o nome ocr ( sem extensão mesmo ) , com o conteúdo abaixo, ( ATENÇÂO !para o português mude a opção eng para por na penúltima linha)

    #!/bin/bash
    # save arguments to variables
    SOURCE=$1
    TARGET=$2
    TMPDIR=/tmp
    FILENAME=`basename $SOURCE`
    OCRFILE=$FILENAME.tif
     
    # to see what happens
    #echo "from $SOURCE to $TARGET" >>/tmp/ocrtransform.log
     
    cp -f $SOURCE $TMPDIR/$OCRFILE
     
    # call tesseract and redirect output to $TARGET
    tesseract $TMPDIR/$OCRFILE ${TARGET%\.*} -l eng
    rm -f $TMPDIR/$OCRFILE
  • Agora e só reiniciar o Alfresco e fazer upload de um arquivo TIF , depois procurar por um texto contido no arquivo TIF! Este tutorial com um pouco de conhecimento em Alfresco e XML e Tesseract Isso pode ser adaptado para outros tipos de arquivos, espero tem ajudado!

    Referências: http://www.cnblogs.com/tyshan/p/4867949.html
    http://profs.if.uff.br/tjpp/blog/entradas/brazilian-portuguese-oficialmente-suportado-no-tesseract-ocr

     

    Sobre Marcio Junior Vieira

    Atualmente atua como Cientista de Dados da Ambiente Livre. Evangelista de tecnologias Open Source e Free Software desde 1999. Data Scientist, Data Engineer e Big Data Expert. Certified Pentaho Solutions Consultant. Alfresco ECM & Activiti BPM e Camunda BPM Expert. Scala, Java, PHP, Python and JavaScript Programmer.
    Esta entrada foi publicada em Alfresco, Open Source. Adicione o link permanente aos seus favoritos.

    9 respostas para OCR no Alfresco com Tesseract em Português! ( Arquivos TIF )

    1. Max disse:

      Oi Marcio,

      Preciso criar uma aplicação web com tesseract, consegue me ajudar ?

      maxx_redes@yahoo.com.br

    2. Bruce disse:

      Alguma chance disso funcionar com PDFs em formato de imagem em alta resolução?

    3. Bruce disse:

      Grande Márcio,
      Aproveitando o post sobre Alfresco, poderia me indicar algum módulo para cadastro de usuários com CAPTCHA?

      • Olá Bruce , Não conheço nenhum do proprio alfresco ( add-ons) mas pode tecnicamente adaptar qualquer um alterando a tela de login do alfresco implementando qualquer captcha. A pagina de login e um JSP/HTML com chamada oara um serviço de autenticação. Pode bloquear o botão de login antes do preenchimento do captcha.

    4. Leandro disse:

      Olá será que funcionaria com Windows?

    5. Mauricio Reis disse:

      Pesquisando por aí, achei seu blog com o artigo sobre o Tesseract.
      Estou trabalhando num projeto para digitalização de documentos médicos que apresentam erros em alguns termos. Acho que a solução seria adionar alguns termos ao dicionário, mas não encontro como fazer.
      Tem alguma dica?!

    Deixe uma resposta

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *