vlambda博客
学习文章列表

图像识别(一)—基于样本训练的tesseract

基于样本训练的tesseract,适用于背景简单最好为纯色

  1. 安装JDK,样本训练所使用JAVA环境,新增环境变量JAVA_HOME值为安装路径,新增path值%JAVA_HOME%\bin

  2. https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-2.3.1.zip/download

  3. 测试tesseract,命令行输入tesseract -v

  4. 将样本图片转换为tiff格式

  5. 运行jTessBoxEditor,jar,点击Tools-->Merge TIFF--->选择所有样本-->打开-->文件名输入num.font.exp0.tif-->保存

  6. 将num.font.exp0.tif文件复制到Tesseract-OCR安装目录

  7. 打开cmd命令行,输入tesseract -l num num.font.exp0.tif num.font.exp0 batch.nochop makebox 注意-l 参数在初次训练时不要添加

  8. 点击Box Editor-->open-->选择之前生成的num.font.exp0.tif

  9. 对位置和识别结果进行校正-->save

  10. 定义字体特征文件,创建一个名称为font_properties的字体特征文件,内容:font 0 0 0 0 0,表示字体不是粗体、斜体等

  11. 生成语言文件,创建一个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.
  12. 执行批处理文件,会生成一个.traineddata文件,将文件复制到样本文件夹

  13. 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)