1、Java项目中引入tess4j库,用gradle配置如下:
implementation 'net.sourceforge.tess4j:tess4j:5.2.0'
2、安装Tesseract5.0
因Tess4j无法在mac系统使用,报错找不到一些依赖的类库,所以必须安装tesseract5.0.
安装可以用:
brew install tesseract
如果要用图片训练tesstrain,则需要从github下源代码编译(GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)),本人这里需要用训练,所以是下载代码编译的,过程比较复杂,可以直接它的安装文档进行安装。
3、设置java运行变量tessdata的位置,如下。
4、以上步骤完成,运行java就能识别图片了。
这个识别对于干净整洁的英文数字图片识别效果不错,但是像验证码这种有很多干扰项的图片,识别正确率就很低了,可以运动训练工具提高识别率。
补充:遇到运行时报错找不到libtesseract.5.dylib(根据自己的版本确定具体的文件),需要把libtesseract.5.dylib这个文件手工添加到tess4j的jar包中。
5、下载tesstrain工具
GitHub - tesseract-ocr/tesstrain: Train Tesseract LSTM with make
6、进行图片识别训练
6.1、收集若干识别的图片,图片格式为.tif,翻译图片内容保存到同名txt(文件格式.gt.txt),如下:
6.2、在tesstrain安装目录(本地源码目录)下data中创建一个文件夹,名为“xxx-ground-truth”,xxx是自己的命名,xxx是tesstrain的MODEL_NAME,后续命令中用到。比如:
6.3、运行命令训练
运行terminal先cd到tesstrain目录下,再运行如下目录:
make training MODEL_NAME=hx
MODEL_NAME的“hx”与文件夹“hx-ground-truth” 前面部分一致。
上面命令运行结束,如果没有错误,将会在"hx-ground-truth"文件夹同目录下生成hx.traineddata文件。
7、使用训练的文件识别图片
训练完成的hx.traineddata可以拷贝到前面提到的tessedata目录中与tessact系统的其他训练文件一起,亦可以保留在其他位置(使用时需要指定tessdata目录).
没有拷贝traineddata到tessdata的命令如下:
tesseract --tessdata-dir /本地安装路径/tesstrain/data 本地图片名.jpg stdout -l hx --psm 6
拷贝traineddata到tessdata的命令:
tesseract 本地图片名.jpg stdout -l hx --psm 6
问题补充
2022/4/27
1、tif图片的dpi的为72以上(70dpi也勉强),低于这个值生成的训练文件无法识别出正确结果。
2、如何将jpg转tif,用图片处理工具导出,设置dpi为72以上,本文用的是GIMP-2.10处理的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)