2016-06-10 5 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:„CharMap“кодек не может кодировать символы в позиции 11-12: с haracter карты в ". вы можете предложить способ преодолеть это – MAK

+0

@MAK Вам нужно будет установить win-unicode-консоль на свои окна. –

+0

возвращает пустую строку ... – Ray