2016-09-28 21 views
12

Linux ortamımın üzerine tesseract yükledim. Bentesseract küçük etiketleri alamadı

# tesseract myPic.jpg /output 

gibi bir şey yürütmek zaman

Çalışıyor Ama pic bazı küçük etiket mevcuttur ve teserakt onları görmedim.

Perde veya benzeri bir şey ayarlamak için bir seçenek var mı? metin etiketlerinin

Örnek:

enter image description here

:

bu pic ile enter image description here

, teserakt Ama bu pic ile ...

herhangi bir değer tanımıyor Aşağıdaki çıktıya sahibim:

J8 

J7A-J7B P7 \ 

2 
40 50 0 180 190 

200 

P1 P2 7 

110 110 
\ l 

Örneğin, bu durumda, (üst solda) 90 tesseract görmez ...

Bunu sadece tanımlamak veya hayır, böyle somethink için bir seçenek olduğunu düşünüyorum?

Thx

Tesseract (yanı sıra herhangi bir OCR motoru) kesin sonuç almak için

cevap

5

bu yazı benim cevap görülebileceği gibi bazı kurallara uymak gerekir: Burada Junk results when using Tesseract OCR and tess-two

bunun özü olduğu: 300 DPI asgari

  • kullanımı (gerekirse), yüksek çözünürlüklü görüntü

  • herhangi çarpıklık varsa, kodda görüntüyü düzeltmek gerekir öncesinde iyi sonuçlar elde yardımcı olacak bir sözlük kullanın

  • ocr için görüntüde hiç gölge veya virajlı emin olduğunu olun

  • metin boyutu ayarlama

  • binarize görüntüsü (12 punto idealdir) ve gürültü

  • kaldırmak için görüntü işleme algoritmaları kullanmak
Ayrıca bu linkte görüldüğü gibi daha iyi sonuçlar almak için OCR motoru eğitim biraz zaman harcamak önerilir

: Training Tesseract

Sana paylaşılan ve kullanma üzerlerinde bazı görüntü işleme ran 2 görüntüleri aldı LEADTOOLS SDK (yasal uyarı: Bu şirketin bir çalışanıyım) ve işlenmiş görüntülerle aldığınızdan daha iyi sonuçlar elde edebildi, ancak orijinal görüntüler en büyük değil -% 100 değildi.İşte

//initialize the codecs class 
using (RasterCodecs codecs = new RasterCodecs()) 
{ 
    //load the file 
    using (RasterImage img = codecs.Load(filename)) 
    { 
     //Run the image processing sequence starting by resizing the image 
     double newWidth = (img.Width/(double)img.XResolution) * 300; 
     double newHeight = (img.Height/(double)img.YResolution) * 300; 
     SizeCommand sizeCommand = new SizeCommand((int)newWidth, (int)newHeight, RasterSizeFlags.Resample); 
     sizeCommand.Run(img); 

     //binarize the image 
     AutoBinarizeCommand autoBinarize = new AutoBinarizeCommand(); 
     autoBinarize.Run(img); 

     //change it to 1BPP 
     ColorResolutionCommand colorResolution = new ColorResolutionCommand(); 
     colorResolution.BitsPerPixel = 1; 
     colorResolution.Run(img); 

     //save the image as PNG 
     codecs.Save(img, outputFile, RasterImageFormat.Png, 0); 
    } 
} 

bu süreçten çıkış görüntüler: Sadece aşağıdaki şekilde görüntüleri düzeltmek için kullanılan koddur cevap için

image1 processed image2 processed

+0

Thx ama neden olamaz tüm etiketleri tanıyın, ikinci görüntüdeki sol üstte 90, örneğin okunması kolay görünüyor – Paul

+0

Daha iyi sonuçlar elde etmek için motoru eğitmeniz veya daha iyi bir başlangıç ​​görüntüsü kullanmanız için muhtemelen pikselleri enterpoze etmek ve yeniden boyutlandırmak için. – hcham1

+0

Dava için kullanılacak en iyi segmentasyon yöntemi nedir? – Paul