Alfresco, instalando OCR en un servidor externo

por / Jueves, 19 enero 2017 / Publicado enBlog
BeeCon 2017
Descubre todo lo que traerá Alfresco 5.2

Nuestro Alfresco Simple OCR Action se ha convertido en los últimos meses en el addon de referencia para incorporar un servicio de OCR a la versión Community de Alfresco tanto en servidores Linux como en servidores Windows.

A pesar de que en muchos casos la guía de configuración provista en GitHub es suficiente, existen otros escenarios de uso intensivo que requieren un despliegue más complejo. En este artículo os mostramos cómo configurar un servicio de OCR para Alfresco alojado en un servidor externo, lo que permite mantener la calidad de servicio de Alfresco independientemente del nivel de carga OCR que esté experimentando el sistema.

Describiremos una configuración de Alfresco comunicándose por SSH con un servidor de OCR corriendo pdfsandwich en un CentOS 7, pero podéis utilizar otro protocolo de comunicación, sistema operativo Windows o un software de OCR distinto para implementar vuestro servicio.

Configuración del servidor de OCR

Software requerido:

  • CentOS Linux release 7.3.1611 (Core)
  • pdfsandwich 0.1.4

Puertos requeridos:

  • 22 (SSH): servicio de proceso OCR de pdfsandwich

La aplicación pdfsandwich es utilizada para la generación de PDFs buscables a partir de ficheros PDF con imágenes o imágenes TIFF. Este servicio será invocado por línea de comandos desde Alfresco a través del addon Alfresco Simple OCR instalado en el servidor de Alfresco.

Instalando pdfsandwich

Se instalan las dependencias necesarias.

$ yum -y install wget gcc gcc-c++ make autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel ocaml ImageMagick ImageMagick-devel

Se instala el programa leptonica a partir de los fuentes.

$ wget http://www.leptonica.org/source/leptonica-1.72.tar.gz
$ tar xvf leptonica-1.72.tar.gz
$ cd leptonica-1.72
$ ./configure
$ make
$ make install

Se instala el programa tesseract OCR a partir de los fuentes.

$ wget http://github.com/tesseract-ocr/tesseract/archive/3.04.01.tar.gz
$ tar xvf 3.04.01.tar.gz
$ cd tesseract-3.04.01
$ ./autogen.sh
$ ./configure
$ make
$ make install
$ ldconfig

Se instalan todos los paquetes de idioma de tesseract.

$ wget https://github.com/tesseract-ocr/tessdata/archive/3.04.00.tar.gz
$ tar xvf 3.04.00.tar.gz
$ mv tessdata-3.04.00/* /usr/local/share/tessdata/

Se instala el programa unpaper a través de su RPM.

$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/unpaper-0.3-4.el6.x86_64.rpm
$ rpm -ivh unpaper-0.3-4.el6.x86_64.rpm

Se instala el programa pdfsandwich a partir de los fuentes.

$ wget http://downloads.sourceforge.net/project/pdfsandwich/pdfsandwich%200.1.4/pdfsandwich-0.1.4.tar.bz2
$ tar xvf pdfsandwich-0.1.4.tar.bz2
$ cd pdfsandwich-0.1.4
$ ./configure
$ make
$ make install

Se verifica que el programa ha sido correctamente instalado.

$ pdfsandwich -version
pdfsandwich version 0.1.4

Configuración del servidor de Alfresco

Una vez instalado un Alfresco en el addon Alfresco Simple OCR, creamos un script para la invocación al servidor remoto de OCR.


#!/bin/bash

# pdfsandwich hostname
PDFSANDWICH_SERVER="alfresco-ocr.keensoft.es"

# extract filenames
INPUT=$(basename "$3")
OUTPUT=$(basename "$5")

# SSH parameters
SCP=scp
SSH=ssh

# copy original pdf to pdfsandwich server
$SCP $3 root@$PDFSANDWICH_SERVER:/tmp/$INPUT

# execute pdfsandwich program (requires administrator privileges)
$SSH root@$PDFSANDWICH_SERVER "pdfsandwich $1 $2 /tmp/$INPUT $4 /tmp/$OUTPUT $6"

# copy transformed pdf back to alfresco server
$SCP root@$PDFSANDWICH_SERVER:/tmp/$OUTPUT $5

# remove temporal files
$SSH root@$PDFSANDWICH_SERVER "rm -f /tmp/$INPUT; rm -f /tmp/$OUTPUT"

Se genera la clave RSA en el servidor de Alfresco y se envía la parte pública al servidor de OCR para permitir comandos ssh sin interacción.


$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub alfresco-ocr.keensoft.es

Se actualiza la propiedad de alfresco-global.properties para que utilice el script que hemos creado arriba.


ocr.command=/opt/alfresco/scripts/ocr.sh

Se reinicia el servicio de Alfresco.

$ systemctl restart alfresco

Conclusiones

Una vez realizada esta configuración, los trabajos de OCR serán enviados por Alfresco al servidor externo alfresco-ocr.keensoft.es, permitiendo mantener la calidad de servicio en el propio servidor de Alfresco. También es posible aumentar la capacidad de este servicio, configurando el pool de hilos asíncronos de Alfresco.


# Default Async Action Thread Pool
default.async.action.threadPriority=1
default.async.action.corePoolSize=8
default.async.action.maximumPoolSize=20

En ocasiones, para mejorar la calidad de servicio de Alfresco no es necesario disponer de nuevo software, sino de instalar el disponible de la manera adecuada.

Responsable tecnológico para soluciones de gestión documental en keensoft. Especialista en Alfresco y en implantaciones de Administración Electrónica.

Etiquetado bajo: ,

Deja un comentario

SUBIR