2015-07-26 7 views
5

Mam kod używając pytesseract i działa idealnie, tylko nie działają, gdy obraz, który próbuję rozpoznać, to od 0 do 9. Jeśli obraz ma tylko jedną cyfrę, nie daje żadnego wyniku .pytesseract nie działa z jednocyfrowym obrazkiem

Ten przykładowy obrazek pracuję https://drive.google.com/folderview?id=0B68PDhV5SW8BdFdWYVRwODBVZk0&usp=sharing

A to kod używam

import pytesseract 
    varnum= pytesseract.image_to_string(Image.open('images/table/img.jpg')) 
    varnum = float(varnum) 
    print varnum  

Dzięki !!!!

Z tym kodem jestem w stanie odczytać wszystkie numery

import pytesseract 


start_time = time.clock() 
y = pytesseract.image_to_string(Image.open('images/table/1.jpg'),config='-psm 10000') 
x = pytesseract.image_to_string(Image.open('images/table/1.jpg'),config='-psm 10000') 

print y 
print x 

y = pytesseract.image_to_string(Image.open('images/table/68.5.jpg'),config='-psm 10000') 
x = pytesseract.image_to_string(Image.open('images/table/68.5.jpg'),config='-psm 10000') 

print y 
print x 

print time.clock() - start_time, "seconds" 

wynik

>>> 
1 
1 
68.5 
68.5 
0.485644155358 seconds 
>>> 
+0

można spróbować jak - 'varnum = pytesseract.image_to_string (Image.open ('images/tabeli/img.jpg'), config = "- psm 1") '? –

+0

Lub - 'varnum = pytesseract.image_to_string (Image.open ('images/table/img.jpg'), config =" - psm 10 ")'. –

Odpowiedz

6

Trzeba by ustawić tryb segmentacji stronę, aby móc odczytać pojedynczych znaków/cyfr.

Z tesseract-ocr manual (czego pytesseract używa wewnętrznie), można ustawić tryb strona segmentacji użyciu -

-psm N

Set tesseract tylko uruchomić podzbiór analizy układu i przyjąć pewną postać obrazu. Opcjami dla N są:

10 = Traktuj obraz jako pojedynczą postać.

Należy więc ustawić -psm opcja do 10. Przykład -

varnum= pytesseract.image_to_string(Image.open('images/table/img.jpg'),config='-psm 10') 
Powiązane problemy