web-dev-qa-db-ja.com

画像からテキストを抽出する方法Androidアプリ

Androidアプリの機能に取り組んでいます。画像からテキストを読み取り、そのテキストをデータベースに保存したいと思います。OCRを使用するのが最善の方法ですか?別の方法はありますか?Googleそのドキュメントで、NDKは厳密に必要な場合にのみ使用する必要があると示唆していますが、正確には何が問題ですか?

どんな助けでも素晴らしいでしょう。

Image to be OCR'd

enter image description here

enter image description here

enter image description here

13
MrAnderson1992

あなたは画像をテキストに変換するためにグーグルビジョンライブラリを使うことができます、それは画像からより良い出力を与えるでしょう。以下のライブラリをビルドグラドルに追加します。

   compile 'com.google.Android.gms:play-services-vision:10.0.0+'

    TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build();

Frame imageFrame = new Frame.Builder()

        .setBitmap(bitmap)                 // your image bitmap
        .build();

String imageText = "";


SparseArray<TextBlock> textBlocks = textRecognizer.detect(imageFrame);

for (int i = 0; i < textBlocks.size(); i++) {
    TextBlock textBlock = textBlocks.get(textBlocks.keyAt(i));
    imageText = textBlock.getValue();                   // return string
}
13
user7176550

画像からのテキストは、Firebase Machine Learning(ML)キットを使用して抽出できます。テキスト認識APIには、オンデバイスAPI(無料)とオンクラウドAPIの2つのバージョンがあります。

APIを使用するには、最初に画像のビットマップを作成します。次に、ビットマップオブジェクトを渡してFirebaseVisionImageオブジェクトを作成します。

FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);

次に、FirebaseVisionTextRecognizerオブジェクトを作成します。

FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance()
        .getCloudTextRecognizer();

次に、FirebaseVisionImageオブジェクトをprocessImage()メソッドに渡して、結果のタスクにリスナーを追加し、成功したコールバックメソッドで抽出されたテキストをキャプチャします。

textRecognizer.processImage(image)
                .addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
                    @Override
                    public void onSuccess(FirebaseVisionText firebaseVisionText) {
                       //process success
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                     @Override
                     public void onFailure(@NonNull Exception e) {
                       //process failure
                     }
                 });

Firebase MLテキストレコグナイザーの使用方法を示す完全な例については、 https://www.zoftino.com/extracting-text-from-images-Android を参照してください。

1
Arnav Rao

これから AndroidのOCRReaderの簡単な例 チュートリアル画像からテキストを読み取ることができ、カメラを使用して非常に単純なコードを使用してテキストをスキャンすることもできます。

このライブラリは Mobile Vision Text API を使用して開発されています

カメラからのテキストのスキャン用

OCRCapture.Builder(this)
        .setUseFlash(true)
        .setAutoFocus(true)
        .buildWithRequestCode(CAMERA_SCAN_TEXT);

画像からテキストを抽出する場合

String text = OCRCapture.Builder(this).getTextFromUri(pickedImage);
//You can also use getTextFromBitmap(Bitmap bitmap) or getTextFromImage(String imagePath) buplic APIs from OCRLibrary library.
1
Gunaseelan

別のオプションがあります。画像をサーバーにアップロードし、サーバーからOCRして、結果を取得できます。