美文网首页
Mac使用pytesseract识别百度指数图片,并训练提高其准

Mac使用pytesseract识别百度指数图片,并训练提高其准

作者: 改变自己_now | 来源:发表于2018-05-13 23:14 被阅读572次

    参考文章1

    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

    0C7CA992-DF20-4FCB-908D-2C6B180C2C64.png
    c、生成.box文件,用来纠正字体识别的错误
    使用如下命令,就会在同一目录下面生成一个.box文件夹
    tesseract eng.num.exp0.tif eng.num.exp0 -l eng batch.nochop makebox
    

    d、使用jTessBoxEditor打开进行,对识别结果进行修改,然后保存,如下图

    E7D66AD2-DC02-45C6-87D0-6215FD82E348.png
    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 "完成"
    

    执行脚本后,生成文件如下

    394C6559-F176-4344-A1BB-0529A1701897.png
    最后将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
    

    相关文章

      网友评论

          本文标题:Mac使用pytesseract识别百度指数图片,并训练提高其准

          本文链接:https://www.haomeiwen.com/subject/igsrdftx.html