2016-06-10 19 views
11

tôi cần phải sử dụng pytesseract để trích xuất văn bản từ hình ảnh này: enter image description heresử dụng pytesseract để nhận văn bản từ hình ảnh

và mã:

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) 

và "temp.jpg" là enter image description here

Không tệ, nhưng kết quả in là ,2 WW Không phải là văn bản bên phải 2HHH, vậy làm thế nào tôi có thể xóa các chấm đen đó?

Trả lời

15

Đây là giải pháp của tôi:

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

Hi, khi tôi sử dụng mã này tôi đang nhận được dưới đây thông báo lỗi "UnicodeEncodeError: 'charmap' codec có thể không mã hóa ký tự ở vị trí 11-12: c bản đồ haracter để ". bạn có thể đề nghị một cách để vượt qua này – MAK

+0

@ MAK Bạn sẽ cần phải cài đặt win-unicode-console trên cửa sổ của bạn –

+0

nó trả về một chuỗi rỗng ... – Ray

Các vấn đề liên quan