2016-12-29 14 views
0

Я новичок в библиотеке tess-two. Я могу добавить, что библиотека и получая изображение из вытяжки и его даже преобразования, но я получаю неправильный текст, как показано ниже:распознавание текста неправильного текста

Вот мой полный код:

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_image); 

    //initialize Tesseract API 
    String language = "eng"; 
    datapath = getFilesDir()+ "/tesseract/"; 
    mTess = new TessBaseAPI(); 

    checkFile(new File(datapath + "tessdata/")); 

    mTess.init(datapath, language); 
} 

private void checkFile(File file) { 
    if (!file.exists()&& file.mkdirs()){ 
     copyFiles(); 
    } 
    if(file.exists()) { 
     String datafilepath = datapath+ "/tessdata/eng.traineddata"; 
     File datafile = new File(datafilepath); 

     if (!datafile.exists()) { 
      copyFiles(); 
     } 
    } 
} 


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 copyFiles() { 
    try { 
     String filepath = datapath + "/tessdata/eng.traineddata"; 
     AssetManager assetManager = getAssets(); 

     InputStream instream = assetManager.open("tessdata/eng.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(); 
    } 
} 

Я получение текста, как:

mmmm.and, ттт, 1111 и т.д.

Любая помощь приветствуется.

+0

, что вы пытаетесь сделать? означает ожидаемый выход? – Saranjith

+0

Мое изображение содержит некоторый текст, например, – sanjana

+0

Можете ли вы, пожалуйста, обновить это изображение, и все – Saranjith

ответ

0

Возможных Isuues, которые могут иметь:

  1. Некорректного OCR-эд текст
  2. Добавить ключевые слова в данном обучении Следуйте учебник Tesseract Tutorial Page
+0

Я следил за тем же учебником. Я могу получить текст так же, как и тот, когда я использовал это изображение, т. Е. Abc .... я изменил изображение .I получить неправильный текст ... тогда ... вот проблема .. – sanjana

+0

folow my replay: D И не могли бы вы попробовать использовать шрифт Times New Roman и Arial во входном изображении. – Saranjith

1

Я была такая же проблема. Это исправлено 2 минуты назад, вы должны изменить размер изображения до большего размера. Я использовал thumbnailator библиотеку, чтобы сделать работу:

BufferedImage bigger = Thumbnails.of(oldImage).size(700, 500).asBufferedImage(); 

Я надеюсь, что это помогает и извиниться за мой ужасный английский язык.

Примечание: более подробная информация об изменении размера here