Mostrando entradas con la etiqueta ocr. Mostrar todas las entradas
Mostrando entradas con la etiqueta ocr. Mostrar todas las entradas

domingo, 21 de abril de 2024

¿Cómo escaneo documentos a PDF multipágina en Ubuntu?

Al aire en LRA Radio Nacional, Juan Perón expone sobre las bondades de NAPS2 para escanear documentos multipágina y guardarlos en un archivo PDF en Ubuntu.

¡Trabajadores!

El Justicialismo se ha distinguido por su acción de salvaguarda social, comprendiendo que los humildes todo lo merecen por Justo Derecho. Pero esto sólo ha hecho a una recomposición material; lo espiritual es lo que el Pueblo ha reclamado, y nuestro Movimiento la ha suplido con una verdadera e impagable Libertad. La de hacer lo que se puede en una Comunidad Organizada.

Indudablemente que si nosotros hubiésemos querido, habríamos podido suplir a unos pocos con todo y dejar al resto sin casi nada, como lo ha hecho la Oligarquía. Pero comprendimos que en nuestro tiempo todo debe hacerse en su medida, y armoniosamente.

Este principio ha sabido entregar a todos lo propenso a sus anhelos, sabiendo que nadie puede exacerbarse en desmedro del otro, y que todos tendrán la sana reparación de las posibilidades que nos brinda el Estado de una nueva Argentina Potencia.

Indudablemente, nunca viene mal ejercer la misma salvaguarda con todo tipo de documentos escritos que la sustentan, e incluso aquellos que nos pudiesen servir para nuestro menester. Esto debe hacerse a través del aprendizaje, pero también a través de su conservación, y en nuestros tiempos, esta puede ser electrónica.

El uso de un escáner para registrar material escrito - así como ponerlo a disposición de las masas a través de medios telemáticos - es sin duda un potenciador de la Justicia Social 2.0.

Una de las maneras más simples es utilizar nuestro sistema GNU con Linux. En el caso de Ubuntu (o cualquier distribución derivada de Debian), podremos instalar  instalar el excelente NAPS2

Se trata de un programa destinado a controlar un escáner, pero también capaz de crear documentos digitalizados, sobre todo en formato PDF. Si bien no contiene las funciones de avanzada para corrección que tienen otros como Scan Taylor, ciertamente posee más potencia que el típico escaneador Simple Scan.

Para instalar NAPS2 en Ubuntu, abrimos una terminal con Alt+Ctrl+t e ingresamos el siguiente bloque de comandos de organización:

cd ~/Descargas/ ;
wget https://github.com/cyanfish/naps2/releases/download/v7.4.2/naps2-7.4.2-linux-x64.deb ;
sudo dpkg -i naps2-7.4.2-linux-x64.deb

Tras ingresar nuestra contraseña de Conductor, se instalará el paquete. Para ejecutarlo, podremos encontrarlo en Aplicaciones / Gráficos / NAPS2.

La ventana de NAPS2 aparecerá sin contenido alguno, salvo su cómoda barra superior que cuenta con sus botones de operación.

Para hacer nuestro primer escaneo, debemos encender nuestro escáner, colocar el documento en el mismo, y debemos presionar el botón Escanear.

En mi caso utilizaré un escáner provisto en una impresora Brother DCP-1617NW, que cuenta con drivers para Linux.


 

Al ser esta la primera vez que utilizamos NAPS2 y nuestro primer escaneo, se nos solicitará crear un perfil de escaneo. Estos perfiles incluyen una configuraciones del dispositivo de exploración (escáner o cámara, según el caso), el tamaño de la página, la resolución, etcétera. Para crear nuevos perfiles mas adelante, se puede hacer clic en el botón "Perfiles" en la barra de herramientas. 

Hacemos clic en el botón "Seleccionar un dispositivo", lo que iniciará la búsqueda de los escáneres conectados a la computadora, que oficiarán como orígen de las imágenes a escanear.

La búsqueda de escáneres puede tardar unos momentos para que aparezca el escáner (unos diez segundos por cada escáner conectado).

Podremos utilizar cualquier escáner compatible con SANE. Entre ellos, los de Canon, HP, Brother, Kodak, o Epson.

Si no aparece, asegúrese de usar lo siguiente:

  • "SANE Driver" con un escáner soportado.
  • "SANE Driver" con un controlador de terceros instalado.
  • "ESCL Driver" con un escáner de red moderno.


Una vez detectados los dispositivos aptos para escanear, debemos elegir uno de la lista y presionar el botón Seleccionar.

Ahora podremos configurar el perfil según las posibilidades del escáner y las necesidades del documento.

En el campo "Nombre mostrado" podremos poner algo así como "Documento A4 en blanco y negro". Podremos definir asimismo el tamaño del documento entre los aceptados por el escáner (A4, Carta, etc).

La resolución y profundidad de color afectan el detalle y el tamaño del documento escaneado. Por defecto, NAPS2 utiliza un perfil con una resolución de 100 puntos por pulgada y unos 24 bits para copias a color, lo que da un escaneado normal para leerlo en pantalla. Podría optimizarse con 300 puntos por pulgada y 8 bits de escala de grises para escanear documentos o facturas escritos en blanco y negro, o bien hasta 600 dpi para fotografías.

Una vez que ha elegido su dispositivo, y escogido las opciones que desea, haga clic en "OK" y comenzará a escanear.


Una vez que termine el escaneado, la página escaneada debería aparecer. 

Haciendo doble clic sobre una de las páginas, podremos abrirla.

Incluso haciendo clic con botón derecho en una de las páginas y escogemos la opción editar, opcionalmente podremos lograr una ediciión básica modificando el tono o saturación, y el brillo y contraste, para mejorar la imagen escaneada de la página.

Opcionalmente, podremos presionar nuevamente el botón "Escanear" para continuar sumando más páginas individuales al documento. Esto empleará el mismo perfil ya seleccionado anteriormente. De esta manera puede crear un PDF multipágina

