Archive for the 'linux' Category

23MarConectar por ssh de mac a ubuntu y ejecutar aplicaciones gráficas a distancia

Hoy os presento un ejercicio muy sencillo. Pero tremendamente útil. Queremos manejar un servidor ubuntu a distancia desde un equipo mac. De tal forma que, vamos a conectarnos desde un Mac a un sistema ubuntu, y vamos a ejecutar las aplicaciones en el equipo de ubuntu pero de tal forma que las interfaces gráficas se carguen en el Mac. Es decir navegaremos con el firefox viéndolo gráficamente en nuestro equipo cuando se ejecuta realmente en el equipo ubuntu.

¿Para qué?  os preguntaréis. Muy sencillo, queremos realizar operaciones en el servidor como si estuviésemos allí, pero necesitamso apoyo gráfico. Así que no nos basta con conectarnos con la terminal. Nos hace falta algo más.

De mano de la wikipedia os hago un resumen de la tecnología que vamos a emplear. Podéis ampliar la información allí.

Primero ¿qué vamos a usar?. Vamos a usar "X Window System". El sistema de ventanas X fue desarrollado a mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas Unix.

Al existir este estándar, diferentes servidores X se pueden desarrollar para distintos sistemas operativos y plataformas. Es decir, permite tener clientes X ejecutándose en un potente servidor UNIX mientras los resultados son visualizados en un PC de escritorio con cualquier otro sistema operativo funcionando.

Bien lo importante de todo esto es que es totalmente independiente del sistema operativo. Como además el sistema X es el encargado de la interfaces gráficas de los sistemas operativos Unix incluyendo a Mac y sus Versiones y por supuesto de Linux (todos ellos nacen de Unix), podemos emplearlo para que la información gráfica de las aplicaciones que se ejecutan en el equipo de ubuntu la manejemos desde nuestro equipo en mac.

Ojo, X no es un gestor de ventanas. Necesita de uno para definir los aspectos de decoración de ventana y manejos de ventanas.

Bien. Primero de todo tenemos que instalar las X en el mac. Eso se hace con el CD de instalación.
En esta imagen lo tenéis explicado:

Instalaciones Opcionales-> Aplicaciones->X11

Una vez instalado abrimos un terminal del mac.

Nuestro procedimiento va a ser emplear SSH para crear un túnel y conectarnos, pero especificando que las X se redirijan.

Esto lo haremos con la orden -X
Por otro lado la opción -l especifica el login que vamos a emplear y el nombre del host o la ip en este caso es el último parámetro que aparece.

  1.  
  2. ssh -X -l root 192.168.1.104

Con esta sencilla orden hemos creado el túnel para conectarnos. Sólo nos queda ejecutar un aplicación. Podéis hacerlo con algo sencillo como "xclock" o utilizar algo más elaborado, con cualquier otra aplicación que emplee interfaz gráfica como FIrefox. Por cierto el procedimeinto sería idéntico para ubuntu, sólo que en ubuntu no tenéis que instalar las X.
 

 

13MarOcr y desbloqueo de archivos pdf

Ocr sobre pdf y desbloquear archivos pdf

A veces un pdf está trazado en vez de ser texto. Es decir, no fue guardado como texto plano sino como imagen. En base a esta premisa me propuse encontrar una buena estrategia para convertir un número de pdfs elevado (unos 8 documentos) en archivos de caracteres identificables. La idea era que en archivos de texto en los que no podía realizar búsquedas ni copiar el texto se pudiesen leer pasándoles un OCR.

Un OCR (Optical character recognition), extrae de una imagen los caracteres que componen un texto para almacenarlos en un formato con el cual puedan interactuar programas de edición de texto.

Mientras que en una imagen los caracteres se describen indicando cada uno de los píxeles que los forman, al convertirlos a un formato de texto (por ejemplo ASCII o Unicode), pasan a estar descritos por un solo número, por lo que se produce una reducción significativa del espacio en memoria que ocupan.

Antes de que sigas leyendo estas indicaciones para solventar el problema de ese pdf, te sugiero que si lo que buscas es la forma de "desbloquear un pdf" que ha sido protegido para que no se pueda copiar, en esta dirección

www.ensode.net/pdf-crack.jsf

