本次使用的是tesseract, 在github上拥有2w多颗星,
https://github.com/tesseract-ocr/tesseract
支持100多种语言,提供各种开发语言的调用接口,以及训练好的语种数据。
测试代码采用,java JNA + tess4j 方式
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.4.0</version>
<exclusions>
<exclusion>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
测试代码如下:
public void test2()
{
File imageFile = new File("E:\\Code\\OpenSource\\ocr_test\\src\\main\\resources\\test-data\\qingming2-vertical.png");
Tesseract instance = new Tesseract();
instance.setDatapath("E:\\Code\\OpenSource\\ocr_test\\src\\main\\resources\\tessdata");
instance.setLanguage("chi_sim");
try {
String result = instance.doOCR(imageFile);
System.out.println(result);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
setDatapath 指定的是中文的训练数据的路径。
实际测试效果一般。
原图:
识别结果为:
结果为:
结果:
使用的中文语言包是从https://github.com/tesseract-ocr/tessdata 上下载的最新的。
当然tesseract也支持,提供样本,自己训练。
tesseract 在github上拥有众多的支持,包含许多的分支,例如:
https://github.com/UB-Mannheim/tesseract
而且更新维护工作目前一直在进行中。
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
参考:
https://blog.csdn.net/anshengsuiyeu/article/details/79130260
https://www.cnblogs.com/pejsidney/p/9487881.html
http://blog.itpub.net/28974745/viewspace-2218659/
https://www.cnblogs.com/wangkevin5626/p/9640165.html