2016-03-05 49 views
0

我正在實施OCR系統。 Tesseract API用於提取。圖像在提取文本之前使用OpenCV進行預處理。在預處理灰度化下,進行銳化和自適應閾值處理。在提取圖像中的文本後,獲得以下輸出。Tesseract不清楚的文本提取

期望輸出

Let's talk ;-) 

輸出後獲得了

" yr _ W??? V. ? _ 
W fag '7? |g§3:? V 
é claw?! 

是否有人知道這樣做的原因? 我編輯了這個問題,採取了不同的路徑來實現我的項目。我輸入一個圖像,並使用opnCV來銳化圖像。這是輸入圖像。 input image

然後我得到了以下輸出。 Sharpened output image。當我使用Tesseract Api的銳化圖像時,它提供了字符混合。但是,如果我將輸入圖像提供給Tesseract API,則它會正確提取單詞。如何去除銳化圖像中的陰影區域?

這是我用鋒利的輸入圖像

try { 
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
      Mat source = Imgcodecs.imread("input.jpg", 
        Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); 
      Mat destination = new Mat(source.rows(), source.cols(), source.type()); 

      Imgproc.equalizeHist(source, destination); 
      Imgcodecs.imwrite("sharpen.jpg", destination); 

     } catch (Exception e) { 
      System.out.println("error: " + e.getMessage()); 
     } 
+0

什麼是輸入圖像? – Ferrybig

+0

這是一個帶有文本的jpg圖像讓我們來談談;-) –

+0

我嘗試在Java項目中使用tesseract從我們網站上的圖像中提取文本。我得到了混合的結果,我們使用的圖像通常是500 x 500像素。 – neal

回答

1

好代碼,你應該爲我們提供至少輸入圖像,這樣我們就可以更好地看到,是什麼問題。但是從預期和實際產出看出,你的輸入圖像的掃描很不好,所以有可能是幾個可能的(最常見)的問題吧:

  • 你的輸入圖像可旋轉太多(甚至可以旋轉90度左右(我有這個問題,當android手機拍攝的照片轉過90度,掃描結果非常糟糕時),Tesseract無法識別扭曲並旋轉圖像。
  • 圖像中的字符分辨率太小(嘗試使它們至少爲10-12像素,在此之下,掃描輸出將顯着下降,分辨率越高,掃描越快且越準確(處理對於更大分辨率的圖像,取決於你如何做,將會變得更慢,所以應該有一些平衡)
  • 圖像可能太模糊,所以可以識別字母炮
  • 字母與陰影或其他物體,太暗或受環境影響太大

您應該向我們提供您的輸入圖像以及如何處理它,它會更容易找到你的問題,所以如果可能的話,請與我們分享。

+0

我編輯了我的問題。可以請檢查一下嗎? –