图像识别(一)—基于样本训练的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.train
echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
echo Clustering..
cntraining.exe num.font.exp0.tr
echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable
echo Create Tessdata..
combine_tessdata.exe num.
执行批处理文件,会生成一个.traineddata文件,将文件复制到样本文件夹
python代码部分:
-
import os
import pytesseract
from PIL import Image,ImageEnhance
BASE_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)