El reconocimiento óptico de caracteres o OCR (Optical Character Recognition), es un proceso dirigido a la digitalización de textos, los cuales identifican automáticamente a partir de una imagen símbolos o caracteres que pertenecen a un determinado alfabeto.
En este post se explica cómo implementar el reconocimiento óptico de caracteres para imágenes con Tess4J el cual es un contenedor basado en JNA (Java Native Access) para Tesseract OCR API, la biblioteca proporciona soporte de reconocimiento óptico de caracteres (OCR) para:
Descarga e instalación
Puedes usar Tess4J desde Maven:
<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j --> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>4.4.0</version> </dependency>
o descargar la librería desde este enlace Tess4J-3.4.8-src.zip son 30.7 MB
Ejemplo con Netbeans
Crea un proyecto java con netbeans el cual llamaremos «Ejemplo Tess4J», agrega la librería con todas sus dependencias, si usas maven este paso ya no es necesario.
La imagen que utilizaremos de ejemplo es la siguiente:
También necesitamos los archivos *.traineddata correspondientes al lenguaje que deseamos utilizar, puedes descargar estos desde https://github.com/tesseract-ocr/tessdata o https://github.com/tesseract-ocr/tessdata/tree/3.04.00 dependiendo de la versión de Tess4J que estés utilizando. El archivo que descargaremos es spa.traineddata (15.6 MB) para el lenguaje español, código «spa».
Colocaremos la imagen PNG en el directorio raíz de nuestro proyecto y los archivos traineddata en una carpeta con el nombre de «tessdata«, es decir:
Ahora en la clase Main colocaremos el siguiente código:
package org.example; import java.io.File; import net.sourceforge.tess4j.*; /** * @author Tess4J */ public class Main { public static void main(String[] args) { File imageFile = new File("pensamiento.png"); ITesseract instance = new Tesseract(); // JNA Interface Mapping // ITesseract instance = new Tesseract1(); // JNA Direct Mapping instance.setLanguage("spa");//lenguaje //por defecto busca los archivos traineddata en la carpeta tessdata //ubicada en la raiz del proyecto, si utilizas otra dirección, //debes indicar la ruta con este metodo //instance.setDatapath("/tessdata"); // dirección de los archivos tessdata try { String result = instance.doOCR(imageFile); //impresión del resultado System.out.println(result); } catch (TesseractException e) { System.err.println(e.getMessage()); } } }
Y al ejecutar tenemos:
enjoy!
Un CardView es parte de los estilos de Material Design y nos permite mostrar información dentro de tarjetas (Card), esta[...]
Xdebug es una extensión para PHP que nos ayuda con la depuración y el desarrollo de aplicaciones. Contiene un depurador[...]
En este tutorial crearemos un lector de Feeds en Java/netbeans, pero antes debemosa saber que es un Feed, según Santa Wi[...]
En ocasiones los administradores de sitios web experimentan problemas de lentitud en su carga o en el peor de los casos[...]
Alda es un lenguaje de programación desarrollado por Dave Yarwood el cual esta basado en texto para composición musical,[...]
Java nos permite pasar parámetros a una aplicación empaquetada en un *.JAR mediante el MAIN de nuestro programa, pero cl[...]