diff --git a/image-processing/pom.xml b/image-processing/pom.xml index 09dd29556e..0fada1373f 100644 --- a/image-processing/pom.xml +++ b/image-processing/pom.xml @@ -50,12 +50,26 @@ imageio-bmp ${imageio.version} + + net.sourceforge.tess4j + tess4j + ${tess4j.version} + + + org.bytedeco.javacpp-presets + tesseract-platform + ${tesseract-platform.version} + + + 1.3.5 1.51h 3.3.2 + 4.5.1 + 4.0.0-1.4.4 \ No newline at end of file diff --git a/image-processing/src/main/java/com/baeldung/tesseract/OAlquimista.png b/image-processing/src/main/java/com/baeldung/tesseract/OAlquimista.png new file mode 100644 index 0000000000..5c9084058e Binary files /dev/null and b/image-processing/src/main/java/com/baeldung/tesseract/OAlquimista.png differ diff --git a/image-processing/src/main/java/com/baeldung/tesseract/TesseractJavaCPPExample.java b/image-processing/src/main/java/com/baeldung/tesseract/TesseractJavaCPPExample.java new file mode 100644 index 0000000000..4afe9fe92e --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/tesseract/TesseractJavaCPPExample.java @@ -0,0 +1,36 @@ +package com.baeldung.tesseract; + +import org.bytedeco.javacpp.BytePointer; +import org.bytedeco.javacpp.lept.PIX; +import org.bytedeco.javacpp.tesseract.TessBaseAPI; +import static org.bytedeco.javacpp.lept.*; + +public class TesseractJavaCPPExample { + + public static void main(String[] args) { + BytePointer outText; + + TessBaseAPI api = new TessBaseAPI(); + if (api.Init("tessdata", "eng") != 0) { + System.err.println("Could not initialize tesseract."); + System.exit(1); + } + + // Open input image with leptonica library + //PIX image = pixRead("src/main/java/com/baeldung/tesseract/OAlquimista.png"); + PIX image = pixRead("src/main/java/com/baeldung/tesseract/baeldung.png"); + api.SetImage(image); + + + + // Get OCR result + outText = api.GetUTF8Text(); + System.out.println("OCR output:\n" + outText.getString()); + + // Destroy used object and release memory + api.End(); + outText.deallocate(); + pixDestroy(image); + } + +} diff --git a/image-processing/src/main/java/com/baeldung/tesseract/TesseractTess4JExample.java b/image-processing/src/main/java/com/baeldung/tesseract/TesseractTess4JExample.java new file mode 100644 index 0000000000..127cfb018e --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/tesseract/TesseractTess4JExample.java @@ -0,0 +1,28 @@ +package com.baeldung.tesseract; + +import java.io.File; + +import net.sourceforge.tess4j.ITesseract; +import net.sourceforge.tess4j.Tesseract; +import net.sourceforge.tess4j.Tesseract1; +import net.sourceforge.tess4j.TesseractException; + +public class TesseractTess4JExample { + + public static void main(String[] args) { + File imageFile = new File("src/main/java/com/baeldung/tesseract/baeldung.png"); + //File imageFile = new File("src/main/java/com/baeldung/tesseract/OAlquimista.png"); + Tesseract tesseract = new Tesseract(); + tesseract.setLanguage("spa"); + tesseract.setPageSegMode(1); + tesseract.setDatapath("tessdata"); + String result = null; + try { + result = tesseract.doOCR(imageFile); + } catch (TesseractException e) { + e.printStackTrace(); + } + System.out.println(result); + } + +} diff --git a/image-processing/src/main/java/com/baeldung/tesseract/baeldung.png b/image-processing/src/main/java/com/baeldung/tesseract/baeldung.png new file mode 100644 index 0000000000..86155fa3ec Binary files /dev/null and b/image-processing/src/main/java/com/baeldung/tesseract/baeldung.png differ diff --git a/image-processing/src/main/java/com/baeldung/tesseract/outputbase.txt b/image-processing/src/main/java/com/baeldung/tesseract/outputbase.txt new file mode 100644 index 0000000000..09e3f981e3 --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/tesseract/outputbase.txt @@ -0,0 +1,11 @@ +“Quando vocé quer alguma coisa, todo o Universo conspira para que vocé realize seu desejo.” De +tempos em tempos, surge um livro que muda para sempre a vida de seus leitores. O Alquimista 6 um +deles. Com mais de 65 milhédes de exemplares vendidos no mundo inteiro, o mais famoso titulo de +Paulo Coelho ja se estabeleceu como um classico moderno, atemporal e universal. Quase 25 anos apds +seu langamento, segue fascinando publicos cada vez maiores, de diferentes geragdes. Simples, sabia e +inspiradora, esta historia refaz os passos de um pastor da Andaluzia que viaja para o deserto egipcio +em busca de um tesouro enterrado nas Piramides. O que comega como uma jornada para encontrar +bens mate7riais torna-se uma descoberta das riquezas que escondemos dentro de nds mesmos. As +belas ligdes que Santiago aprende pelo caminho nos falam da sabedoria de ouvir o que diz nosso +coracgao, ler os sinais com que deparamos ao longo da vida e, acima de tudo, seguir os nossos sonhos. + \ No newline at end of file