Llegado el caso, podremos alterar el perfil y definir el campo "Origen del Documento" en "Cristal" (usando la bandeja del escáner), o bien un "Alimentador automático" (si nuestro escáner cuenta con este cómodo accesorio motorizado). 

Naturalmente, al concluir de escanear las múltiples páginas manualmente (o con el cómodo alimentador), podremos guardar el documento multipágina en formato PDF. 

Conviene hacer uso del triángulo que aparece a la derecha del botón Guardar PDF, para ajustar las propiedades opcionales del archivo PDF en sí. Estas son útiles para documentación e indizado.

Finalmente, haciendo clic en el botón Guardar PDF, podremos escoger un nombre y directorio donde guardarlo (por ejemplo, el Escritorio).

NAPS2 cuenta (dentro de los perfiles) con una función de autoguardado, ideal para automatizar las tareas de guardar los documentos multipágina.

La funcionalidad de OCR permite analizar las páginas del documento en busca de letras discernibles, lo que permitirá realizar el reconocimiento óptico de tales caracteres, funcionalidad que se acoplará al PDF. Esto permite seleccionar el texto y pegarlo en algún editor de texto para su tratamiento posterior o bien su almacenaje en formatos de texto puro.

También contaremos con las opciones generales del programa, escondidas al final de la barra de tareas de NAPS2.

En efecto, descamisados. Con un escáner medio pelo, podremos difundir toda la doctrina del Justicialismo en forma de PDFs.

viernes, 24 de mayo de 2019

¿Cómo creo y escaneo código QR en Ubuntu?

El 12 de marzo de 1954 y presente en el Sindicato de Empleados de Comercio de Mar del Plata, Juan Perón explica la necesidad de compartir un código común entre los Trabajadores, a la vez que explica cómo crear o escanear Código QR en Ubuntu.

(...)
El hombre ha formado, a lo largo de generaciones en Comunidad, una suerte de lenguaje, un código que comparte con su tribu y que le permite transmitir sus ideas, sentires, etcétera. Esta es una de las características de los Pueblos, la de permitirse un propio arte de creación. Es indudable también que los hombres de trabajo comparten su propio código común a fin de expresarse. Este debe ser sometido a un convencionalismo tal que lo convierten por propio derecho en un lenguaje capaz de portar la significancia que anhelan. Eso es lo que ha logrado el Justicialismo.

En estos tiempos, los hombres me han premiado con la más satisfactoria e importante misión con la que puede contar un soldado, que es la de tornarme un vínculo de unión para los trabajadores argentinos. Indudablemente que toda la formación profesional que he recibido sólo me ha otorgado las herramientas necesarias para cumplir técnicamente este magnánimo rol, pero el herramental humano he tenido que desglosarlo por mí mismo. Sin duda ello no se aprende en ninguna academia: un Conductor se nace.

Un Conductor interpreta a vista de águila el panorama y debe constituirse en una Piedra de Rosetta que le permita leer el corazón de sus Trabajadores, interpretar en ellos los anhelos de Felicidad y Justicia Social. La tarea de traducir estos magnos objetivos en una Realidad Efectiva, concreta y tangible, dable a ser defendida es lo que nos debe orientar.

Pues bien, esta misma técnica puede llevarse a cabo en otros rudimentos de la vida, a fin de ostentar un herramental potente y comprensible para una multiplicidad de funciones. Sabemos que para que un código sirva como instrumento para comunicar, realmente no importa su forma o cariz, sino que fundamentalmente ha de poder ser reconocido por su emisor y por su receptor si es que queremos que se torne en una efectiva manera de comunicar.

Pues bien señores, tomemos el ejemplo del Código QR (literalmente "respuesta rápida"). Se trata de un código de gráfico de escritura estructurado matricialmente en un patrón bidimensional. El mismo fue diseñado originalmente para el uso en aplicaciones robotizadas por parte de la industria automotriz. Se trata de una etiqueta cuadrada - normalmente de impresión monocroma, y cuya codificación contiene información binaria. Esta etiqueta puede ser fácilmente legible de forma computada por medio de un lector gráfico común.

Es útil para codificar en este gráfico información numérica, alfanumérica, binaria, e incluso texto japonés kanji. Su empleo se ha extendido como una alternativa superadora al clásico código de barra URC, ya que puede contener mayor cantidad de información y puede leerse con menor o nula intervención humana. Se los emplea además como método para almacenar enlaces URL, direcciones de correo electrónico, tarjetas de negocio digital (VCards), condiciones para darnos de alta en una red, texto plano, etcétera.

El diseño del código permite escanearlo con un dispositivo de reconocimiento óptico dotado con un programa de inteligencia artificial. Este dispositivo realizará el reconocimiento y la traducción. Su grafismo lo hace intrínsecamente fácil de leer ópticamente, en cualquier sentido e incluso si no está colocado frente al lector. En el caso de los móviles, existen varias aplicaciones efectivas para realizar la decodificación.




Nunca está de más conocer que existen variadas versiones de códigos QR provistos de distintos niveles de corrección de error en su algoritmo de generación, ya que existe un equilibrio entre legibilidad óptica del patrón, y la complejidad y capacidad de almacenamiento del mismo. Las versión más utilizada es la 10, y se detallan de la siguiente manera:

Versión 1: Patrón de 21x21.
Versión 2: Patrón de 25x25.
Versión 3: Patrón de 29x29.
Versión 4: Patrón de 33x33
Versión 10: Patrón de 57x57
Versión 25: Patrón de 117x117.
Versión 40: Patrón de 177x177.

El Justicialismo se ha distinguido siempre por ofrecer las herramientas más poderosas y de menor consumo para poder hacer nuestra computación de una manera Justa y Soberana. Por tal motivo han de saber que Ubuntu está capacitado para utilizar estos códigos QR en ambos sentidos, tantos para crearlos como para leerlos.