Tienes un programa que lo hace online. Es muy útil y muy sencillo de usar, lo subes y el te lo devuelve desprotegido.

Bien, sigamos con el OCR. Voy a presentaros dos softwares para ello y sus soluciones correspondientes. Una de ellas es libre y la usaremos bajo Linux y la otra es de pago la usaremos baja windows.

Empezaremos por la que es libre. No es mejor, pero es más versátil, libre y por tanto podremos usarla sin problemas de licencias. Iremos por pasos.

En primer lugar, lo que vamos a hacer es un script que se ejecute desde el shell y al que le pasaremos el nombre del archivo pdf a convertir y el número de páginas del archivo. Yo lo he hecho así porque no he encontrado un método para saber el número de páginas del pdf mediante el código, pero me imagino que existirán formas de hacerlo.

Creamos el archivo con un programa de edición de textos, yo lo voy a hacer con gedit.

  1.  
  2. $gedit script_ocr

Una vez creado lo rellenamos con la siguiente linea:

  1.  
  2. #!/bin/sh

Hemos usado Sh, habitualmente uso Bash,  Bash (bourne again shell) es una evolución/ampliación de sh
(también conocida como shell de bourne, por David Bourne su creador). Por lo tanto algunas construcciones/funciones que funcionan en bash puede que no funcionen en sh mientras que todo lo que funciona en sh debería
funcionar en bash. Sh no es más que la shell original de Unix mientras que bash es un proyecto desarrollado por GNU. Bash y Sh son el shell de Unix (intérprete de órdenes de Unix) y lo que le estamos especificando en la línea es que sea él quien ejecute las órdenes.

Los parámetros los recibirá a continuación del nombre del archivo y se numerarán como $1, $2….$N, donde $0 es el nombre del programa y $n el parámetro n.

Después crearemos una serie de directorios para ir almacenando los archivos resultado del proceso. Para eso sirven estas lineas:

  1.  
  2. mkdir ./directorio$1
  3. mkdir ./directorio$1/tiff/
  4. mkdir ./directorio$1/paginas/
  5. mkdir ./directorio$1/paginasTratadas/
  6. mkdir ./directorio$1/textos/

Ahora convertimos el archivo de pdf a tiff. Para ello vamos a emplear convert. Es un programa de imageMagick, un paquete de programas para tratar imágenes en linux. Para ello vamos a tener que instalar el programa, en ubuntu es fácil hacerlo con:

  1.  
  2. apt-get install convert

Añadimos esta línea al script:

  1.  
  2. convert -density 150×150 -compress Group4 $1 ./$1/tiff/convertido.tiff
  3.  

Esta línea lo que hace es convertir el pdf en un archivo tiff. La denominación en inglés "Tagged Image File Format" (formato de archivo de imágenes con etiquetas) se debe a que los ficheros TIFF contienen, además de los datos de la imagen propiamente dicha, "etiquetas" en las que se archiva información sobre las características de la imagen, que sirve para su tratamiento posterior.

Tiff es un formato vinculado a photoshop porque además de ser propiedad de adobe permite guardar la información de capas de este programa de edición de imágenes. En esta última linea le indicamos la densidad, que determina la resolución en píxeles en base a la resolución que define por defecto el programa. Si no lo hacemos así nos lo escanea a baja resolución y no nos servirá para reconocer con ocr. El compress es otra opción para la compresión del archivo resultante.

Y seguimos añadiendo líneas a nuestro programa:

  1.  
  2. for i in $(seq –format=%003.f 1 $2); do
  3. convert -depth 8 ./directorio$1/tiff/convertido.tiff[$i] ./directorio$1/paginas/pagina-$i.pnm
  4. done

En estas líneas hemos hecho un bucle que recorre los tiffs y los convierte archivos pnm. Lo hemos hecho accediendo a cada hoja del tiff con "convertido.tiff[$i]", es decir usando el operador corchetes. La línea de depth 8, es necesaria porque se ha de guardar en 8 bits y no en 16 o fallará el programa unpapper que usaremos después. Ahora tenemos el pdf separado en archivos .pnm, pnm es un archivo similar al mapa de bits, no usa compresión y se suele usar para guardar archivos de páginas.

