2016-12-29 48 views
0

我是tess-two庫的新手。我可以添加從繪製其甚至將這個庫和獲取圖像,但我下面讓錯誤的文字:OCR文本識別錯誤文本顯示

這裏是我的完整代碼:

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,MMM,1111等

任何幫助表示讚賞。

+0

您正在嘗試做什麼?意味着預期產出? – Saranjith

+0

我的圖像包含一些文字喜歡, – sanjana

+0

可以請更新與該圖像和所有 – Saranjith

回答

0

可能有可能Isuues:

  1. 不正確的OCR-ED文本
  2. 添加關鍵字在你的訓練數據 按照教程Tesseract Tutorial Page
+0

我遵循相同的教程。我能夠得到相同的文字,當我使用該圖像,即ABC ...我改變了圖像。我得到錯誤的文字...然後...多數民衆贊成的問題.. – sanjana

+0

以下是我的重播:D請問您可以嘗試在輸入圖像中使用Times New Roman和Arial字體。 – Saranjith

1

我有同樣的問題。它在2分鐘前修復了它,您必須將圖像調整爲更大的尺寸。我用thumbnailator庫做的工作:

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

我希望它可以幫助和我的可怕的英語道歉。

注意:有關調整大小的更多信息here