使用Python和Tesseract OCR解决验证码

使用Python和Tesseract OCR解决验证码,python,tesseract,Python,Tesseract,我不打算发垃圾邮件,而且谷歌已经用reCaptcha淘汰了captcha。我做这个项目是为了学习更多关于OCR的知识,最终可能是学习神经网络 所以我有一张来自验证码的图像,我已经取得了一些进展,但是关于tesseract的文档并没有很好的记录。这是我到目前为止的代码,结果如下 from selenium import webdriver from selenium.webdriver.common import keys import time import random import pyte

我不打算发垃圾邮件,而且谷歌已经用reCaptcha淘汰了captcha。我做这个项目是为了学习更多关于OCR的知识,最终可能是学习神经网络

所以我有一张来自验证码的图像,我已经取得了一些进展,但是关于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)

我知道Captcha是专门用来打败OCR的,但我读到它不再是这样,我很想知道它是如何做到的

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

回答晚了,但无论如何。。。 您正在进行边缘检测,但很明显,在这张图像中有很多,所以这将不起作用。 你得对颜色做些调整。 我不知道这是否适用于您的每个验证码,但您可以使用对比度。 您可以通过使用paint(或任何其他图像编辑程序)打开原始图像并将图像保存为“单色”(仅黑白,不灰度)来测试这一点

结果: 没有任何其他编辑!(连问号都没有了)

这将立即准备好进行OCR

也许你的其他图像不是那么容易,但颜色/对比度是你的选择。如果您需要了解如何使用颜色、对比度和其他方法来解决CAPTACH问题,您可以查看更难的示例,以及我是如何在此处解决这些问题的:

干杯