質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Tesseract

Tesseractは、Googleが提供しているオープンソースのOCRエンジンです。機械学習があり60以上の言語に対応でき、日本語の文字認識も可能です。さらに精度を上げることもできます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Android NDK

Android NDKとは、Android SDKと対を成すツールです。ネイティブコードのアプリ、またはC/C++言語の既存のポートライブラリでパフォーマンスクリティカルな部分を構築できます。ヘッダ、ライブラリを提供して、アクティビティやユーザ入力処理などを構築できます。

Q&A

解決済

1回答

4037閲覧

TessBaseAPIにおける強制終了の原因を教えてほしい

ehyai

総合スコア43

Tesseract

Tesseractは、Googleが提供しているオープンソースのOCRエンジンです。機械学習があり60以上の言語に対応でき、日本語の文字認識も可能です。さらに精度を上げることもできます。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Android NDK

Android NDKとは、Android SDKと対を成すツールです。ネイティブコードのアプリ、またはC/C++言語の既存のポートライブラリでパフォーマンスクリティカルな部分を構築できます。ヘッダ、ライブラリを提供して、アクティビティやユーザ入力処理などを構築できます。

0グッド

0クリップ

投稿2016/10/30 13:46

編集2016/10/30 16:29

###前提・実現したいこと
現在、Android Studioで画像から文字を読み込むアプリケーションの制作を行っています。以下の二種類のサイトを参考にしてAndroid Studioでtesseractを用いて画像認識を行う方法を調べ、一行目のサイトのプログラムを見ながら自分でプログラムを書きました。
JSA Technology Blog AndroidでTesseractを使用する その2 文字認識編
DesignAssembler 備忘録に近い Androidでtesseractを使う(準備)
しかし、デバッグを行うと、途中で強制終了してしまいます。その原因がわからないため、この問題を解決するために力を貸していただけたらと思います。よろしくお願いします。ちなみに、プロジェクト名は「Kenkyu1」です。
###発生している問題・エラーメッセージ
自分のAndroidをパソコンにつなげ、実機を用いて下記のソースコードのプログラムをデバッグしたところ、「TessBaseAPI tessOCRAPI = new TessBaseAPI();」のところでプログラムが強制終了してしまいます。
自分はまだAndroid Studioに疎く、どのあたりがエラーなのかがいまいちわからないのですが、「超初心者のAndroidアプリ開発ノート 83日目 AndroidStudio Logcatでエラーの原因を探る!今日はlogcatの出し方」のサイトを参考にして、この辺りがエラーの書かれている部分ではないかと思います。どの行にエラーに関する文が含まれるのかに関しても教えていただけたらと思います。個人情報の含まれる部分は「***」で隠して表示しています。

10-30 17:13:20.040 16642-16642/com.example.***.kenkyu1 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.***.kenkyu1, PID: 16642 java.lang.UnsatisfiedLinkError: Couldn't load jpgt from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.***.kenkyu1-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.***.kenkyu1-1, /vendor/lib, /system/lib]]]: findLibrary returned null at java.lang.Runtime.loadLibrary(Runtime.java:358) at java.lang.System.loadLibrary(System.java:526) at com.googlecode.tesseract.android.TessBaseAPI.<clinit>(TessBaseAPI.java:44) at com.example.***.kenkyu1.MainActivity.onCreate(MainActivity.java:47) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:212) at android.app.ActivityThread.main(ActivityThread.java:5151) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) at dalvik.system.NativeStart.main(Native Method)

###コード
個人情報の含まれる部分は「***」で隠して表示しています。

「MainActivity.java」

java

