Tesseract-Ocr介绍
需要一个简单的识别对应一类图片中的金额,发现这个实现和应用非常简单,就此记录一下。
Tesseract 是一种开源文本识别 (OCR)引擎,在Apache 2.0 许可下可用。.
Tesseract 可以通过命令行直接使用,或者(对于程序员)通过使用API从图像中提取打印文本。它支持多种语言。Tesseract 包括外部工具、包装器和培训项目。
官网:https://github.com/tesseract-ocr 训练工具:https://github.com/tesseract-ocr/tesseract/wiki/AddOns 训练数据仓库: https://github.com/tesseract-ocr/tessdata https://github.com/tesseract-ocr/tessdata_best https://github.com/tesseract-ocr/tessdata_fast
java调用
maven
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.1.1</version>
</dependency>
下载训练库
下载训练库及配置 直接将对应源码中的tessdata文件夹给加入工程根目录
调用api
public static String readImgNum(String url) {
ITesseract instance = new Tesseract();
instance.setDatapath("tessdata");
instance.setLanguage("eng");
String ocrResult = "";
try {
BufferedImage image = ImageIO.read(new URL("https:" + url));
ocrResult = instance.doOCR(image);
} catch (Exception e) {
e.printStackTrace();
}
return ocrResult;
}
eng库源码中带的识别不了数字,也是很尴尬,找这个问题也是找了挺久。
可以直接使用网上的url,或者本地的文件都行
异常解决
- read_params_file: parameter not found: enable_new_segsearch
直接下载的eng库是有问题的,还是需要去git上重新下载。
- java.lang.Error: Invalid memory access
对应的data库没有找到,检查对应的库地址
附录
整个工程的资源包下载 中文库 英文库
|