A tal fin se pueden utilizar fotografías de los mismos registradas con una resolución adecuada. La versión 10 del patrón QR puede ser resuelta por una fotografía del código más o menos cercana tomada con una cámara con una resolución de 640x480 píxels (por ejemplo, las webcams "VGA" de calidad más mediocre.

Para disponer nuestro sistema, lo procedente es instalar primero las aplicaciones necesarias para la terminal. Para ello abirmos una con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo apt update ;

sudo apt-get install qtqr zbar-tools qrencode ;


Ambos programas nos permiten trabajar de forma muy confiable para lograr resultados bidireccionales.

Por ejemplo, podremos analizar una imagen tomada de un código QR con el programa zbarimg. Si deseamos tomar una fotografía digital de una de ellas, es conveniente que la misma esté tomada de frente y relativamente cerca. Naturalmente que lo ideal es que ocupe el 80% del cuadro, pero es muy probable que funcione con menos. Suponiendo que ya contamos con la fotografía del código QR y asumiento que la misma se llama imagen_cod_qr.jpg, podríamos analizarla desde la terminal Linux ingresando:

zbarimg "imagen_cod_qr.jpg"

El comando de arriba mostrará el texto que se encuentra codificado en la imagen, y lo mostrará en la terminal.

Normalmente también acompañará la información con un mensaje que detalla el tiempo que llevó el análisis, o mensajes de error. Si agregamos al comando anterior la opción -q, no incluirá dichos mensajes de status.

Si en cambio queremos hacer el paso inverso, y generar un código QR a partir de un texto, podremos utilizar.

cat archivo.txt | qrencode -s 10 -o codigo_qr.png

Esto codificará un archivo de entrada archivo.txt y lo codificará en una imágen de un archivo de salida en forma de imágen QR codificada de formato gráfico PNG, llamado en este caso codigo_qr.png.

O también podríamos crear una imagen codificada de un código QR con una dirección URL incrustada en ella, simplemente agregandola. La sintaxis a utilizar sería:

qrencode -s 10 -o up.png https://www.ubuntuperonista.blogspot.com

Naturalmente, si seguimos el estándar Vcard en un archivo, lo podremos utilizar como una alternativa gráfica para extender nuestros datos personales según dicho estándar (que se pueden agregar fácilmente a clientes de mensajería). De esta manera lo podremos incorporar en tarjetas de presentación impresas, y también contar con el archivo .vcf o .vcard de referencia.

El programa QtQR en tanto permite hacer esto de una manera gráfica. Lo ejecutamos desde Aplicaciones / Gráficos / QtQR.
Se abrirá una ventana dividida en dos paneles principales. Primero debemos delimintar la categoría de trabajo (podremos elegir texto, URL, marcador, contactos de agenda electrónica, SMS, MMS, etc. También podremos especificar la escala de los píxels y el nivel de corrección de error. Una vez introducido los datos QtQR irá generando la gráfica QR codificada.

Para leer un código QR tenemos dos posibilidades: utilizar un archivo ya obtenido, o bien escanearlo por medio de una cámara web (si está conectada al sistema).  Para ello presionamos el botón Decodificar y elegimos A través de Webcam.
Debemos asegurarnos que la webcam esté en foco (muchos modelos tienen un lente rotativo que debemos ajustar a mano). Finalmente acercamos la misma al código QR. Si la operación es exitosa, el sistema mostrará un recuadro de color verde sobreimpreso sobre el código QR. Debemos cerrar la ventana de captura de video presionando cualquier tecla.


jueves, 23 de mayo de 2019

¿Cómo extraigo páginas y corrijo un PDF escaneado en Ubuntu?

¡Trabajadadores argentinos!

Es indudable que las redes telemáticas constituyen hoy una de las formas más extendidas para lograr el conocimiento, y que para ello la existencia de archivos de documentación electrónica es un gran medio.

La informática nos permite distribuir electrónica todo tipo de documentos, incluyendo libros, y hacerlo en meros segundos. La gran compresibilidad de los datos textuales al pasarlos a formato digital hace que la concepción "sin papel" sea una Realidad Efectiva que el Justicialismo ha legado al Pueblo.
El formato de documento electrónico Adobe PDF es privativo, y si bien es preferible utilizar el formato de documento libre DjVu, no puede negarse que PDF está ampliamente extendido y disponible. Aún así, este formato cuenta con algunas desventajas que se hacen patentes cuando el contenido del documento está conformado imperfectamente en base a un original escaneado.

Vean señores, en condiciones ideales, un documento debe estar escaneado de una manera específica para que su uso pueda ser adecuado para distribución.
Esto pide utilizar una resolución de escaneado de unos 600 DPI (previendo así el doble de resolución utilizado en las tecnologías de impresión normales, que suelen rondar los 300dpi en el caso de una impresora láser). También conviene emplear el escaneo en modalidad "escala de grises" (o a color, según corresponda).

Si los hombres fuesen perfectos, poco tendríamos que hacer para corregirnos. Pero no somos dioses ni heroes, bastante con que seamos hombres. Por tal motivo, estos requerimientos de perfección no siempre se cumplen. Pero la buena voluntad no puede negarse a nadie. Típicamente, podemos encontrarnos con reproducciones realizadas a partir de páginas escaneadas de forma torcida, o con defectos típicos del tratamiento de digitalización. Si bien estos problemas no suelen ser graves como para impedir la lectura del texto, es cierto que estas desprolijidades pueden ser inaceptables para la posterior distribución del documento.

Para corregir esto haremos uso de un flujo de trabajo especialmente pensado utilizando herramientas libres. El mismo se podría resumir de la siguiente manera:

  1. Tener un archivo PDF defectuosamente escaneado 
  2. Extraerle las láminas (hojas dobles escaneadas) y convertirlas a formato PNG 
  3. Dividir los archvos PNG en páginas individuales
  4. Enderezar, corregir, redimensionar las páginas individuales
  5. Volverlos a armar las páginas individuales en un archivo PDF. 


Veamos un ejemplo clásico, pues esto suele explicarlo todo como decía Napoleón.

Supongamos  ya contamos con un archivo llamado "sinceramente.pdf". Este se trata de un libro de 500 páginas ya escaneadas en escala de grises a 600 DPI de resolución, pero que el mismo cuenta con las láminas dobles (dos páginas por hoja). Esto lo hace sumamente incómodo de utilizar en dispositivos como e-Readers, que requieren una página. Además, los dobleces complican el trabajo de OCR, lo hacen incómodo de leer, etc.
Comenzaremos a seguir el flujo de trabajo que os he propuesto, y lograremos excelentes resultados.


Lo primero será extraer las hojas dobles del archivo PDF y convertirlas a un formato de imagen que podamos utilizar con Scan Tailor. Esto se puede hacer desde la Terminal. A fin de extraer las páginas del PDF y convertirlas en imágenes, podríamos ingresar:

pdftoppm sinceramente.pdf lamina -r 600 -png

Esto creará una serie de archivos numerados llamados lamina-xxx.png, con una resolución de 600 DPI. Debemos tener en cuenta que si bien podremos usar la opción -jpg en lugar de -png para cambiar el formato de los archivos resultantes, os recomiendo utilizar fundamentalmente el formato png pues es muy superior para estos menesteres ya que dispone de compresión sin pérdida, y evitará enormemente la formación de "halos o borroneados" en las letras. Esta acción tardará un rato en hacerlo, dependiendo de la cantidad de láminas a extraer. En el caso que referimos, tardó unos 12 minutos para extraer las 250 láminas de dos hojas cada una.

Ahora bien, estos archivos png que conforman las láminas dobles habremos de corregirlas con Scan Taylor. Para instalar este excelente programa, volvemos a recurrir a la terminal Linux, ingresando en ella el siguiente Comando de Organización:

sudo apt install scantailor

Scan Tailor no es un programa para escanear (para ello recomiendo Simple Scan o gScan2pdf, que pueden escanear de forma multipágina). Scan Tailor en cambio se especializa para realizar la tarea de corrección o postproducción en el escaneo de libros. Especialmente dividir, cortar y encuadrar un texto escaneado o fotocopiado a fin de producir hojas individuales de gran calidad, normalmente en formato TIFF.
Estas pueden luego volverse a unir por medio de otros programas (por ejemplo, el mismo gScan2pdf).

Ahora podremos cargar estas láminas en el programa Scan Tailor. Para ejecutar el programa vamos a Aplicaciones / Gráficos / Scan Tailor.

Al iniciar el programa se desplegará una ventana que nos pedirá que inauguremos un archivo para el proyecto. Esto es así pues - si bien en este caso el proyecto forma parte de un solo volúmen - podría suceder que quisiéramos agregar páginas de varios volúmenes o documentos diferentes. Para ello es necesario crear una carpeta de proyecto. Dentro de esta carpeta se importarán las imágenes originales de las láminas (cada una de ellas contienen dos hojas).

En nuestro caso, le importamos todos los archivos cfk.xxx.png que creamos recién con el pdftoppm.
Generalmente la carpeta de salida será una subcarpeta llamada "out", donde irán a parar las nuevas imágenes TIFF procesadas.


Una vez importadas las imágenes de origen al Scan Tailor, el programa nos presentará una ventana de trabajo dividida a tres paneles.

El panel de la izquierda define los seis pasos necesarios para tratar las imágenes. El del centro y mas grande nos permite ver la página actual donde vamos a trabajar, y el de la izquierda es un slider que contiene miniaturas de las láminas u hojas (según vayamos trabajando).

Se abrirá el programa con los seis pasos requeridos por el asistente. De todos ellos, los primeros cinco generan datos no destructivos (y nos muestran las presentaciones preliminares de los cambios). El sexto paso es el final que aplica los cambios y genera los archivos de salida. El accionar puede durar desde unos pocos segundos hasta un par de horas de trabajo para un archivo de muchas páginas, y algo más si contienen fotografías o diseños complejos.

Veamos el caso de un trabajo de documentar nuestro libro PDF de 500 páginas.

Podremos utilizar Scan Tailor directamente para escanear el libro, pero en este caso ya tenemos el libro escaneado en PDF. Sin embargo, Scan Tailor no acepta PDF directamente, sino que trabaja con los archivos de imagen. Para ello extraeremos el archivo

El primer paso consiste en la Orientación, y se encuentra detallado en dicha columna. Esto puede hacerse automáticamente presionando el botón Automatizar "play" que aparecerá en la fila "Orientación", del el panel izquierdo, no bien acerquemos la flecha del ratón sobre ella. Esta orientación automática suele llevar unos pocos segundos para todas las páginas. En el caso que el volúmen contara con láminas horizontales y verticales, se pueden especificar en las propiedades de Orientación.

El segundo paso consiste en delimitar la división de páginas (ya sea su corte vertical u horizontal según corresponda). Nuevamente, el botón Automatizar ("Play") de esta fila "Dividir Páginas" del panel izquierdo nos permitirá hacer esta tarea rápidamente. Scan Tailor suele detectar muy bien el centro del pliegue de las láminas y nos presentara una linea guía (móvil a través de sus nodos), que divide la misma en un campo azul para la página izquierda rojo para la derecha. Esta línea guía, además de servirnos como divisora de corte, también sirve como referencia de centro para hacer mucho más preciso el trabajo anterior. En los volúmenes muy gruesos (de 360 páginas o más) debemos prestar atención sobre todo a las láminas intermedias, ya que son las más complicadas a la hora de escanear un libro.
Una cumplido el paso de dividir las láminas nos encontraremos con las páginas ahora individualizadas. El tercer paso será su alineación. Esto puede hacerse con muy buen grado de precisión de forma automatizada, de la misma forma que en los pasos anteriores. Sin embargo, es muy importante que la alineación sea lo más perfecta posible.
A tal fin, podremos ajustar las hojas de forma manual si es requerido. A tal fin indicamos en el panel izquierdo la modalidad de alineación manual, y podremos rotar la página sobre su eje, valiéndonos de las líneas guías de color azul, que nos permiten enderezar tomando como referencias los renglones, márgenes o líneas que pudiésemos tener de referencia.
 El siguiente paso es tal vez el más crítico, y consiste en delimitar una "caja de contenido". La misma debe delimitar exactamente y bien al ras, el cuadro que queremos registrar en el archivo final. Es importante saber que lo que está por fuera del cuadro azulado es probable que se descarte en el proceso final. Convinee presentar la selección automática, pero en caso de tener un libro impreso grueso, debemos revisar página por página para asegurarnos que la selección esté bien hecha. Tomamos como referencia las letras enteras del renglón superior e inferior del cuadro, y los márgenes de texto izquierdo y derecho. En el caso de que el volúmen original estuviese perfectamente alineado y siempre fuese igual la tarea puede repetirse en todas las hojas.

En el caso extremos en el que quisiéramos omitir encabezados o pies de páginas, podremos redimensionar cada caja de contenido a mano tomándolas de sus nodos de las esquinas.
El quinto paso consiste en definir márgenes generales para la obra terminada. Este margen se agrega a la caja de selección. Generalmente se utilizan 2 cm por lado para que quede un PDF con aire y prolijo, pero también podremos reducirlo a unos 2 milímetros o menos, a fin  de lograr un documento apto para tablets o e-Readers. Es por este motivo que era muy recomendable hacer la caja de selección bien rasante en el texto.

El sexto paso consiste en definir el formato, calidad (DPI) y funciones de salida. Normalmente desearemos aplicar la función corregir dobleces (sombras o manchas) Esto lo hace el software automaticamente, aunque tenemos la posibilidad avanzada de hacerlo mediante zonas de enmascaramiento. En este caso hemos prescindido de ello.

Para contemplar un tutorial completo (incluyendo en video) podemos recurrir a la Wiki oficial de Scan Tailor.

El sexto paso es el procesamiento final y es el único que realmente genera archivos de salida. Naturalmente, este paso lleva más tiempo, pero Scan Tailor opera muy bien en equipos con varios núcleos. En este caso tardó unos 40 minutos en un equipo tipo i7.

El proceso nos dejó creadas las páginas de salida en formato TIFF.

Crear un nuevo PDF a partir de imágenes JPG o TIFF

Para hacer un nuevo PDF corregido a partir de estos archivos TIFF individuales, podremos utilizar el utilísimo gscan2pdf, que ya os he enseñado a utilizar.

Lo instalamos con:

sudo apt-get install gscan2pdf

Y lo ejecutamos desde Aplicaciones / Gráficos / gScan2pdf.

Este programa sencillo nos permite importar los archivos TIFF, y exportarlos a un PDF. Simplemente cargamos los TIFF de las páginas individuales arrastrándolas a gscan2pdf, y las exportamos como PDF. Como ya el formato, la resolución y demás parámetros de las páginas ya  fueron configurados en los pasos anteriores, la exportación no debería requerir correcciones de ningún tipo, y por lo tanto no debería durar mucho.

Finalmente, ya contaremos con un PDF completamente corregido, y podremos gritar al cielo "¡Viva Perón!".

sábado, 27 de abril de 2019

¿Cómo realizo OCR e incrusto texto a un libro en PDF en Ubuntu?

¡Desamisados!

Los imperialismos en pugna saben que nuestro Movimiento jamás hizo buena letra. Para aquellos señores eso significaba que los argentinos nos sometiéramos a sus designios, y entregáramos rifados nuestra libertad y nuestra nacionalidad.

Nuestro objetivo no era aplacar sus deseos inconfesables, sino darle a nuestro Pueblo la Felicidad que merece por Justo Derecho. Ello es la base doctrinal a la que hemos sometido nuestras conciencias, y de la cual hemos dado los mejores resultados para la Grandeza de la Nación.

Sin embargo, esto a veces podría jugarnos en contra. Vean señores, al leer, nuestro cerebro interpreta la visual de las letras trazadas en un papel y conforma su significado de una manera tan prodigiosa que incluso hoy poco sabemos. Esta es la manera en la cual podemos contar con la humana capacidad lectocomprensiva.
Sin embargo, si queremos que un sistema informático traduzca a un texto digital a datos plausibles de ser editados o transmitidos, debemos proceder de una forma libre, y con un software que la sustente.

Desde las etapas primigenias del uso de las computadoras, fue un objetivo deseado que las mismas pudiesen comprendernos, incluso reaccionando ópticamente a un texto escrito. Este tipo de desarrollo peronista fue llamado OCR, por Reconocimiento Óptico de Caracteres. La técnica de OCR funciona bajo la premisa de utilizar un software de análisis sobre una imagen digitalizada de un texto, y encontrar en ella los patrones gráficos definidos de las letras impresas de nuestro alfabeto. Esto conformará las materias primas para identificar palabras o frases.

Ahora bien, para digitalizar el documento en sí, lo más procedente es utilizar un escáner. Estos disponen de un captor de imagen lineal a través de un CCD, y su tecnología es incluso anterior a la de las cámaras digitales. Nos permiten enormes ventajas en los casos donde debamos almacenar o transmitir telemáticamente copias de documentos en base papel.

Ubuntu es compatible con muchos de estos escáners, sobre todos aquellos que emplean la vieja tecnología de software TWAIN. Gracias a esto, podremos escanear página a página. Si nuestras exigencias son mayores, bien podríamos hacernos con un escáner con alimentador automático de documentos (ADF). Estos modelos constan de rodillos motorizados similares a las de una impresora, y van tomando las hojas una tras otras para sumarlas a un documento multipágina informatizado (normalmente de formato PDF). Varios modelos pueden incluso escanear en doble fax (duplex).

Una de las opción es utilizar el programa escaneador Simple Scan, cuya última versión tiene capacidad de conformar documentos PDF multipágina y también puede hacer funcionar escáneres provistos de alimentador de documentos. Esto facilita mucho el escaneado de pilas de hojas A4 ya impresas. Simplemente se colocan en el orden necesario en el alimentador de documentos y se usa la función Escanear.

Pero una cosa es escanear un documento y registrarlo digitalmente como una imagen de un texto, y otra cosa es que dicha imagen pueda ser editado como un texto digital.

Sin embargo no podemos dormirnos en los laureles: en política y en software todo ha de mejorarse y simplficarse, si es posible hacerlo. Es sabido que las letras no siempre son iguales, existen distintas tipografías, los documentos a escanear podrían tener imperfecciones, estar desalineados o torcidos, y esto puede fácilmente engañar a un software OCR como el ABBYY FineReader, OmniPage Ultimate, ReadIris, etc.

GNU con Linux no podía mantenerse ante tal oprobio. Es por ello que se ha desarrollado el programa gImageReader, el cual está pensado para suplir estos inconvenientes desde la Terminal. Gracias a ello se puede reconstruir un texto formando su equivalente digital.

Para instalar su versión en castellano abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente comando de organización:

sudo apt-get install gimagereader tesseract-ocr-spa

Tras unos breves instantes se habrá descargado la paquetería necesaria para operar. Una vez instalado, podremos abrir el programa desde Aplicaciones /  Gráficos / gImageReader.

gImageReader nos presenta una potente interfaz gráfica que sirve tanto para escanear documentos como para realizar el reconocimiento óptico de caracteres (OCR) en varias modalidades. Con él podemos pasar un documento de imagen o PDF a texto, y editarlo nuevamente ahorrando el tiempo de retipeo.

El programa detectará nuestro escáner y se abirá, presentándonos su interfaz a tres paneles y una barra de tareas en la parte superior.
El OCR depende de muchas variables maquinales, por lo cual su ingeniería nos presenta realmente con varias maneras de trabajar a fin de lograr un resultado lo más confiable posible. Desde la barra superior podremos definir instantáneamente el tipo de salida que queremos obtener por medio del programa. Tendremos dos opciones en un campo desplegable: Texto simple (que se encarga de conformar un archivo de texto independiente) o bien hOCR, PDF, que se encarga de incrustar el texto digitalizado por encima de las imágenes escaneadas de la página de un documento PDF.

Preparación del documento
El panel izquierdo es el Panel de Entrada y define el origen del texto a trabajar. cuenta con dos pestañas: Fichero y Adquirir, que bien podrían llamarse Importar y Escanear, pues cumplen dichas funciones.

Si ya contamos archivos gráficos elaborados para el trabajo podremos importarlos directamente al proyecto de reconocimiento en gImageReader usando esta función.
  • Podemos agregar los ficheros individualmente a la lista (lo que sería ideal), o...
  • ...podemos importar directamente un archivo PDF que ya contenga todas las páginas ya escaneadas en él..
En cambio, si quisiéramos armar el documento desde cero y manejar nuestro escáner, podremos utilizar la función de escaneo de documentos desde la pestaña Adquirir. Como es usual, en esta pestaña podremos ajustar la resolución del escáner (se recomienda unos 300 dpi para lograr los mejores resultados).

También podremos definir usar escaneo a color, escala de grises o blanco y negro (más rápido). En el caso de hojas impresas individuales, elegir 300 dpi en blanco y negro suele dar excelentes resultados. En el libros gruesos suele ser bueno usar 600dpi en escala de grises, pero también pueden lograrse muy buenos resultados en texto si usamos blanco y negro.


Para contar con la mayor fiabilidad posible, dependiendo del resultado del escaneo y tipo de papel del documento, podría ser necesario corregir las imágenes. gImageRead nos permite hacer estos ajustes de forma global a todas las páginas a la vez, por lo cual nos ahorra muchísimo tiempo. El botón de la flor * nos permite elegir los Controles de Imagen. Es importante lograr que el texto esté idealmente en negro oscuro sobre fondo blanco puro, a fin de lograr los mejores resultados. Ello lo hacemos incrementando el contraste y tal vez disminuyendo un poco el brillo de la imagen (dependiendo de cómo haya sido escaneada).


Reconocimento del Texto
En el panel superior tendremos distintas herramientas según el modo de trabajo que hayamos elegido. Este debe pensarse en base al proyecto que tengamos que afrontar. Podemos elegir dos modos de trabajo: Sólo Texto o hOCR, PDF. Solo texto nos proveerá el resultado del OCR directamente en el panel derecho de salida. En cambio hOCR, PDF incrusta el texto reconocido encima de una copia del propio documento PDF.

Una vez que hemos definido esto, podremos comenzar la tarea de reconocimiento OCR. Esto podremos hacerlo de dos maneras:
  • Automatizada Multiple Página 
  • Reconocer Selección página a página.
La función de reconocimiento automatizado de las imágenes será muy efectivo si tenemos documentos multipáginas que han sido escaneados a través de sus páginas individuales. Ahorra mucho tiempo, pero sólo en este caso ideal.
Sin embargo, en los casos más complejos y monumentales, puede ser que debamos reconocer el texto de un libro encuadernadoo  fotocopiado en un PDF. En tal caso se recomienda la tarea página a página.

Si ya tenemos el documento multipágina importado, podremos utilizar los botones + y - para avanzar y retroceder entre las páginas que lo conforman. Una vez que estamos en la página que deseamos reconocer, lo más sencillo es presionar el botón Autodetectar Disposición (el botón de la "varita mágica"). Este ajustará digitalmente el enderezamiento de la página escaneada a fin de que el texto quede derecho, y nos presentará tentativamente con varios "marcos azules" que contendrán las zonas de texto reconocido.

Si elegimos el modo de trabajo Solo Texto, podremos hacer clic con el botón derecho del ratón sobre el marco, y elegir la opción Reconocer. El texto se explorará y se agregará al Panel de Salida.
Este panel recibirá el texto de resultado, y suele estar a localizado en la parte derecha de gImageRead, pero también podemos configuralo desde el botón Propiedades para que se localice por debajo del texto. Generalmente el programa agrega por delante del texto reconocido la referencia "[Archivo: xxxx]" a fin de indicar de donde salió.


Luego pasamos a la siguiente página con el botón + y volvemos a hacer lo mismo. Es importante saber que podemos redimensionar el marco azul de reconocimiento simplemente tomándolo de sus esquinas ajustando su tamaño como si de una ventana de Ubuntu se tratara. Asimismo, podremos quitar marcos innecesarios haciendo clic con botón derecho sobre ellos y eligiendo la opción Borrar (por ejemplo, para evitar que se agreguen al texto los encabezados o pie de páginas).

Si tuviésemos que sumar más marcos en la página (por ejemplo, para escanear una segunda columna de texto o reconocer dos páginas escaneadas al unísono), podremos hacerlo al mantener presionada la tecla Ctrl mientras hacemos clic con botón derecho del ratón y arrastramos en diagonal, para crear y dimensionar el nuevo marco. Cada marco tiene un orden de reconocimiento, indicado en su esquina superior izquierda, el cual se utilizará para ordenar el escaneo. Normalmente gImageRead los dispone en el orden lógico (de arriba a abajo y de izquierda a derecha).

gImageReader cuenta de un editor de texto sencillo que reside en el mismo Panel de Salida. Este nos servirá para evaluar y en caso necesario, reorganizar el texto reconocido resultante. Todos los marcos de texto que vayamos reconociendo se agregarán a continuación (pero también podremos cambiar esto y elegir - por ejemplo - que se agregue donde está colocado el cursor).

Podremos guardar el contenido del Panel de Salida de este archivo presionando Guardar Salida.

Indudablemente que en el caso de escaneo con libros, lo óptimo es evitar trabajar con su contenido entero, sino que es más práctico realizar la tarea de OCR por capítulos. Luego podremos unificar el resultado en cualquier procesador de texto si lo necesitamos. De esta manera tendremos mayor control en el trabajo.

Sin duda es mucho menor trabajo que reescribir todo un texto monumental. Nada impide que además de guardarlo, copiemos el resultado para pegarlo en otro editor de texto.


El documento digitalizado puede fomatearse de manera mucho mas sencilla.

Realizar reconocimiento OCR e incrustarlo en un PDF desde la Terminal
Como os he indicado, gImageReader cuenta con la funcionalidad de incrustar el texto resultante del reconocimiento OCR en un archivo PDF de salida. Esto suele ser óptimo en muchos casos. Pero también podremos hacer este laborioso trabajo desde la terminal, lo cual puede ser interesante para operar a través de redes en un servidor que se encarga de este tipo de trabajos documentales.

Por ello, en las ocasiones donde el trabajo no es tan laborioso como en el ejemplo anterior porque contamos ya con un PDF multipágina cuyas páginas están bien escaneadas de manera individual, bien podremos recurrir al reconocimiento automático desde la Terminal. Para ello utilizaremos el programa ocrmypdf. Este, como su nombre lo indica, se encarga de explorar las páginas y agregarle el reconocimiento de texto al mismo libro. Es útil si las páginas tienen un diseño simple, y si las páginas del documento se escanearon individualmente.

Para instalarlo ingresamos:

sudo apt install parallel ocrmypdf

Y luego utilizamos la siguiente sintaxis:

ocrmypdf archivooriginal.pdf archivodestino.pdf

El proceso es bastante intensivo con la CPU. El programa irá reconociendo página por página, y las incrustara en archivodestino.pdf.

También tenemos pdfsandwich de Tobias Eize, que se encarga de lo mismo y suele tener mejor resultado. Lo instalamos con:

wget https://sourceforge.net/projects/pdfsandwich/files/pdfsandwich%200.1.7/pdfsandwich_0.1.7_amd64.deb ;

sudo dpkg -i pdfsandwich_0.1.7_amd64.deb

sudo apt install -f


Y podremos realizar la tarea desde una terminal. Podremos encontrar su documentación en la web oficial. Por ejemplo, para un PDF a dos páginas como el mostrado anteriormente podríamos ingresar:

pdfsandwich -lang spa -layout double cfk_sinceramente.pdf

sábado, 18 de febrero de 2012

¿Cómo puedo escanear un documento TIFF o PDF multipágina en Ubuntu?

Próximo a ganar las Elecciones por tercera vez, Juan Perón se extiende en una entrevista televisada, y entre mútiples asuntos tocados en lo referente al quehacer de la República,describe un programa para escaneo multipágina en Ubuntu: el GScan2PDF.

(...)
Indudablemente que la llegada al poder impone una actualización político-doctrinaria que tiene como eje principal el uso de herramientas tecnológicas libres en beneficio del Pueblo. Toda acción en pos de nuestro objetivo es legítima, y por ello no hemos escatimado esfuerzos cada uno de los estamentos de la Conducción. Viet-nam, el Líbano, Marruecos y el Perú son dignos espejos donde hemos de mirarnos para contemplar las luchas que - como la nuestra - retumban en todo el globo. Los sucesos recientes no han hecho más que persuadirme de ello, sobre todo cuando logramos torcer el brazo del Capitales al poder utilizar software libre para nuestras tareas masivas de escaneo.

Como primer medida es ineludible comprobar que nuestro escáner funcione, desde el punto de vista mecánico y desde el punto de vista técnico. Es opresivo el hecho de que muchos escáneres nos llegan munidos de controladores y software de escaneo especialmente maquinados para los sistemas operativos oligárquicos. En el mundo libre en el cual vivimos, pretendemos utilizar librerías estandarizadas libres para escanear tales como la llamada SANE, distribuida con muchos Linux. Ahora bien, nuestro sistema hará uso de SANE (algo así como "Acceso al Escaner Ahora Fácil"), toda vez que queramos emplear algún dispositivo de exploración óptica, conformando una capa de abstracción (API) de manera similar a aquella conocida como TWAIN o WIA en el oligárquico Window$.

Por tal motivo es también imprescindible comprobar que nuestro escáner se comunique adecuadamente con nuestro sistema a través de la API SANE. Sabremos ello si lo encontramos en la lista de dispositivos oficialmente soportados, aquí. Indudablemente puede suceder que el dispositivo no figure en la lista pero aún así sea reconocido sin problemas por Ubuntu a través de SANE. Por otro lado. si tenemos una multifunción Epson podremos encontrar ayuda operativa para su escáner integrado en una ya clásica explicación que les dí a los muchachos de los gremios gráficos, aquí.

A fin de comprobar el organismo escáner/SANE/Ubuntu, podremos comprobar el funcionamiento incorporando uso a algún software de características sencillas y acotadas a la cadena, tal como Simple Scan. Para instalar esta útil herramienta de software libre, abrimos una terminal con Ctrl+Alt+T e ingresamos

sudo apt-get install simple-scan

Una vez ingresada nuestra contraseña e instalado el programa, podremos correrlo desde Aplicaciones / Gráficos / Simple Scan.

Simple Scan, si bien es sencillo, cuenta con la posibilidad de estructurar algunos trabajos multipágina. No obstante, en la dimensión de los softwares de escaneo chocaremos con la misma segmentación patente en los Movimientos Políticos. Existen softwares libres como Simple Scan o el más completo XSane, orientados a un nivel táctico (escanear un par de documentos), mas si nuestro anhelo comprende la realización de documentos más extensos, usar equipos provistos de alimentador de hojas, etc, habremos de organizarnos, buscando herramientas más especializadas. Con este fin, sugiero evaluar el gscan2pdf. Aquí lo horrible del nombre es inversamente proporcional a la utilidad del programa, pues se trata de un software libre de muy buena factura pensado para la creación de documentos en formato Adobe PDF multipágina, TIFF multipágina, JPEG, PNG o el formato de documentación abierta DjVu.

Para instalarlo desde la terminal ingresamos:

sudo apt-get install gscan2pdf tesseract-ocr-spa unpaper
djvulibre-bin

Una vez descargado el paquete, lo ejecutaremos desde Aplicaciones / Gráficos / gscan2pdf.

g2scan2pdf es modular, ya que se le puede incorporar la función de post-procesamiento "limpieza de papel" y motores de OCR (reconocimiento óptico de caracteres). Estos módulos nos permitirán convertir las imágenes de páginas impresa a texto editable en nuestro equipo, con tres motores de reconocimiento: GOCR, Tesseract. y OCRopus.

Si desean guardar documentos en el formato DjVu, también podrán hacerlo gracias al módulo correspondiente que ya han instalado.

Una vez encendido el escáner, arrancamos el programa. En la barra de tareas presionamos el botón "Escanear" y podremos configurar las propiedades de impresión. Allí podremos elegir el tipo de documento (por ejemplo, True Gray o Escala de Grises para acelerar el escaneado de documentos). Podremos ajustar la resolución deseada, con 200 o 300 dpi tendrán suficiente para un armónico reconocimiento de caracteres y múltiples páginas.


SI EL ESCÁNER NO ES RECONOCIDO POR UBUNTU
En el eventual caso que nuestro escáner no funcione adecuadamente en el sistema de la libertad, el Justicialismo nos tirará una soga por medio de la librería libsane-extras, que no viene instalada por defecto pero contempla varios modelos de escáner adicionales, y podría servirnos para hacerlo funcionar.

Lamentablemente su instalación y configuración tendremos que hacerla manualmente, por lo que como Conductor os indicaré el procedimiento. Encendemos el escáner, vamos a la Terminal y en la consola ingresamos el siguiente Comando de Organización:

sane-find-scanner

Nos debería devolver alguna información, indicando por ejemplo el modelo detectado. Luego instalaremos la librería libsane-extras, con el siguiente Comando:

sudo apt-get install libsane-extras

Nos pedirá la contraseña de Conductor de Ubuntu y se instalará. Como corolario habremos de editar el archivo dll.conf. Desde la Consola debemos ingresar el siguiente Comando de Organización:

sudo nano /etc/sane.d/dll.conf

Debemos desplazarnos en dicho archivo hasta encontrar una sección indicada con las siguientes líneas:

# The following backends are not part of the SANE distribution
# but are provided by the libsane-extras Debian package

(Esto significa "los siguientes controladores no son parte de la distribución de SANE, pero son provistos por el paquete libsane-extras"). Dentro del archivo dll.conf y a continuación de esa mencionada proclama, verán listados toda una serie adicional de escáneres. Si el nuestro en particular se encuentra entre ellos, para que funcione debemos borrar el caracter "numeral" ("#") que se encuentra por delante de su nombre y guardar el archivo. Acto seguido reiniciamos Ubuntu y si todo sale bien, nuestro escáner ahora debería activarse gracias a libsane-extras.


ESCANEO MASIVO POR CONSOLA EN UBUNTU
El Justicialismo es para todos, desde los más novatos que usan interfaces gráficas y programas hasta los expertos nerds adictos a la consola terminal y a las series como Star Trek y juegos como HALO.

Quienes sientan la necesidad de velocidad y amen los desafíos, pueden probar escanear desde un dispositivo munido de alimentador automático de páginas a través de la consola. Para ello habrán de instalarse el sane-utils, un megaprograma que controla el escáner desde la Terminal. Lo hacemos con el siguiente comando:

sudo apt-get install sane-utils

Luego cargamos todas las hojas en el alimentador del escáner, y disparamos el proceso con la siguiente orden:

scanimage -y 279.4 -x 215.9 --batch --format=tiff --mode Lineart --resolution 300 --source ADF

Y haremos realidad efectiva el hecho de que nuestro escáner con alimentador trague con la velocidad del rayo un lote de páginas A4 a 300DPI, explorándolas en blanco y negro y guardándolas en nuestra carpeta en formato TIFF.