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

  3. 为了进行测试,我们在其他文件夹下,比如在桌面建立了一个文件夹进行测试,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

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

android Tesseract 引入 tesseract github_git_02

  1. 重启电脑(我就是没有干这事儿,浪费了2小时折腾各种文档),然后按照第二部就能成功了
  2. 满怀希望发现识别率极差,需要自己做数据训练目前也没这个水平我放弃了
# -*- 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()
  1. 后来用百度的ai,瞎解析的很多都不对
  2. github里面的代码和oschina 里面的python-OCR 也是不行,很多都是py2 我又改成py3 也是不行,也需要训练