zoukankan      html  css  js  c++  java
  • 验证码识别(Tess4J初体验)


    基本的步骤:1.预处理 2.灰度化 3.二值化 4.去噪 5.分割 6.识别

    使用开源程序:Tesseract

    下面开始正文:

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


    1.先去官网下载:http://tess4j.sourceforge.net/(我用的是目前最新版本3.1)

    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,如果你的版本低于我的版本可能会报错~

  • 相关阅读:
    淘宝首页性能优化实践
    Ubuntu16.04下搭建Go语言环境
    ubuntu下nvm,node以及npm的安装与使用
    idea 新建/导入的xml 报文头报错 URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
    Spring Boot 请求返回字符串中文乱码
    Java 从FTP下载.上传文件
    Spring boot 定时器
    spring boot集成mybatis 自动生成实体类和mapper文件、Dao层
    Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found
    Oracle中创建序列
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317786.html
Copyright © 2011-2022 走看看