【问题标题】:How could I convert a image with letters to text?如何将带有字母的图像转换为文本?
【发布时间】:2014-07-29 16:15:11
【问题描述】:

我需要在图像中查找字母。我需要帮助来编写一个算法来解码图像。

我得到了图片,并在 ByteArrayOutputStream 中进行了转换,但我不知道如何处理它。

有我的java代码:

URL url = new URL(urlImg);
WebClient webClient = new WebClient(BrowserVersion.getDefault());
WebRequest reqImg = new WebRequest(url);
reqImg.setHttpMethod(HttpMethod.GET);
InputStream imgStream = webClient.getPage(reqImg).getWebResponse().getContentAsStream();
BufferedImage img = ImageIO.read(imgStream);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "png", out);

依赖: net.sourceforge.htmlunit htmlunit 2.15

JDK 1.6.0_43

【问题讨论】:

  • 这是验证码的重点,不能转成文字。
  • 是的,我需要它来验证应用程序。这是一个关于java的问题。
  • 在我的 Web 应用程序中,最好的方法是将图像显示给客户端。

标签: java webclient captcha bufferedimage javax.imageio


【解决方案1】:

http://scraping.pro/example-captcha-solver-java/

我注意到您正在使用 Java,这是一种在 Java 中执行此操作的方法。假设验证码不是很安全,解码验证码是很有可能的。这正是验证码总是变得越来越复杂的原因——人们可以破解它们。

编辑如果你对 Java 不是很严格并且不想使用付费服务,你可以使用 Python 的本教程:http://www.boyter.org/decoding-captchas/

-顺便说一句-解码验证码并不总是不道德的。有时它是必需的或使生活更轻松。例如,我正在与之合作的一家公司不会在他们的网站上禁用验证码以进行我所做的自动化测试。如果我想运行我的自动化测试,我必须绕过 Captcha。当然,这也意味着其他人如果真的想也可以绕过验证码,但公司显然不在乎,而是想要易于阅读的传统验证码。

【讨论】:

  • 但是,他使用了deathbycaptcha。这是一项付费服务​​。我认为任何人都已经编写了一个算法来解码图像。这不是我的专长,但我在这里尝试。如果我成功了,我会在这里发布答案。谢谢。
  • @bpedroso 使用不需要付费服务的替代 Python 方法更新了答案。
  • 使用付费服务的一个原因:如果你自己做,你的代码可能会在下个月一旦有人提出新的验证码方案就停止工作。如果你付钱给别人,他们会破解新方案,你的代码会很快重新开始工作,而无需你付出额外的努力。这是否值得付费当然是一个经济问题,主要取决于您的特定用例,而不是技术问题。
猜你喜欢
  • 1970-01-01
  • 2017-04-01
  • 2012-06-01
  • 1970-01-01
  • 2021-03-23
  • 2011-11-13
  • 2019-12-08
  • 1970-01-01
  • 2013-11-02
相关资源
最近更新 更多