精华内容
下载资源
问答
  • java验证码识别

    千次下载 热门讨论 2011-11-22 22:06:01
    java 验证码识别 ocr java 验证码识别 ocr
  • java 验证码识别 OCR

    2019-04-08 18:27:45
    java 验证码识别 OCR。
  • java验证码识别 JAVA知识巩固 源码 java验证码识别 java验证码识别
  • java 验证码识别

    2018-09-06 14:25:45
    java 验证码识别 ocr
  • java验证码识别源码

    2015-07-02 11:06:44
    java验证码识别源码,验证码生成地址自己添加,main 函数两个方法取消注释
  • NULL 博文链接:https://lvhuiqing.iteye.com/blog/1474186
  • java 验证码识别demo

    2021-03-11 13:46:03
    pom依赖坐标 org.bytedeco.javacpp-presets tesseract-platform 3.04.01-1.3 demo代码 import org.bytedeco.javacpp.BytePointer; import org.bytedeco.javacpp.lept; import org.bytedeco....//验证码识别结果 } }

    pom依赖坐标

        <dependency>
            <groupId>org.bytedeco.javacpp-presets</groupId>
            <artifactId>tesseract-platform</artifactId>
            <version>3.04.01-1.3</version>
        </dependency>

    demo代码

    import org.bytedeco.javacpp.BytePointer;
    import org.bytedeco.javacpp.lept;
    import org.bytedeco.javacpp.tesseract.TessBaseAPI;
    
    
    import static org.bytedeco.javacpp.lept.pixDestroy;
    import static org.bytedeco.javacpp.lept.pixRead;
    
    public class Distinguish {
        public static void main(String[] args) {
            BytePointer outText;
            TessBaseAPI api = new TessBaseAPI();
            lept.PIX image = pixRead("C:\\Users\\Administrator\\Desktop\\yzm\\1.jpg");//验证码图片地址
            api.SetImage(image);
            outText = api.GetUTF8Text();
            String captcha = outText.getString();
            api.End();
            outText.deallocate();
            pixDestroy(image);
            api.close();
            System.out.println(captcha.trim());//验证码识别结果
        }
    }

     

    展开全文
  • JAVA验证码识别

    2015-08-11 09:17:37
    java验证码识别工具,不要用于非法用途
  • java项目 验证码识别
  • 源码: 链接:https://pan.baidu.com/s/1lA4PyyQF1EdTAWZOzK2KHQ 提取码:ztxd 运行效果 图片文字识别 验证码识别

    源码:

    链接:https://pan.baidu.com/s/1lA4PyyQF1EdTAWZOzK2KHQ 
    提取码:ztxd 
     

    运行效果

    图片文字识别

    验证码识别

    展开全文
  • 一个验证码识别框架 Introduction: 1.使用大津算法去除背景噪声 2.使用CFS算法进行切割 3.使用惯性大水滴算法对图像进行切割 4.使用转移矩阵对二值矩阵进行缩放 5.使用支持向量机进行学习和分类识别
  • 基于 Java 的简单图形验证码识别
  • JAVA智能验证码识别,可训练提高识别率,带干扰线的也可以识别到,绝对可用
  • Java 验证码识别(Tess4J初体验)

    千次阅读 2018-05-01 19:45:50
    Tess4J官方描述:A Java JNA wrapper for Tesseract OCR API.demo下载1.先去官网下载:http://tess4j.sourceforge.net/2.将下载的文件解压后把下面几个文件夹(图片中选中的)复制到新建的项目中3.将lib下的jar包加...

    Tess4J官方描述:A Java JNA wrapper for Tesseract OCR API.

    demo下载

    1.先去官网下载:http://tess4j.sourceforge.net/

    2.将下载的文件解压后把下面几个文件夹(图片中选中的)复制到新建的项目中


    3.将lib下的jar包加到build path 中。注意:lib里面除了jar包还有别的。

    4.根据官网的样例在刚建的项目中使用一下:

    The following code example shows common usage of the library. Make sure tessdata folder are in the search path, and the .jar files are in the classpath.注意在第4步之前确保tessdata 文件夹在项目中,jar包在classpath中。前面的2,3两步已经做了。

    [java]  view plain  copy
    1. package net.sourceforge.tess4j.example;  
    2.   
    3. import java.io.File;  
    4. import net.sourceforge.tess4j.*;  
    5.   
    6. public class TesseractExample {  
    7.   
    8.     public static void main(String[] args) {  
    9.         File imageFile = new File("eurotext.tif");  
    10.         ITesseract instance = new Tesseract();  // JNA Interface Mapping  
    11.         // ITesseract instance = new Tesseract1(); // JNA Direct Mapping  
    12.   
    13.         try {  
    14.             String result = instance.doOCR(imageFile);  
    15.             System.out.println(result);  
    16.         } catch (TesseractException e) {  
    17.             System.err.println(e.getMessage());  
    18.         }  
    19.     }  
    20. }  

    我稍微改了一下,识别指定文件夹下所有验证码

    [java]  view plain  copy
    1. package blog.csdn.net.dr_guo;  
    2.   
    3. import java.io.File;  
    4.   
    5. import net.sourceforge.tess4j.ITesseract;  
    6. import net.sourceforge.tess4j.Tesseract;  
    7. import net.sourceforge.tess4j.TesseractException;  
    8. /** 
    9.  * 验证码识别(图片名即为验证码数字) 
    10.  * @author drguo 
    11.  * 
    12.  */  
    13. public class VCR {  
    14.     public static void main(String[] args) {  
    15.         File root = new File(System.getProperty("user.dir") + "/imgs");  
    16.         ITesseract instance = new Tesseract();  
    17.   
    18.         try {  
    19.             File[] files = root.listFiles();  
    20.             for (File file : files) {  
    21.                 String result = instance.doOCR(file);  
    22.                 String fileName = file.toString().substring(file.toString().lastIndexOf("\\")+1);  
    23.                 System.out.println("图片名:" + fileName +" 识别结果:"+result);  
    24.             }  
    25.         } catch (TesseractException e) {  
    26.             System.err.println(e.getMessage());  
    27.         }  
    28.     }  
    29. }  
    直接运行就行了,但这时可能会报错

    [plain]  view plain  copy
    1. Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'libtesseract304': Native library (win32-x86-64/libtesseract304.dll) not found in resource path ([file:/G:/Eclipse/Demo/bin/, file:/G:/Eclipse/Demo/lib/commons-beanutils-1.9.2.jar, file:/G:/Eclipse/Demo/lib/commons-io-2.4.jar, file:/G:/Eclipse/Demo/lib/commons-logging-1.2.jar, file:/G:/Eclipse/Demo/lib/ghost4j-1.0.1.jar, file:/G:/Eclipse/Demo/lib/hamcrest-core-1.3.jar, file:/G:/Eclipse/Demo/lib/itext-2.1.7.jar, file:/G:/Eclipse/Demo/lib/jai-imageio-core-1.3.1.jar, file:/G:/Eclipse/Demo/lib/jna-4.2.2.jar, file:/G:/Eclipse/Demo/lib/jul-to-slf4j-1.7.19.jar, file:/G:/Eclipse/Demo/lib/junit-4.12.jar, file:/G:/Eclipse/Demo/lib/lept4j-1.1.2.jar, file:/G:/Eclipse/Demo/lib/log4j-1.2.17.jar, file:/G:/Eclipse/Demo/lib/logback-classic-1.1.6.jar, file:/G:/Eclipse/Demo/lib/logback-core-1.1.6.jar, file:/G:/Eclipse/Demo/lib/rococoa-core-0.5.jar, file:/G:/Eclipse/Demo/lib/slf4j-api-1.7.19.jar, file:/G:/Eclipse/Demo/lib/xmlgraphics-commons-1.5.jar])  
    注意前面的报错信息,把lib下的win32-x86-64拷到项目中的bin目录下就可以了


    准确率还是挺高的。


    如果你还觉得麻烦,直接把我的项目下载下来改吧:https://git.oschina.net/drguo/VerificationCodeRecognition.git

    注意我的jdk版本是jdk1.8.0_74,如果你的版本低于我的版本可能会报错~

    展开全文
  • java 验证码识别 ocr

    2019-03-27 03:21:02
    NULL 博文链接:https://oma1989.iteye.com/blog/1168433
  • 通过OpenCV实现的全自动图形图片验证码识别软件,可以识别出绝大多数验证码,操作简单方便。
  • java 验证码识别源程序 windows版本 概率90%以上
  • java验证码识别--1

    2018-07-31 16:09:00
    2019独角兽企业重金...java验证码识别--1 http://blog.csdn.net/problc/article/details/5794460 java验证码识别--2 http://blog.csdn.net/problc/article/details/5797507 java验证码识别--3 ...

    java验证码识别--1

    http://blog.csdn.net/problc/article/details/5794460

    java验证码识别--2

    http://blog.csdn.net/problc/article/details/5797507

    java验证码识别--3

    http://blog.csdn.net/problc/article/details/5800093

    java验证码识别--4

    http://blog.csdn.net/problc/article/details/5846614

    java验证码识别--5

    http://blog.csdn.net/problc/article/details/5983276

    如何识别高级的验证码-粘连等

    http://blog.csdn.net/problc/article/details/22796609

    常见验证码的弱点与验证码识别

    http://blog.csdn.net/problc/article/details/22796971

     

    (本文仅用于学习研究图像匹配识别原理,不得用于其他用途。)

    完整eclipse工程http://download.csdn.net/detail/problc/3829004

    最近看了看验证码的识别,先从最简单的做起吧(固定大小,固定位置,固定字体)

     

    验证码识别基本分四步,图片预处理,分割,训练,识别

     

    看一个最简单验证码

    这是一个德克萨斯扑克的注册页面的验证码

     

    1。图像的预处理

    这种直接根据亮度设个阈值处理就可以了

    public static int isWhite(int colorInt) {
    		Color color = new Color(colorInt);
    		if (color.getRed() + color.getGreen() + color.getBlue() > 100) {
    			return 1;
    		}
    		return 0;
    	}
    
    	public static BufferedImage removeBackgroud(String picFile)
    			throws Exception {
    		BufferedImage img = ImageIO.read(new File(picFile));
    		int width = img.getWidth();
    		int height = img.getHeight();
    		for (int x = 0; x < width; ++x) {
    			for (int y = 0; y < height; ++y) {
    				if (isWhite(img.getRGB(x, y)) == 1) {
    					img.setRGB(x, y, Color.WHITE.getRGB());
    				} else {
    					img.setRGB(x, y, Color.BLACK.getRGB());
    				}
    			}
    		}
    		return img;
    	}

     

    处理完图片效果为

    图像基本分得比较清楚,图片分割也比较容易

     

    2。分割

    这个验证码居然是固定位置的,分割相当简单,直接截取相应位置就可以了

    public static List<BufferedImage> splitImage(BufferedImage img)
    			throws Exception {
    		List<BufferedImage> subImgs = new ArrayList<BufferedImage>();
    		subImgs.add(img.getSubimage(10, 6, 8, 10));
    		subImgs.add(img.getSubimage(19, 6, 8, 10));
    		subImgs.add(img.getSubimage(28, 6, 8, 10));
    		subImgs.add(img.getSubimage(37, 6, 8, 10));
    		return subImgs;
    	}

    3。训练

    直接拿几张图片,包含0-9,每个数字一个样本就可以了,将文件名对应相应的数字

    4。识别

    因为是固定大小,固定位置,识别也很简单。

    直接拿分割的图片跟这个十个图片一个像素一个像素的比,相同的点最多的就是结果。比如如果跟5.jpg最相似,那么识别的结果就是5。

    下面是识别结果,很容易达到100%

     

     

    完整代码:

    import java.awt.Color;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.imageio.ImageIO;
    
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpStatus;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.io.IOUtils;
    
    public class ImagePreProcess {
    
    	public static int isWhite(int colorInt) {
    		Color color = new Color(colorInt);
    		if (color.getRed() + color.getGreen() + color.getBlue() > 100) {
    			return 1;
    		}
    		return 0;
    	}
    
    	public static int isBlack(int colorInt) {
    		Color color = new Color(colorInt);
    		if (color.getRed() + color.getGreen() + color.getBlue() <= 100) {
    			return 1;
    		}
    		return 0;
    	}
    
    	public static BufferedImage removeBackgroud(String picFile)
    			throws Exception {
    		BufferedImage img = ImageIO.read(new File(picFile));
    		int width = img.getWidth();
    		int height = img.getHeight();
    		for (int x = 0; x < width; ++x) {
    			for (int y = 0; y < height; ++y) {
    				if (isWhite(img.getRGB(x, y)) == 1) {
    					img.setRGB(x, y, Color.WHITE.getRGB());
    				} else {
    					img.setRGB(x, y, Color.BLACK.getRGB());
    				}
    			}
    		}
    		return img;
    	}
    
    	public static List<BufferedImage> splitImage(BufferedImage img)
    			throws Exception {
    		List<BufferedImage> subImgs = new ArrayList<BufferedImage>();
    		subImgs.add(img.getSubimage(10, 6, 8, 10));
    		subImgs.add(img.getSubimage(19, 6, 8, 10));
    		subImgs.add(img.getSubimage(28, 6, 8, 10));
    		subImgs.add(img.getSubimage(37, 6, 8, 10));
    		return subImgs;
    	}
    
    	public static Map<BufferedImage, String> loadTrainData() throws Exception {
    		Map<BufferedImage, String> map = new HashMap<BufferedImage, String>();
    		File dir = new File("train");
    		File[] files = dir.listFiles();
    		for (File file : files) {
    			map.put(ImageIO.read(file), file.getName().charAt(0) + "");
    		}
    		return map;
    	}
    
    	public static String getSingleCharOcr(BufferedImage img,
    			Map<BufferedImage, String> map) {
    		String result = "";
    		int width = img.getWidth();
    		int height = img.getHeight();
    		int min = width * height;
    		for (BufferedImage bi : map.keySet()) {
    			int count = 0;
    			Label1: for (int x = 0; x < width; ++x) {
    				for (int y = 0; y < height; ++y) {
    					if (isWhite(img.getRGB(x, y)) != isWhite(bi.getRGB(x, y))) {
    						count++;
    						if (count >= min)
    							break Label1;
    					}
    				}
    			}
    			if (count < min) {
    				min = count;
    				result = map.get(bi);
    			}
    		}
    		return result;
    	}
    
    	public static String getAllOcr(String file) throws Exception {
    		BufferedImage img = removeBackgroud(file);
    		List<BufferedImage> listImg = splitImage(img);
    		Map<BufferedImage, String> map = loadTrainData();
    		String result = "";
    		for (BufferedImage bi : listImg) {
    			result += getSingleCharOcr(bi, map);
    		}
    		ImageIO.write(img, "JPG", new File("result//"+result+".jpg"));
    		return result;
    	}
    
    	public static void downloadImage() {
    		HttpClient httpClient = new HttpClient();
    		GetMethod getMethod = new GetMethod(
    				"http://www.puke888.com/authimg.php");
    		for (int i = 0; i < 30; i++) {
    			try {
    				// 执行getMethod
    				int statusCode = httpClient.executeMethod(getMethod);
    				if (statusCode != HttpStatus.SC_OK) {
    					System.err.println("Method failed: "
    							+ getMethod.getStatusLine());
    				}
    				// 读取内容
    				String picName = "img//" + i + ".jpg";
    				InputStream inputStream = getMethod.getResponseBodyAsStream();
    				OutputStream outStream = new FileOutputStream(picName);
    				IOUtils.copy(inputStream, outStream);
    				outStream.close();
    				System.out.println("OK!");
    			} catch (Exception e) {
    				e.printStackTrace();
    			} finally {
    				// 释放连接
    				getMethod.releaseConnection();
    			}
    		}
    	}
    
    	/**
    	 * @param args
    	 * @throws Exception
    	 */
    	public static void main(String[] args) throws Exception {
    		for (int i = 0; i < 30; ++i) {
    			String text = getAllOcr("img//" + i + ".jpg");
    			System.out.println(i + ".jpg = " + text);
    		}
    	}
    }
    

     

    转载于:https://my.oschina.net/ZhenyuanLiu/blog/1920327

    展开全文
  • java验证码识别--2

    2018-07-31 16:10:00
    2019独角兽企业重金...java验证码识别--1 http://blog.csdn.net/problc/article/details/5794460 java验证码识别--2 http://blog.csdn.net/problc/article/details/5797507 java验证码识别--3 ...
  • 资源包括Java代码以及引用包、tesseract安装包和使用说明
  • java技术解析验证码时会用的jar包
  • 内容包括:Java概述、Java基本语法、Java 执行控制流程、面向对象、访问控制权限、接口和抽象类、异常、内部类、集合、泛形、反射、枚举、I/O、关于 null 的几种处理方式、思维导图。 1、Java概述 2、Java基本语法 ...
  • java验证码识别--4

    2019-10-07 09:03:37
    验证码识别如果识别率都是100%,那验证码也就没存在的必要了。 其实很多验证码能达到10%的识别率就不错了。 下面来一个稍微复杂一点的,识别率85%左右。 看验证码 挑一张来看 放大看,我们会发现干扰线是...
  • Java实现验证码识别

    千次阅读 2019-07-17 11:40:35
    java识别验证码比较简单,使用的软件是tesseractocr,这个软件需要安装在本地中,傻瓜式安装(方便调用)。 github下载地址https://github.com/tesseract-ocr/tessdata 博主是在官网下载的。 该软件默认的识别...
  • java验证码识别_源码

    2014-10-13 11:21:52
    java验证码识别,BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或...
  • java验证码识别--5

    2017-06-21 15:20:46
    Java验证码识别--1 http://blog.csdn.net/problc/article/details/5794460 java验证码识别--2 http://blog.csdn.net/problc/article/details/579750
  • Java 验证码识别库 Tess4j 学习 【在用java的Jsoup做爬虫爬取数据时遇到了验证码识别的问题(基于maven),找了网上挺多的资料,发现Tess4j可以自动识别验证码,在这里简单记录下学习过程及遇到的一些问题。】 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,499
精华内容 4,599
关键字:

java验证码识别

java 订阅