2017-01-03 111 views
0

我正在嘗試使用tesseract從png中提取文本。在png後面,Tesseract不會提取文本。 enter image description hereTesseract OCR for .net在黑色矩形上寫入白色文本並且黑色矩形的邊框爲白色時未檢測到文本?

圖像中的黑色矩形具有白色邊框(由於網站背景,這是不可見的)。但是,如果我從矩形中刪除白色邊框,則Tesseract能夠檢測文本。是否有任何工作圍繞這個問題?

另外,如果減少的邊框大小則它提取一些文字:

我(31.04我

這裏是我使用的代碼:

using (TesseractEngine ocr = new TesseractEngine(dataPath, "eng", EngineMode.TesseractOnly)) 
      { 
       using (Pix p = Pix.LoadFromFile(filePath)) 
       { 
        using (Pix img = p.Scale(2,3)) 
        { 

         using (var page = ocr.Process(img)) 
         { 

          string text = page.GetText(); 
          Console.WriteLine(text); 
         } 
        } 
       } 

      } 

通過縮放我能夠提取以下文本:

I G1.04 I

但是,如果我增加邊框尺寸,那麼即使縮放圖像也沒有效果。

+0

其實正方體可以檢測文本甚至與白色邊框。這可能是由於其他問題。嘗試將圖像轉換爲灰度並將其傳遞給tesseract – Prabu

回答

0
using AForge.Imaging; 
Grayscale grayFilter = new Grayscale(0.2125, 0.7154, 0.0721); 
Bitmap grImage = grayFilter.Apply(image); 
grImage.Save("./grey_image.png"); 

將此圖片路徑傳遞給您的TesseractEngine。

+0

使用此代碼,但它沒有任何區別。此外,PNG是黑白的。所以,我不認爲結果灰度圖像與任何不同原來的一個。但我注意到,如果我減少白色邊框寬度,那麼它確實檢測到文本爲「我(31.04我」。 –

+0

你可以發佈你的代碼嗎? – Prabu

+0

我已經發布代碼,請看看。 –

0

Google Cloud vision OCRocr.space OCR可以在黑色背景圖像上處理這種類型的白色文本。

一般而言,即使對於像電影字幕這樣的「混淆」背景,它們也能很好地與文本一起使用。請注意,在您的示例中注意「。」仍然缺少免費的ocr.space API,Google OCR完全正確。

enter image description here

+0

我實際上正在尋找對於一個DLL不API,但感謝您的努力。 –

相關問題