2014-05-19 94 views
0

ocr image如何通過PIL填充輪廓文本以使用tesseract?

嗨,我想用PIL和正方體到OCR這一形象,通常它工作得很好,儘管在此圖像中像1148的輪廓數,正方體不能識別它。所以我想用PIL將輪廓文本1148填充爲純文本,但我不知道如何去做。任何幫助,將不勝感激。請。

這是我的代碼:

api = tesseract.TessBaseAPI() 
api.Init(".","eng",tesseract.OEM_DEFAULT) 
api.SetVariable("tessedit_char_whitelist", ".") 
api.SetPageSegMode(tesseract.PSM_AUTO 
pic = ImageGrab.grab((120,90,180,650)) 
pic = pic.filter(ImageFilter.CONTOUR) 
pic.save("321.png") 
mImgFile = "321.png" 
mBuffer=open(mImgFile,"rb").read() 
result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api) 
print result 

回答

1

您可以嘗試在ImageDraw實驗floodfill()功能。

如果你能找出個數字裏面的一些點,使用它是這樣的:

from PIL import ImageColor, ImageDraw 
draw = ImageDraw.Draw(pic) 

point_inside_digit = (some_x, some_y) 

ImageDraw.floodfill(im, point_inside_digit, ImageColor.getrgb("black")) 

del draw 

除了白色還有一些藍色和黃色的數字,所以它可能是更好的填寫黑色邊框:

ImageDraw.floodfill(
    im, point_inside_digit, ImageColor.getrgb("black"), 
    border=ImageColor.getrgb("black")) 
+0

謝謝,我之前跳過這個問題,所以沒有很快回復。 – Tivon