使用Python和Tesseract OCR解决验证码

时间:2018-08-02 23:42:17

标签: python tesseract

我不打算发送垃圾邮件,此外Google还使reCaptcha取代了验证码。我将其作为一个项目来学习有关OCR的更多信息,并最终了解神经网络。

所以我有一个来自Captcha的图像,我已经取得了适度的进步,但是关于tesseract的文档并没有得到很好的记录。这是我到目前为止的代码,结果如下。

from selenium import webdriver
from selenium.webdriver.common import keys
import time
import random
import pytesseract
from pytesseract import image_to_string 
from PIL import Image, ImageEnhance, ImageFilter 


def ParsePic():
    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
    im = Image.open("path\\screenshot.png") 
    im = im.filter(ImageFilter.CONTOUR)
    im = im.filter(ImageFilter.DETAIL)
    enhancer = ImageEnhance.Contrast(im)
    im = enhancer.enhance(4)
    im = im.convert('L')
    im.save('temp10.png')   
    text = image_to_string(Image.open('temp10.png'))
    print(text)

Original Image

Output

我了解到Captcha是专为击败OCR而设计的,但我读到情况已不再如此,我对学习如何做感兴趣。

我的问题是,如何使背景颜色相同,以便文本易于阅读?

1 个答案:

答案 0 :(得分:0)

最新答案,但无论如何... 您正在执行边缘检测,但是很明显,此图像中有很多图像,所以这将无法工作。 您将不得不对颜色做一些事情。 我不知道您的每个验证码是否正确,但是您可以使用对比。 您可以通过使用油漆(或任何其他图像编辑程序)打开原稿并将其保存为“单色”(仅黑白,而不是灰度)来进行测试

结果: enter image description here 无需任何其他编辑! (甚至问号不见了)

这已经准备好立即进行OCR。

也许您的其他图像并不容易,但是颜色/对比度才是您的最佳选择。如果您需要有关如何使用颜色,对比度和其他方法来解决人为错误的想法,可以查看更困难的示例以及我如何在此处解决问题:https://github.com/cracker0dks/CaptchaSolver

欢呼