2014-05-19 3 views
0

ocr imageComment remplir le texte de contour par PIL à l'aide de tesseract?

Salut, je veux ocr cette image en utilisant PIL et Tesseract, généralement il fonctionne très bien, malgré le nombre de lignes comme 1148 dans cette image, Tesseract ne pouvait pas le reconnaître. Donc, je veux utiliser PIL pour remplir le texte de contour 1148 à un texte solide, mais je ne sais pas comment le faire. Toute aide serait appréciée. S'il vous plaît.

Et voici mon code:

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 

Répondre

1

Vous pouvez essayer la fonction expérimentale floodfill() dans ImageDraw.

Si vous pouvez trouver quelques points à l'intérieur des chiffres, utilisez quelque chose comme ceci:

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 

En plus du blanc, il y a un peu de bleu et jaune dans les chiffres, il peut être préférable de remplir à frontière noire:

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

Merci, j'avais déjà ignoré ce problème, donc je n'ai pas répondu rapidement. – Tivon

Questions connexes