Estamos acabando. Vamos a usar Tesseract para el ocr, Tesseract fue creado por Hewlett Packard Laboratories entre 1985 y 1995. En 1995 obtubo el lugar 3 entre los de mejor comportamiento en la contienda preparada por la UNLV(University of Nevada in Las Vegas), google la utiliza para buscar texto en los libros que ya no tienen CopyRight. Fue liberado en 2005 bajo la licencia de OpenSource y lo podéis encontrar en el repositorio de google, como es libre usarlo como lo estoy usando yo.

Pero debemos hacer un para de arreglos antes. Separamos el tiff en pnm, porque un tiff de varias hojas no lo podía leer Tesseract, pero Tesseract no admite otro formato que no sea tiff. Asi que convertiremos los pnm a tiff, ahora en archivos separados. Pero además de eso le haremos un tratamiento previo con unpapper para dejar la hoja lista. Unpapper umbralizará la hoja para que los caracteres se identifiquen mejor.

  1.  
  2. for i in $(seq –format=%003.f 1 $2); do
  3. #aplicamos unpapper (–overwritte hace que si ya existe el archivo lo sobreescriba)
  4. unpaper –overwrite  ./directorio$1/paginas/pagina-$i.pnm ./directorio$1/paginas/unpapered-$i.pnm
  5.  
  6. #convertimos el pnm a tiff y luego lo eliminamos
  7. convert ./directorio$1/paginas/unpapered-$i.pnm ./directorio$1/paginasTratadas/prepared-$i.tif && rm ./directorio$1/paginas/unpapered-$i.pnm
  8.  
  9. #y por último aplicamos tesseract, indicando el idioma con -l spa (español es este caso)
  10. tesseract ./directorio$1/paginasTratadas/prepared-$i.tif ./directorio$1/textos/pagina-$i -l spa
  11. done

Sólo queda añadir una última línea. Recopilamos los textos en modulo.txt

cat ./directorio$1/textos/pagina-* >modulo.txt

Todo ha quedado guardado en un archivo de texto.

Al archivo script_ocr tendremos que darle permisos de ejecución con chmod. La orden "chmod +x script_ocr" bastará para ello.
Por último ejecutamos el programa desde el shell, si el archivo se llama archivo.pdf y tiene 43 páginas lo haremos así:

  1.  
  2. ./script_ocr archivo.pdf 43

No pongáis la dirección con ./archivo.pdf o dará error al crear los directorios con mkdir.

Bueno lo podéis descargar el script completo aquí.

Pero como os decía hay una alternativa de pago. Es Abby Fine Reader que en su versión 9 permite directamente leer el pdf y convertirlo. Eso sí la versión de prueba sólo permite guardar una hoja cada vez. Pero la interfaz gráfica es sencillísima. Como veis, un proceso muy complicado el de Linux frente a uno muy sencillo de Windows. En contra, Abby tiene que es de pago, de hecho no he conseguido ni para probarla una versión pirata, pero tengo la versión 4 de Abby que venía con mi Scanner Acer. Abby Fine reader es muy preciso escaneando Tessearact lo es pero quizá no tanto, intuyo que influye el tratamiento previo de la imagen que no lo hace el propio Tessaract sino que lo hemos hecho con unpapper.

Si aprendéis a usar convert de linux, comprobaréis que es una herramienta mucho más potente que la automatización por lotes de photoshop para renombrar y convertir imágenes en determinados casos.

04MarLa rueda del ratón no funciona en la máquina virtual de ubuntu

La rueda del ratón no funciona en la máquina virtual de linux ubuntu que tengo corriendo en VMWare. ¿Cómo lo soluciono?

Editamos el fichero /etc/X11/xorg.conf, buscamos la sección “Input Device” que ponga “Configured Mouse” y la dejamos tal que así:

  1.  
  2. Section "InputDevice"
  3.          Identifier "Configured Mouse"
  4.          Driver "vmmouse"
  5.          Option "CorePointer"
  6.          Option "Device"       "/dev/input/mice"
  7.          Option "Protocol"     "ImPS/2"
  8.          Option "Buttons"      "5"
  9.          Option "ZAxisMapping" "4 5"
  10.  
  11. EndSection
  12.  

Luego reiniciamos las X con Ctrl+Alt+Backspace




Blogroll

Recent Listening