[英]Android OCR Using Tesseract
I am trying to built an OCR Application in android using Tesseract Library. 我正在尝试使用Tesseract Library在android中构建一个OCR应用程序。
Here is the code attached: 这是附加的代码:
public class TessOCR {
private TessBaseAPI mTess;
public TessOCR() {
// TODO Auto-generated constructor stub
mTess = new TessBaseAPI();
String datapath = Environment.getExternalStorageDirectory() + "/tesseract/";
String language = "sseg";
File dir = new File(datapath + "tessdata/");
if (!dir.exists())
dir.mkdirs();
mTess.init(datapath, language);
}
public String getOCRResult(Bitmap bitmap) {
mTess.setImage(bitmap);
String result = mTess.getUTF8Text();
return result;
}
public void onDestroy() {
if (mTess != null)
mTess.end();
}
When I am calling new TessOCR()
in my MainAcitivity It gives me the error 当我在
new TessOCR()
调用new TessOCR()
,它给了我错误
09-02 16:10:56.677 14225-14225/com.example.pulkitmital.swipetabtoolbar E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.pulkitmital.swipetabtoolbar, PID: 14225 java.lang.IllegalArgumentException: Data path must contain subfolder tessdata!
09-02 16:10:56.677 14225-14225 / com.example.pulkitmital.swipetabtoolbar E / AndroidRuntime:FATAL EXCEPTION:main进程:com.example.pulkitmital.swipetabtoolbar,PID:14225 java.lang.IllegalArgumentException: 数据路径必须包含子文件tessdata! at com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:344) at com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:317) at com.example.pulkitmital.swipetabtoolbar.TessOCR.(TessOCR.java:22) at com.example.pulkitmital.swipetabtoolbar.Tab1.doOCR(Tab1.java:326) at com.example.pulkitmital.swipetabtoolbar.Tab1.access$000(Tab1.java:42) at com.example.pulkitmital.swipetabtoolbar.Tab1$3.onClick(Tab1.java:168) at android.view.View.performClick(View.java:4785) at android.view.View$PerformClick.run(View.java:19884) at android.os.Handler.handleCallback(Handler.java:746) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5343) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700
com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:344)at com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:317)at com.example.pulkitmital.swipetabtoolbar.TessOCR。( TessOCR.java:22)位于com.example的com.example.pulkitmital.swipetabtoolbar.Tab1.access $ 000(Tab1.java:42)的com.example.pulkitmital.swipetabtoolbar.Tab1.doOCR(Tab1.java:326)。在Android.view.View $ PerformClick.run(View.java:19884)的android.view.View.performClick(View.java:4785)上的pulkitmital.swipetabtoolbar.Tab1 $ 3.onClick(Tab1.java:168)。 os.Handler.handleCallback(Handler.java:746)位于android.app.AtoT.Thread.main的android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java:135) (ActivityThread.java:5343)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .run(ZygoteInit.java:905)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700 )
)
But the folder is already there. 但文件夹已经存在。
Please help me to get rid of this problem. 请帮我摆脱这个问题。
Replace this line : 替换此行:
mTess.init(datapath, language);
with : 用:
mTess.init(datapath + "tessdata/", language);
Basically Error is due to I forget to add permission to read from external storage in manifest file. 基本上错误是由于我忘记添加从清单文件中的外部存储读取的权限。
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
Just Add this line to your AndroidManifest and it will get resolved. 只需将此行添加到AndroidManifest即可解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.