Androidアプリの機能に取り組んでいます。画像からテキストを読み取り、そのテキストをデータベースに保存したいと思います。OCRを使用するのが最善の方法ですか?別の方法はありますか?Googleそのドキュメントで、NDKは厳密に必要な場合にのみ使用する必要があると示唆していますが、正確には何が問題ですか?
どんな助けでも素晴らしいでしょう。
あなたは画像をテキストに変換するためにグーグルビジョンライブラリを使うことができます、それは画像からより良い出力を与えるでしょう。以下のライブラリをビルドグラドルに追加します。
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
}
画像からのテキストは、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 を参照してください。
これから 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.
別のオプションがあります。画像をサーバーにアップロードし、サーバーからOCRして、結果を取得できます。