1package com.example.***.kenkyu1; 2 3import android.graphics.Bitmap; 4import android.graphics.BitmapFactory; 5import android.os.Environment; 6import android.support.design.widget.FloatingActionButton; 7import android.support.v7.app.AppCompatActivity; 8import android.os.Bundle; 9import android.support.v7.widget.Toolbar; 10import android.util.Log; 11import android.widget.ImageView; 12 13import java.io.File; 14 15import com.googlecode.tesseract.android.TessBaseAPI; 16 17public class MainActivity extends AppCompatActivity { 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 23 24 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 25 setSupportActionBar(toolbar); 26 27 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 28 29 Bitmap bitmap = null; //画像表示用 30 String storagePath = Environment.getExternalStorageDirectory().getPath(); //ストレージのパス取得 31 32 //read an image 33 File dir = new File(storagePath+"/DCIM/Camera/"); 34 File file = new File(dir.getAbsolutePath()+"/test.jpg"); 35 ImageView img = new ImageView(this); 36 37 if(file.exists()){ 38 bitmap = BitmapFactory.decodeFile(file.getPath()); 39 bitmap = bitmap.copy(Bitmap.Config.ARGB_8888,true); 40 img.setImageBitmap(bitmap); 41 }else{ 42 Log.d("tess-two","File not found."); 43 return; 44 } 45 46 // Init modules 47 TessBaseAPI tessOCRAPI = new TessBaseAPI(); //ここでおかしくなる 48 tessOCRAPI.init(storagePath+"/tess-two/", "eng"); //もしかしたらこっちの可能性もある? 49 50 // Set Image 51 tessOCRAPI.setImage(bitmap); 52 String recognizedText = tessOCRAPI.getUTF8Text(); 53 54 Log.d("tess-two",recognizedText); 55 System.out.println("文字="+ recognizedText); //この箇所で文字を認識できているか確かめる 56 57 // Close OCR API 58 tessOCRAPI.end(); 59 60 61 } 62}

「active_main.xnl」

xml

1<?xml version="1.0" encoding="utf-8"?> 2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 tools:context="com.example.***.kenkyu1.MainActivity"> 12 13 <android.support.design.widget.FloatingActionButton 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:clickable="true" 17 app:fabSize="mini" 18 app:srcCompat="@android:color/holo_green_light" 19 android:id="@+id/fab" 20 android:layout_marginEnd="16dp" 21 android:layout_marginBottom="91dp" 22 android:layout_alignParentBottom="true" 23 android:layout_alignParentEnd="true" /> 24 25 <android.support.v7.widget.Toolbar 26 android:layout_width="match_parent" 27 android:layout_height="wrap_content" 28 android:background="?attr/colorPrimary" 29 android:theme="?attr/actionBarTheme" 30 android:minHeight="?attr/actionBarSize" 31 android:id="@+id/toolbar" 32 android:layout_alignParentTop="true" 33 android:layout_alignParentStart="true" /> 34 35 <TextView 36 android:layout_width="wrap_content" 37 android:layout_height="wrap_content" 38 android:text="Hello World!" 39 android:id="@+id/textView" 40 android:layout_marginTop="19dp" 41 android:layout_below="@+id/toolbar" 42 android:layout_alignParentStart="true" /> 43</RelativeLayout>

###補足情報(言語/FW/ツール等のバージョンなど)
Androidバージョン=4.4.2
Android studio Version=2.2.1

android SDK Location = C:\Users*\AppData\Local\Android\Sdk
JDK Location = C:\Program Files\Java\jdk1.8.0_101
android NDK Location = C:\Users*
\AppData\Local\Android\Sdk\ndk-bundle

jniLibsディレクトリとassetsディレクトリは元々は存在していなかったので、自分で作りました。
classes.jarはすでにAdd as Libraryに追加してあります。
自分のAndroidの内部ストレージ内に「tess-two」というディレクトリを作り、その中に、OCRの事前知識のデータである「eng.traineddata」と「jpn.traineddata」を入れてあります。
以下、プロジェクトの構成です。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

申し訳ありません、自己解決いたしました。

新たに同じようなプログラムのプロジェクトを作り直し、また、元々はAndroid内の「tess-two」ディレクトリ内に直接「eng.traineddata」と「jpn.traineddata」を入れてあったのを、「tess-two」内に「tessdata」ディレクトリを作り、その中に「eng.traineddata」と「jpn.traineddata」を入れるようにしたら、無事にTessBaseAPIもtessOCRAPI.initのところでも強制終了せずに済み、プログラムも最後まで正しく動作いたしました。

投稿2016/10/31 20:01

ehyai

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問