1、安装tesseract ocr引擎和jTessBoxEditor
a、使用HomeBrew
进行安装
#1.这是个安装HomeBrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#2安装tesseract
brew install tesseract
由于我们需要进行训练提高识别的准确率,所有使用下面的安装命令,主要如果先前已经安装了先执行brew uninstall tesseract
,然后执行下面命令
brew install --with-training-tools tesseract
b、安装jTessBoxEditor的安装
下载地址,由于该工具依赖于java环境,所以需要安装java环境。使用brew cask
安装java8环境
brew tap caskroom/versions
brew cask install java8
2、开始训练
a、首先将.png
格式的图片转换为.tif
格式,
b、将.tif
格式的文件进行合并,打开jTessBoxEditor.jar,然后点菜单上的Tool->Merge TIFF ,主要命名使用官方推荐。官网的写法是这样的
[lang].[fontname].exp[num].tif
[lang]是语言,随便起,这里的叫sll
[fontname]是字体,随便起,这里叫 normal
[num]我也不知道啥意思,写的是数字0
这两个都是自定义的,后面会用到,所以要记住。
我这里取名为eng.num.exp0.tif
c、生成
.box
文件,用来纠正字体识别的错误使用如下命令,就会在同一目录下面生成一个
.box
文件夹
tesseract eng.num.exp0.tif eng.num.exp0 -l eng batch.nochop makebox
d、使用jTessBoxEditor打开进行,对识别结果进行修改,然后保存,如下图
e、编写
.sh
脚本进行训练,脚本如下:
#!/bin/sh
read -p "输入你语言:" lang
echo ${lang}
read -p "输入你的字体:" font
echo ${font}
echo "所以完整文件名为:"
echo ${lang}.${font}.exp0.tif
echo "开始。。。"
echo ${font} 0 0 0 0 0 >font_properties
tesseract ${lang}.${font}.exp0.tif ${lang}.${font}.exp0 nobatch box.train
unicharset_extractor ${lang}.${font}.exp0.box
shapeclustering -F font_properties -U unicharset ${lang}.${font}.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset ${lang}.${font}.exp0.tr
cntraining ${lang}.${font}.exp0.tr
echo "开始重命名文件"
mv inttemp ${font}.inttemp
mv normproto ${font}.normproto
mv pffmtable ${font}.pffmtable
mv shapetable ${font}.shapetable
mv unicharset ${font}.unicharset
echo "生成最终文件"
combine_tessdata ${font}.
echo "完成"
执行脚本后,生成文件如下
最后将
num.traineddata
复制到到/usr/local/Cellar/tesseract/3.05.00/share/tessdata目录当中,就可以使用了。使用tesseract --list-langs
来查看支持的类型,使用如下
from PIL import Image
import pytesseract
import os
import re
import fnmatch
def recognize_Image(fileName=None):
img = Image.open(fileName)
# img = img.convert('L') 二值化
code = pytesseract.image_to_string(img,lang='num')
code = ''.join(re.findall('\d+',code))
print(code)
return code
网友评论