2017-01-03 15 views
0

Я пытаюсь извлечь текст из png, используя tesseract. Tesseract не извлекает текст в случае следующего png. enter image description hereTesseract OCR для .net не обнаруживает текст, когда белый текст написан на черном прямоугольнике, а граница черного прямоугольника белая?

Черный прямоугольник на изображении имеет белую рамку (что не видно из-за фона веб-сайта). Но в случае, если я удаляю белую границу с прямоугольника, тогда Tesseract способен обнаруживать текст. Есть ли какая-либо работа вокруг этого вопроса?

Кроме того, если уменьшить размер границы, то это извлечь какой-нибудь текст, как:

I (31,04 I

Вот код, который я использую:

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

Pass это изображение путь к TesseractEngine.

+0

Используется этот код, но это не имеет никакого значения. Кроме того, png является черно-белым. Так что я не думаю, что итоговое изображение в оттенках серого ничем не отличается от но я заметил, что если я уменьшу ширину белой границы, то он обнаружит текст как «I (31.04 I». –

+0

Можете ли вы разместить свой код? – Prabu

+0

Я разместил код, пожалуйста, посмотрите. –

0

Google Cloud vision OCR или ocr.space OCR может обрабатывать этот тип белого текста на черном фоне.

В целом они хорошо работают из коробки с текстом даже на «запутанных» фонов, таких как субтитры фильмов. Обратите внимание, что в вашем примере обратите внимание на «.». по-прежнему отсутствует с бесплатным API ocr.space, Google OCR получает это полностью.

enter image description here

+0

Я действительно искал для dll не api, но спасибо за усилия. –