AnsweredAssumed Answered

Identificar en un Transform el nombre del archivo

Question asked by normando on Sep 6, 2011
Latest reply on Sep 12, 2011 by normando
Hola amigos y amigas!

Volviendo al temilla sobre el OCR con Tesseract que habíamos visto hace algún tiempo, ahora tengo la necesidad de distinguir el nombre del archivo TIFF porque en base a su nombre o parte del nombre debo decidir si efectuar el OCR en español, inglés o alemán.

Por ejemplo, al archivo 123123123-spa.tif deberá hacerse el OCR en español, al 12312313-eng.tif en inglés, y asi sucesivamente.

Preferí esta disposición a elegir una carpeta en la cual almacenar los archivos para OCR en español, otra en alemán, etc. porque me da independencia de movimientos. Por ejemplo, esto me permite tener en una misma carpeta archivos en alemán, inglés, etc.

Ahora bien, como podemos ver, la cadena de texto que determina en qué idioma debo hacerle el OCR son los tres últimos caracteres antes de la extensión, es decir, a partir del guión medio.

Y acá esta mi pedido de ayuda, de por dónde puedo comenzar a estudiar esto. Quizás dentro del conten-transformer-worker que pego debajo, se puede incluir alguna sentencia condicional del tipo IF y que analice un expresión regular en el nombre del archivo y en base a ello tomar las acciones pertinentes, que en el caso de Tesserat, concistirá solamente en agregarle al final de la linea de comando el parámetro -l con el string del idioma, por ejemplo:
-l eng
o
-l spa

Muchas gracias.

<?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>tesseract</value> –>
                        <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>tesseract</value>
                        <value>${source}</value>
                        <value>${target}</value>
                        <value>-l</value>
                        <value>spa</value> –>
                        <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>

Outcomes