今天闲来无聊,尝试了一下OCR识别,尝试了以下三种方案:
1.直接使用业界使用最广泛的Tesseract-OCR。
Tesseract项目最初由惠普实验室支持,1996年被移植到Windows上,1998年进行了C++化。在2005年Tesseract由惠普公司宣布开源。2006年到现在,都由Google公司开发及维护。
2.使用基于Tesseract-OCR封装的Tess4j
3.调用百度云OCR服务实现(AT两家太贵,百度云文字识别服务提供每个月15000次的免费调用)。
先说测试结果:
毫无意外的,百度识别率最高,如果要自己实现,原生tesseract-ocr比tess4j识别率高出很多。
具体实现:
1.百度云OCR地址:https://cloud.baidu.com/product/ocr.html
JAVA开发指南:https://cloud.baidu.com/doc/OCR/OCR-Java-SDK.html
2.直接使用Tesseract-OCR,还有一个好处就是可以进行针对性的训练,提高识别率,我没有尝试过。
参考:
Windows环境安装tesseract-ocr 4.00并配置环境变量
注意:可以去github下载最新语言包文件,语言包是放在 tessdata文件夹,文件比较大,下载比较慢。
备注:截止到笔者写文时已发布4.00版本。
3.使用Tess4j,(不建议使用,我在试用过程中发现错误率极高)
不过目前网上能找到的比较多的资料都是Tess4j。
有以下可参考:
直接可运行的项目:https://gitee.com/zhaohuihbwj/Tess4JDemo
注意:该项目可直接运行测试。建议在maven中将tess4j升级到最新版本。
该项目直接包含了语言包,tess4j依赖包比较多,克隆过程会比较漫长。
若本地已有语言包chi_sim.traineddata,eng.traineddata,osd.traineddata
可克隆我fork的版本,https://gitee.com/huanghongbo/Tess4JDemo,将以上语言包放入/src/resources/tessdata目录。
其他参考资料:
1.官方参考:http://tess4j.sourceforge.net/
最新官方Tess4j包中已包含了对应dll文件,无需再单独配置。