如何将带有字母的图像转换为文本?

bpe*_*oso -2 java captcha bufferedimage webclient javax.imageio

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

我把图像转换成了一个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);
Run Code Online (Sandbox Code Playgroud)

依赖关系:net.sourceforge.htmlunit htmlunit 2.15

JDK 1.6.0_43

Ale*_*rny 11

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

我注意到你正在使用Java,这是一种用Java实现的方法.假设验证码不是很安全,解码验证码是非常可能的.这正是验证码总是越来越复杂的原因 - 人们可以打破它们.

编辑如果您没有在Java上进行硬设置并且不想使用付费服务,则可以在Python中使用本教程:http://www.boyter.org/decoding-captchas/

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

  • 使用付费服务的一个原因:如果您自己这样做,一旦有人提出新的验证码方案,您的代码可能会在下个月停止工作.如果你付钱给某人,他们就会破解新计划,你的代码将很快重新开始工作,而不需要你付出额外的努力.这是否值得付出当然是一个经济问题,主要取决于您的特定用例,而不是技术问题. (3认同)