3

私は多くの調査を行いましたが、これに適した解決策は見つかりませんでした。AndroidOCRアプリをプログラミングしています。私はすでにTesseractとLeptonicaを正常にロードしており、画像の取得と処理、およびOCRを使用したテキストへの変換に成功しています。ただし、認識精度はあまり良くありません。

多くの調整を行った後、OCR処理でTesseractを支援するのに十分な画像のフィルタリング、クリーニング、および/またはデスキューが行われていないことがわかりました。したがって、私はインターネットで自分に役立つライブラリやコードを探し、Androidでそれを使用しても無駄になりました。

誰かがライブラリを知っているか、これを達成するのに役立つコードを私に提供できますか?私が欲しいのは、ビットマップを取得し、それを白黒に変換し、デスキューし、および/またはいくつかのフィルタリングタスクを実行し、OCRを使用してテキストに変換するためにTesseractに渡すことです。

4

2 に答える 2

3

ImageMagickはそれを行うことができます。コマンドライン:

convert                              \
    input.{png,pdf,tif,jpeg,gif,...} \
   -colorspace grayscale             \
   -threshold 50%                    \
   -deskew                           \
    output.{png,pdf,tif,jpeg,gif,...}

-colorspace grayscale:色付きの入力の処理にも役立ちます。
-threshold 50%:パーセンテージ値で遊んでください-しかし、基本的には黒+白のみに変換されます。
-deskews:deskews

ただし、Androidプラットフォーム用にImageMagickを構築するのがどれほど簡単か難しいかはわかりません。Linux、Mac OS X、Windows、Solaris、HP-UXなどで利用できます。つまり、とにかく設計上マルチプラットフォームです。

于 2012-08-25T00:55:14.287 に答える
1

以下のアプローチを使用して画像を白黒に変換しました。これにより、精度が大幅に向上しました。

    private Bitmap GetBinaryBitmap(Bitmap bitmap_src) {
    Bitmap bitmap_new = bitmap_src.copy(bitmap_src.getConfig(), true);

    for (int x = 0; x < bitmap_new.getWidth(); x++) {
        for (int y = 0; y < bitmap_new.getHeight(); y++) {
            int color = bitmap_new.getPixel(x, y);
            color = GetNewColor(color);
            bitmap_new.setPixel(x, y, color);
        }
    }

    return bitmap_new;
}


private double GetColorDistance(int c1, int c2) {
    int db = Color.blue(c1) - Color.blue(c2);
    int dg = Color.green(c1) - Color.green(c2);
    int dr = Color.red(c1) - Color.red(c2);

    double d = Math.sqrt(Math.pow(db, 2) + Math.pow(dg, 2) + Math.pow(dr, 2));
    return d;
}

private int GetNewColor(int c) {
    double dwhite = GetColorDistance(c, Color.WHITE);
    double dblack = GetColorDistance(c, Color.BLACK);

    if (dwhite <= dblack) {
        return Color.WHITE;

    } else {
        return Color.BLACK;
    }
}

それが役に立てば幸い。

于 2016-12-31T09:54:16.950 に答える