Tesseract OCR for .net在黑色矩形上写入白色文本并且黑色矩形的边框为白色时未检测到文本?

问题描述:

我正在尝试使用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

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

我已经发布代码,请看看。 –

Google Cloud vision OCRocr.space OCR可以在黑色背景图像上处理这种类型的白色文本。

一般而言,即使对于像电影字幕这样的“混淆”背景,它们也能很好地与文本一起使用。请注意,在您的示例中注意“。”仍然缺少免费的ocr.space API,Google OCR完全正确。

enter image description here

+0

我实际上正在寻找对于一个DLL不API,但感谢您的努力。 –