今天意外在朋友圈看到一个朋友求助关于如何识别图片里的文字,并导出成TXT文档格式。就想到最近用Python很顺手,记得之前看到过用Python结合Tesseract就可以导出图片中的文字的,于是说干就干。
因为之前已经安装好Tesseract在电脑上,环境变量也设置好了,也用pip install了tesseract在终端上,所以就是直接敲代码的事。如果有不清楚怎么安装的朋友可以看看这位大佬的指导(OCR与Tesseract安装)先谢谢大佬的指导!
好了,进正题,其实只要7行代码就可以搞定,代码如下:
这里要注意记得写上编码格式,不然会报错:
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xbb’ in position
切记!!!
然后拿到转换后的TXT文档如下右图(图片是网上随意找来实验的):
可见tesseract在识别图片文字方面还是有很大的进步空间的,上图只识别了其中一部分图片的文字,掌柜想说是不是排列不整齐也会影响他的识别?于是又去找了一张图来:
这次都是在整齐一行上面的,于是再次调用刚刚的程序来识别,最后的文档是这样:
这次三分之二的文字能识别出来,还是有识别不出乱写的。由此可见,tesseract本身的准确性还有待加强。后来掌柜的又多实验了好几个图片,最后可以得出:
- 要识别的图片文字最好是Arial字体的,这个几乎可以百分之九十五成功;
- 要识别的图片最好是对整齐的行跟列,如果要出现左右不是一致高度的就会出现乱写;
- 要识别的图片背景最好是纯白的,有颜色的对于初始的tesseract来说难度很大;
- 数字暂时没法识别。
好了,今天的试验就暂时到这里,幸好朋友给的图片文件是Arial字体,基本识别无误,只是需要自己分行。后来又搜索了一下,发现可以训练tesseract,提高他的识别率,看来是个有意思的试验,改天继续再分享!