web-dev-qa-db-fra.com

API pour lire du texte à partir d'un fichier image à l'aide de l'OCR

Je cherche un exemple de code ou de nom d'API d'OCR (Optical Character Recognition) dans Java à l'aide duquel je peux extraire tout le texte présent d'un fichier image. Sans le comparer avec une image que je fais en utilisant ci-dessous le code.

public class OCRTest {

    static String STR = "";

    public static void main(String[] args) {
        OCR l = new OCR(0.70f);
        l.loadFontsDirectory(OCRTest.class, new File("fonts"));
        l.loadFont(OCRTest.class, new File("fonts", "font_1"));
        ImageBinaryGrey i = new ImageBinaryGrey(Capture.load(OCRTest.class, "full.png"));
        STR = l.recognize(i, 1285, 654, 1343, 677, "font_1");
        System.out.println(STR);
    }
}
7
user3404566

Vous pouvez essayer Tess4j ou JavaCPP Presets for Tesseract . Je pense que c'est plus facile plus tard que l'ancien. Ajoutez la dépendance à votre pom `

        <dependency>
            <groupId>org.bytedeco.javacpp-presets</groupId>
            <artifactId>tesseract-platform</artifactId>
            <version>3.04.01-1.3</version>
        </dependency>

`Et c'est simple à coder

import org.bytedeco.javacpp.*;
import static org.bytedeco.javacpp.lept.*;
import static org.bytedeco.javacpp.tesseract.*;

public class BasicExample {
    public static void main(String[] args) {
        BytePointer outText;

        TessBaseAPI api = new TessBaseAPI();
        // Initialize tesseract-ocr with English, without specifying tessdata path
        if (api.Init(null, "eng") != 0) {
            System.err.println("Could not initialize tesseract.");
            System.exit(1);
        }

        // Open input image with leptonica library
        PIX image = pixRead(args.length > 0 ? args[0] : "/usr/src/tesseract/testing/phototest.tif");
        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);
    }
}

Tess4j est peu complexe car il nécessite l'installation d'un package redistribuable VC++ spécifique.

10
nav3916872

Vous pouvez essayer javaocr sur sourceforge: http://javaocr.sourceforge.net/

Il existe également un excellent exemple avec une applet qui utilise Encog: http://www.heatonresearch.com/articles/42/page1.html

Cela dit, l'OCR nécessite beaucoup de puissance, donc cela signifie que si vous recherchez une utilisation intensive, vous devez vous occuper des bibliothèques OCR écrites en C et l'intégrer à Java.

L'OCR est difficile. Assurez-vous donc de qualifier vos besoins avant de vous y aventurer.

Tesseract et opencv (avec javacv pour l'intégration par exemple) sont des choix communs. Il existe également des solutions commerciales telles que ABBYY FineReader Engine et ABBYY Cloud OCR SDK .

7
zenbeni

Le moteur OCR Open Source est disponible auprès de Google pour l'OCR. Il peut être traité à l'aide de CMD. Vous pouvez traiter le CMD à l'aide de Java pour les applications Web facilement.
Veuillez visiter https://www.youtube.com/watch?v=Mjg4yyuqr5E . Vous obtiendrez les détails étape par étape pour traiter l'OCR à l'aide de CMD.

2
Jinu Jawad