【问题标题】:Solving captcha with PHP? Personal challenge?用 PHP 解决验证码?个人挑战?
【发布时间】:2011-11-27 01:10:15
【问题描述】:

我想看看我是否可以使用 PHP 解决验证码,以应对一些个人挑战。没什么太难的;同一行中的单词,始终使用相同颜色的单词等。这是一个示例。

http://www.simplyshows.com/img.jpg

只是想看看会有多难。 我的问题是,是否有基于 PHP 的函数可以用来逐像素检查颜色等? 我想分割字母,然后进行大量检查以确定字母是否为大写,小写,以及它可以是什么(取决于颜色的坐标)

【问题讨论】:

  • +1 - 看到解决方案真是太酷了!不过肯定很难。很难。
  • 是的,我想将图像分成 5 个部分(作为其 5 个字母),然后分别处理每个部分并检查每个部分中的字母模式,仍在研究!
  • 如果在明亮的背景上总是黑色字体,只需将明亮颜色的像素更改为白色,您就只有字母。下一步是 OCR 部分。我用这种方法编写了一个类似的验证码解析器,在字母相互交叉的情况下工作得很好。
  • MMm,我正在降低质量,因为字母有不同的黑色阴影,然后制作所有字母坐标的数组(黑色所在的位置),然后编写一个函数从左到右扫描并制作数组然后将其与字母数组匹配,很难解释,应该像魅力一样工作:)

标签: php captcha


【解决方案1】:

如果您真的有兴趣从头开始解决这个问题,请从 GDImageMagick 之类的库开始。

如果您有兴趣通过利用其他人的工作更快地完成它,请使用 Google 或 * 来查看是否有适用于 PHP 的 OCR 库/项目。

最后,我知道你说过你只是为了好玩。尽管如此,PHP 还是有很多优势,但我不认为我会选择它来进行重载图像处理和 AI。如果您发现自己对此很认真,您可能希望考虑其他对这些事情有更强大和更丰富支持的语言。但如果只是为了好玩,那就玩得开心!

【讨论】:

  • 谢谢,去看看,只是为了好玩,不是做一个破译者之类的网站,所以 PHP 应该没问题,谢谢!
【解决方案2】:

imagecolorat (http://php.net/manual/en/function.imagecolorat.php) 是您想要的。

【讨论】:

    【解决方案3】:

    我做过类似的事情,虽然看起来很难有一个解决方案: 如您所见,图像中的字母是用特定颜色编写的,这意味着您的 php 脚本将查找具有特定十六进制颜色值的像素。 现在想象一下,您的验证码图像放大了 100 倍 你会看到字母像素化,想象一个大的二维方形数组,每个块都有一个 id (i x j)。 在我附上的图像中,我设法在 10x10 数组中创建了字母“T”,使用每个正方形的 id,我可以为每个字母和数字制作图案。 使用gd库可以实现很多事情,其他的问题就别问了,我给你发了主框架 GD Library manual

    【讨论】:

      【解决方案4】:

      使用 PHP 来做这种事情是把你的服务器变成烤架的好方法;)如果你想要一些实际可用的东西,你最好的选择,那么你可能想要使用 exec() 调用二进制文件 - 编写它在 C 或其他语言中,然后从 PHP 中调用它。我能想到的使用普通 PHP 的唯一直接方法是从图像中读取十六进制并使用生成的“文本文件”进行分析,但它不会很漂亮。

      【讨论】:

        最近更新 更多