最近工作可能会用到图片文字识别,所以提前储备一些相关的知识,貌似tess4j的口碑不错,但是最后的遇到的问题是中文识别率不够高,看看还有什么其他开源工具能够使用。
在自己搭建环境,遇到的各种问题还是记录一下。
机器环境:64位win7
开发环境:jdk7 64位
一、准备工作:
既然是需要识别文字,那肯定需要软件的支撑,首先在本机安装一个tesseract-ocr,
具体的版本根据自己的实际情况来把,我安装的版本是tesseract-ocr-setup-3.02.02
这个软件必须要安装,否则程序会报错的。
由于该功能后期会集成到web中,所以建立了web工程,选择开始准备文件:
1.需要准备的dll文件(需要区分32和64位的机器)
2.所有需要的jar文件如图:
3.需要的支持识别语言文件:
最后整个过程如图:
其中红色部分是我自己打的jar包,里面就是tess4j的源代码,这个明确下,里面内容没有去整理。
二、测试功能:
根据Tess4j官网给出的示例程序,示例程序太特么爽歪歪了,好吧我直接运行之后结果如下:
File imageFile = new File("d:\\123.png");
ITesseract instance = Tesseract.getInstance() ;
String result = instance.doOCR(imageFile);
允许后得到的结果如下,你大爷,啥玩意这是:
刚开始我也很纳闷,不过随即想到,既然你有一个tessdata用来存放识别的支持语言,那么这里肯定就需要我们来设置一下语言,大概和我们设置什么gbk类似,原谅我模样认真的去查看他们的文档,于是修改添加一行代码:
File imageFile = new File("d:\\123.png");
ITesseract instance = Tesseract.getInstance() ;
instance.setLanguage("chi_sim");//设置识别语言
String result = instance.doOCR(imageFile);
设置之后的的识别结果如下:
好歹算是识别出来了,识别率再继续研究下文档,看看如何提高识别率,再来更新文档.