【发布时间】:2025-12-13 05:00:01
【问题描述】:
作为练习,我正在尝试破解以下验证码:
它似乎不太难打破,因为边缘似乎相当坚固,而且噪点应该相对容易去除。问题是,我对图像处理的经验很少。目前我正在使用 Python 和 Pillow 库来操作 CAPTCHA 图像,之后它将被传递到 Tesseract 进行 OCR。
在下面的代码中,我尝试通过锐化图像并将图像转换为黑白来突出边缘
from PIL import Image, ImageFilter
try:
img = Image.open("Captcha.jpg")
except:
print("Can't load captcha.")
exit()
# Bring out the edges by sharpening.
out = img.filter(ImageFilter.SHARPEN)
out = out.convert("L")
out = out.point(lambda x: 0 if x<136 else 255, "1")
width, height = out.size
out = out.resize((width*5, height*5), Image.NEAREST)
out.save("captcha_modified.png")
此时我看到以下内容:
但是,Tesseract 仍然无法读取字符。作为一个实验,我使用 good ol' mspaint 手动将图像修改为可以被 Tesseract 读取的点:
因此,如果可以将图像做到这一点,我认为 Tesseract 在检测字符方面会做得相当好。所以我目前的想法是我需要增强边缘并减少图像的噪点。另外,我想如果字母将被填充而不是轮廓,Tesseract 会更容易检测到这些字母,但我不知道我会如何做到这一点。
关于如何解决这个问题有什么建议吗?有没有更好的方法来处理图像?
【问题讨论】:
-
没有更多有用的练习吗?
-
可能,但我从事安全工作,所以我特别感兴趣。
标签: python image-processing python-imaging-library captcha