显然,此图像非常清晰,因为它的清晰度很低并且不是真实的单词。但是,使用此代码,我无法检测到任何东西:
import pytesseract from PIL import Image, ImageEnhance, ImageFilter image_name = 'NedNoodleArms.jpg' im = Image.open(image_name) im = im.filter(ImageFilter.MedianFilter()) enhancer = ImageEnhance.Contrast(im) im = enhancer.enhance(2) im = im.convert('1') im.save(image_name) text = pytesseract.image_to_string(Image.open(image_name)) print(text)
输出
, Mdfiaodfiamms
这里有什么想法吗?我的对比功能生成的图像是:
哪个看起来不错?我没有大量的OCR经验。您会在这里建议什么预处理?我尝试过将图像调整为更大的尺寸,这有一点帮助,但还不够,还有一堆来自PIL的不同滤镜。没什么特别接近的
没错,tesseract在更高的分辨率下效果更好,因此有时调整图像大小会有所帮助-但不要转换为1位。
转换为灰度时,我得到了很好的结果,使其变为灰度的3倍,并使字母更亮一些:
>>> im = Image.open('j78TY.png')\ .convert('L').resize([3 * _ for _ in im.size], Image.BICUBIC)\ .point(lambda p: p > 75 and p + 100) >>> pytesseract.image_to_string(im) 'NedNoodleArms'
检查此jupyter笔记本: