tesseract ai百度 github的代码 发现还是收费的好用

  1. 下载windows版本的tesseract安装包,我下载的版本是是http://3.onj.me/tesseract/网站所维护的,安装后有个doc文件夹,里面有英文的使用文档。为了在全局使用方便,比如安装路径为D:\Application\tesseract,将D:\Application\tesseract添加到环境变量的path中。添加环境变量值

  2. 为了进行测试,我们在其他文件夹下,比如在桌面建立了一个文件夹进行测试,C:\Users\Administrator\Desktop\pythonTest\tesseract,此文件夹有个验证码图片1.jpg, 在此文件夹打开cmd命令,输入tesseract 1.jpg res, 这个是最基础的用法,就是将1.jpg这个图片的文字转为res.text。默认用英语的语言包。运行完后,文件夹里面出现res.text, 内容就是被转换的文字这个是成功的示例但是一开始,我却发现报以下错误 
    Error opening data file …. 
    Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your “tessdata” directory. 
    Failed loading language ‘eng’ 
    Teseract couldn’t load any languages! 
    Counld not initialize tesseract

    上面的意思就是说不能加载’eng’语言包。请将tessdata的父文件夹路径设置为TESSDATA_PREFIX环境变量值,这个就是说在环境变量中新建一个系统变量,变量名称为TESSDATA_PREFIX,tessdata是放置语言包的文件夹,一般在你安装tesseract的目录下,即tesseract的安装目录就是tessdata的父目录,把TESSDATA_PREFIX的值设置为它就行了

    这是我的tesseract安装路径

    设置TESSDATA_PREFIX系统变量

  3. 重启电脑(我就是没有干这事儿,浪费了2小时折腾各种文档),然后按照第二部就能成功了
  4. 满怀希望发现识别率极差,需要自己做数据训练目前也没这个水平我放弃了
  5. # -*- coding: utf-8 -*-
    
    import csv
    import string
    from PIL import Image
    import pytesseract
    
    pytesseract.pytesseract.tesseract_cmd = 'D:\\Program Files\\tesseract\\tesseract.exe'
    
    
    def ocr(img):
        # 获取图片的像素数组
        pixdata = img.load()
        colors = {}
        # 统计字符颜色像素情况
        for y in range(img.size[1]):
            for x in range(img.size[0]):
                if pixdata[x,y] in colors:
                    colors[pixdata[x, y]] += 1
                else:
                    colors[pixdata[x,y]] = 1
    
        # 排名第一的是背景色,第二的是主要颜色
        colors = sorted(colors.items(), key=lambda d:d[1], reverse=True)
        significant = colors[1][0]
        for y in range(img.size[1]):
            for x in range(img.size[0]):
                if pixdata[x,y] != significant:
                    pixdata[x,y] = (255,255,255)
                else:
                    pixdata[x, y] = (0,0,0)
        img.save('bw.png')
        # threshold the image to ignore background and keep text
        # gray = img.convert('L')
        # bw = gray.point(lambda x: 0 if x < 1 else 255, '1')
        # bw.save('captcha_gray.png')
    
        word = pytesseract.image_to_string(img, lang='chi_sim+')
        ascii_word = ''.join(c for c in word if c in string.ascii_letters).lower()
        return ascii_word
    
    files = ('whgn.jpeg', 'fwuo.png', 'ke8m.png', 'm3hn.png', '5enn.png',
             '54xe.jpeg','ea6d.jpeg','kwdg.jpeg','mkek.jpeg','nkng.jpeg',
             'w3lh.jpeg', 'teew.png', '0325.png','37IH')
    
    def test_samples():
        for file in files:
            img = Image.open(file)
            print ('%s is recognized as %s' %(file,ocr(img)))
    
    test_samples()
    
     
  6. 后来用百度的ai,瞎解析的很多都不对
  7. github里面的代码和oschina 里面的python-OCR 也是不行,很多都是py2 我又改成py3 也是不行,也需要训练
  8. 最后我选择https://www.jsdama.com/ 联系了客服给了100点体验分,感觉很稳
  9. 该投入还得投入,免费的是最麻烦的搞了 1天。浪费1天时间

猜你喜欢

转载自394498036.iteye.com/blog/2407603