Ich entwickle eine Anwendung, die ich Tesseract OCR verwenden, um einen Text in einem Bild zu erkennen. Ich habe es für Englisch und Japanisch getestet und es funktioniert gut, aber wenn ich arabisch versuchte, stürzte die Anwendung ab, bevor ich überhaupt startete! Warum?Tesseract erkennt arabischen Text in Android
Was ist los mit der arabischen Sprache und Tesseract OCR? Kann mir das bitte jemand sagen?
Code:
public class MainActivity extends AppCompatActivity {
Bitmap image;
private TessBaseAPI mTess;
String datapath = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//init image
image = BitmapFactory.decodeResource(getResources(), R.drawable.test_ara);
//initialize Tesseract API
String language = "ra";
datapath = getFilesDir()+ "/tesseract/";
mTess = new TessBaseAPI();
checkFile(new File(datapath + "tessdata/"));
mTess.init(datapath, language);
}
public void processImage(View view){
String OCRresult = null;
mTess.setImage(image);
OCRresult = mTess.getUTF8Text();
TextView OCRTextView = (TextView) findViewById(R.id.OCRTextView);
OCRTextView.setText(OCRresult);
}
private void checkFile(File dir) {
if (!dir.exists()&& dir.mkdirs()){
copyFiles();
}
if(dir.exists()) {
String datafilepath = datapath+ "/tessdata/ara.traineddata";
File datafile = new File(datafilepath);
if (!datafile.exists()) {
copyFiles();
}
}
}
private void copyFiles() {
try {
String filepath = datapath + "/tessdata/ara.traineddata";
AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("tessdata/ara.traineddata");
OutputStream outstream = new FileOutputStream(filepath);
byte[] buffer = new byte[1024];
int read;
while ((read = instream.read(buffer)) != -1) {
outstream.write(buffer, 0, read);
}
outstream.flush();
outstream.close();
instream.close();
File file = new File(filepath);
if (!file.exists()) {
throw new FileNotFoundException();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Der Fehler Ich habe:
04-16 18:37:08.451 7405-7405/com.imperialsoupgmail.tesseractexample A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 7405 (esseractexample)
Veröffentlichen Sie den genauen Fehlertext, wenn es abstürzt. – sashoalm
@ashoalm hat es gerade gepostet. –