-
下载windows版本的tesseract安装包,我下载的版本是是http://3.onj.me/tesseract/网站所维护的,安装后有个doc文件夹,里面有英文的使用文档。为了在全局使用方便,比如安装路径为D:\Application\tesseract,将D:\Application\tesseract添加到环境变量的path中。
-
为了进行测试,我们在其他文件夹下,比如在桌面建立了一个文件夹进行测试,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的值设置为它就行了
- 重启电脑(我就是没有干这事儿,浪费了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()
- 后来用百度的ai,瞎解析的很多都不对
- github里面的代码和oschina 里面的python-OCR 也是不行,很多都是py2 我又改成py3 也是不行,也需要训练
- 最后我选择https://www.jsdama.com/ 联系了客服给了100点体验分,感觉很稳
- 该投入还得投入,免费的是最麻烦的搞了 1天。浪费1天时间
tesseract ai百度 github的代码 发现还是收费的好用
最新推荐文章于 2024-05-01 11:30:00 发布