web-dev-qa-db-ja.com

OCRを使用して画像ファイルからテキストを読み取るAPI

JavaのOCR(光学文字認識)からサンプルコードまたはAPI名を探しています。これを使用して、画像ファイルから存在するすべてのテキストを抽出できます。以下のコードを使用しています。

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

Tess4j または TesseractのJavaCPPプリセット を試すことができます。私は前者よりも簡単であるとして、後で好みます。 pomに依存関係を追加します `

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

`コーディングが簡単

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は、特定のVC++再配布可能パッケージをインストールする必要があるため、少し複雑です。

10
nav3916872

Sourceforgeでjavaocrを試すことができます: http://javaocr.sourceforge.net/

Encogを使用するアプレットの素晴らしい例もあります: http://www.heatonresearch.com/articles/42/page1.html

そうは言っても、OCRには多くのパワーが必要です。したがって、使用頻度が高い場合は、Cで記述されたOCRライブラリを確認し、Javaと統合する必要があります。

OCRは難しいです。そのため、自分自身で冒険する前に、必ずニーズを満たしてください。

Tesseractとopencv(たとえば、統合のためのjavacvを使用)が一般的な選択肢です。 ABBYY FineReader EngineABBYY Cloud OCR SDK などの商用ソリューションもあります。

7
zenbeni

OCR用のオープンソースOCRエンジンは、Googleから入手できます。 CMDを使用して処理できます。 Webアプリケーションでは、Javaを使用してCMDを簡単に処理できます。
をご覧ください https://www.youtube.com/watch?v=Mjg4yyuqr5E CMDを使用してOCRを処理するための詳細な手順を取得します。

2
Jinu Jawad