图像识别(一)—基于样本训练的tesseract
基于样本训练的tesseract,适用于背景简单最好为纯色
安装JDK,样本训练所使用JAVA环境,新增环境变量JAVA_HOME值为安装路径,新增path值%JAVA_HOME%\bin
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-2.3.1.zip/download
测试tesseract,命令行输入tesseract -v
将样本图片转换为tiff格式
运行jTessBoxEditor,jar,点击Tools-->Merge TIFF--->选择所有样本-->打开-->文件名输入num.font.exp0.tif-->保存
将num.font.exp0.tif文件复制到Tesseract-OCR安装目录
打开cmd命令行,输入tesseract -l num num.font.exp0.tif num.font.exp0 batch.nochop makebox 注意-l 参数在初次训练时不要添加
点击Box Editor-->open-->选择之前生成的num.font.exp0.tif
对位置和识别结果进行校正-->save
定义字体特征文件,创建一个名称为font_properties的字体特征文件,内容:font 0 0 0 0 0,表示字体不是粗体、斜体等
生成语言文件,创建一个bat文件,输入:
-
echo Run Tesseract for Training..tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.trainecho Compute the Character Set..unicharset_extractor.exe num.font.exp0.boxmftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.trecho Clustering..cntraining.exe num.font.exp0.trecho Rename Files..rename normproto num.normprotorename inttemp num.inttemprename pffmtable num.pffmtablerename shapetable num.shapetableecho Create Tessdata..combine_tessdata.exe num. 执行批处理文件,会生成一个.traineddata文件,将文件复制到样本文件夹
python代码部分:
-
import osimport pytesseractfrom PIL import Image,ImageEnhanceBASE_DIR = os.path.dirname(__file__)zh_img = os.path.join(BASE_DIR, "img","4.jpg")img = Image.open(zh_img)cropped = img.crop((0, 0, 260, 85)) #裁剪cropped.save("./img/12.jpg",quality=100)#splitimage(zh_img,6,3,'')# im=Image.open(zh_img)# en=ImageEnhance.Sharpness(im) 图片对比度、灰度等调整使用ImageEnhance# en_end=en.enhance(10)num_img = os.path.join(BASE_DIR, "img","56.jpg")num = pytesseract.image_to_string(Image.open(zh_img),lang="num")#lang为训练过的样本print(num)
