2016-06-10 53 views
11

識別文本,我需要使用pytesseract從這張照片中提取文本: enter image description here使用pytesseract從圖像

,代碼:

from PIL import Image, ImageEnhance, ImageFilter 
import pytesseract 
path = 'pic.gif' 
img = Image.open(path) 
img = img.convert('RGBA') 
pix = img.load() 
for y in range(img.size[1]): 
    for x in range(img.size[0]): 
     if pix[x, y][0] < 102 or pix[x, y][1] < 102 or pix[x, y][2] < 102: 
      pix[x, y] = (0, 0, 0, 255) 
     else: 
      pix[x, y] = (255, 255, 255, 255) 
img.save('temp.jpg') 
text = pytesseract.image_to_string(Image.open('temp.jpg')) 
# os.remove('temp.jpg') 
print(text) 

和 「temp.jpg」 是enter image description here

不錯,但打印結果爲,2 WW 不是正確的文字2HHH,那麼我該如何刪除這些黑點?

回答

15

這裏是我的解決方案:

import pytesseract 
from PIL import Image, ImageEnhance, ImageFilter 

im = Image.open("temp.jpg") # the second one 
im = im.filter(ImageFilter.MedianFilter()) 
enhancer = ImageEnhance.Contrast(im) 
im = enhancer.enhance(2) 
im = im.convert('1') 
im.save('temp2.jpg') 
text = pytesseract.image_to_string(Image.open('temp2.jpg')) 
print(text) 
+0

嗨,當我使用此代碼我收到以下錯誤:「UnicodeEncodeError:‘字符映射’編解碼器不能在11-12位編碼的字符:C haracter映射到「。你可以建議一種方法來結束這個 – MAK

+0

@MAK你將需要安裝win-unicode控制檯在你的windows上 –

+0

它返回一個空字符串... – Ray