python使用tesseract的一次训练经历及源码
第一次用tesseract,最初目的是想写个辅助工具玩微信小程序《某某大师》按照网上找的步骤做了一次训练,把遇到的问题写一下,操作过程写一下。参考的文章链接如下:
https://www.cnblogs.com/cnlian/p/5765871.html
环境安装:python3安装PIL,pytesseract
安装tesseract-ocr(我装的是3.0.2版本)
jTessBoxEditor.jar
不做训练,直接识别,5张待识别的图片如下:
python代码如下:
from PIL import Image import pytesseract path = "C:\\Users\\ZH\\Desktop\\dddd\\" path2 = ".png" i = 1 while i < 6: text = pytesseract.image_to_string(Image.open(path+str(i)+path2), lang="eng", config="-psm 7") print(text) i = i + 1
识别结果如下:
/A
/2
;»15
/1
/9
Process finished with exit code 0
识别率很低。准备图片样本进行训练,我用代码生成了401张图片(部分图片如下):
使用jTessBoxEditor进行合成,把图片全部合成为一个tiff文件,然后运行cmd,打开控制台,进入合成的tiff文件夹,运行命令
tesseract num.font.exp0.tif num.font.exp0 -psm 7 batch.nochop makebox
注意红色字体的参数,如果不加这个参数,则会报Empty page 这个错误。加上这个参数,生成box文件的时候tesseract就会把图片当作单行文本进行处理。贴两张图看下:
不加参数生成box文件:
加了参数之后生成box文件:
然后再用jTessBoxEditor打开tiff文件,修改识别错误的字符,如下图:
修改完之后,进入tiff文件所在位置,添加字体文件,然后用cmd打开控制台进入tiff文件所在位置,执行命令批处理命令,生成所需文件。这一步在参考文章链接都有,可以按照参考文章来。文章末尾我会提供源码地址还有所需的文件地址,需要的人可以下载。
最后把生成的字符库文件放到 “你的安装路径\Tesseract-OCR\tessdata”路径下面,然后修改python代码里面的识别命令,修改字符库为我们训练出来的库文件。其中”lang=num“,num就是我训练的库文件的名字(太懒,直接按照参考文章的名字来的,起名字需要按照规则来)
from PIL import Image import pytesseract path = "C:\\Users\\ZH\\Desktop\\dddd\\" path2 = ".png" i = 1 while i < 6: text = pytesseract.image_to_string(Image.open(path+str(i)+path2), lang="num", config="-psm 7") print(text) i = i + 1
使用新库的识别结果如下图:
5张图的识别结果全部正确,识别率大幅度提升。
注意一下:
生成box文件的命令也是可以加参数的,因为第一次使用,不知道可以加参数,所以前几次训练生成box文件的时候总是报Empty page这个错误,导致生成的库文件不好用。如果有遇到这个问题的,可以试试加参数这个办法。
****资源地址(需要2个积分):https://download.****.net/download/metamorpho/10504195
不着急需要资源的朋友也可以留下邮箱,我看到会发给你,但是我看自己文章的频率很低,所以发给你的时间可能有点晚。