165 votes

Implémentation de l'OCR en Java

C'est avant tout de la curiosité, mais existe-t-il des implémentations de l'OCR en Java pur ? Je suis curieux de savoir comment cela fonctionnerait purement en Java, et l'OCR en général m'intéresse, donc j'aimerais voir comment il est implémenté dans un langage que je comprends parfaitement. Naturellement, il faudrait que l'implémentation soit open source, mais je suis toujours intéressé par les solutions propriétaires, car je pourrais au moins vérifier les performances dans ce cas.

J'en ai vu quelques-unes qui peuvent être utilisées en Java (comme Asprise ) mais il ne semble pas qu'il s'agisse d'implémentations purement Java... en existe-t-il ?

0 votes

@Robik Tout d'abord, tant que vous y êtes, vous devriez également supprimer les remerciements inutiles, etc. Et deuxièmement, vous ne devriez pas éditer dans une telle hypothèse, surtout si le PO est toujours actif et que vous pourriez simplement commenter - bien que ce soit probablement vrai dans ce cas... @ rat Juste pour clarifier, vouliez-vous dire asprise ?

0 votes

Si vous ne recherchez pas une approche purement Java, vous pouvez peut-être construire une passerelle JNI (telle que Tess4J ) a un sens. Mon sentiment est que les bibliothèques OCR sont mieux représentées dans le monde C++ (OCRAD, GOCR, Cuneiform - voir tous aquí ).

0 votes

@rat - Vous avez raison - Asprise OCR SDK pour Java n'est pas purement basé sur Java. En fait, en arrière-plan, du code natif est utilisé car l'OCR est un processus très coûteux en termes de calcul.

84voto

Ron Points 329

Je recommande d'essayer le Java OCR sur sourceforge.net. Je l'ai développé à l'origine, et j'ai un article de blog sur le sujet .

Depuis que je l'ai mis en ligne sur sourceforge, ses fonctionnalités ont été étendues et améliorées grâce à l'excellent travail d'un chercheur/développeur bénévole.

Essayez-le, et si vous ne l'aimez pas, vous pouvez toujours l'améliorer !

0 votes

Bonjour, j'ai vérifié ce projet. Il est assez impressionnant. Merci. Cependant, j'ai une question, est-ce que cela peut convertir une image tif, jpeg en pdf consultable ?

18 votes

@Ron J'ai aussi jeté un coup d'oeil au projet. Je n'ai pas trouvé la démo et l'interface graphique fait diverses opérations graphiques mais il n'y a pas d'instructions sur la façon de faire fonctionner la reconnaissance de caractères réelle.

1 votes

@Ron quand je suis le lien vers votre blog alors je vois une page blanche.

11voto

Alexey Kuznetsov Points 434

Je viens de créer mon propre Java OCR.

https://github.com/axet/lookup

package com.github.axet.lookup;

import java.io.File;

import com.github.axet.lookup.common.ImageBinaryGrey;

public class OCRTest {

    static public void main(String[] args) {
        OCR l = new OCR(0.70f);

        // will go to com/github/axet/lookup/fonts folder and load all font
        // familys (here is only font_1 family in this library)
        l.loadFontsDirectory(OCRTest.class, new File("fonts"));

        // example how to load only one family
        // "com/github/axet/lookup/fonts/font_1"
        l.loadFont(OCRTest.class, new File("fonts", "font_1"));

        String str = "";

        // recognize using all familys set
        str = l.recognize(Capture.load(OCRTest.class, "test3.png"));
        System.out.println(str);

        // recognize using only one family set
        str = l.recognize(Capture.load(OCRTest.class, "test3.png"), "font_1");
        System.out.println(str);

        // recognize using only one family set and rectangle
        ImageBinaryGrey i = new ImageBinaryGrey(Capture.load(OCRTest.class, "full.png"));
        str = l.recognize(i, 1285, 654, 1343, 677, l.getSymbols("font_1"));
        System.out.println(str);
    }
}

Profitez d'une API simple et conviviale :)

11voto

dukedave Points 3496

Si vous êtes à la recherche d'une option très extensible ou si vous avez un domaine de problème spécifique, vous pouvez envisager de déployer votre propre option en utilisant l'outil de gestion de l'environnement de l'utilisateur. Moteur neuronal orienté objet Java . Un autre JOONE référence.

Je l'ai utilisé avec succès dans un projet personnel pour identifier la lettre à partir d'une image telle que este Vous pouvez trouver toutes les sources du composant OCR de mon application sur github, aquí .

1 votes

Ooh, merci pour l'exemple. Je l'ai téléchargé et je compte l'adapter à mes propres besoins !

0 votes

Pouvez-vous me montrer comment compiler ?

0 votes

J'ai bien peur que le projet ne soit plus maintenu @RadijatoR, je ne peux donc pas vous donner de conseils.

11voto

Vish Points 353

Nous avons testé quelques moteurs OCR avec Java comme Tesseract, Asprise, Abbyy, etc. Dans notre analyse, Abbyy a donné les meilleurs résultats.

1 votes

API Java ou implémentations Java ?

0 votes

Ni l'un ni l'autre mais il existe une version en ligne de commande à laquelle vous pouvez vous adresser en utilisant ProcessBuilder .

1 votes

Ni Tesseract ni Abbyy ne sont basés sur Java. Ils ont simplement des API pour Java.

3voto

jitter Points 35805

Je viens de trouver celui-ci (je ne le connais pas, il n'a pas été testé, vérifiez vous-même).

Ron Cemer Java OCR


Comme vous n'en avez besoin que par curiosité, vous pouvez chercher la source de cette applet.

Il effectue la reconnaissance optique de caractères manuscrits à l'aide d'un réseau neuronal.

Java OCR : reconnaissance de l'écriture manuscrite

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X