python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法


Posted in Python onFebruary 26, 2020

1.安装Pillow

pip install Pillow

2.安装tesseract-ocr

github地址: https://github.com/tesseract-ocr/tesseract

或本地下载地址:https://3water.com/softs/538925.html

windows:

The latest installer can be downloaded here: tesseract-ocr-setup-3.05.01.exe and tesseract-ocr-setup-4.00.00dev.exe (experimental). 

ubuntu:

sudo apt-get install tesseract-ocr
traineddata文件路径: /usr/share/tesseract-ocr/tessdata/

3.安装pytesseract

pip install pytesseract

如不能使用pip直接安装可取搜索模块文件直接安装

遇到问题及解决:

1.FileNotFoundError: [WinError 2] 系统找不到指定的文件

解决办法:

方法1[推荐]: 将tesseract.exe添加到环境变量PATH中,

例如: D:\Tesseract-OCR,默认路径为C:\Program Files (x86)\Tesseract-OCR

注意: 为了使环境变量生效,需要关闭cmd窗口或是关闭pycharm等ide重新启动

方法2: 修改pytesseract.py文件,指定tesseract.exe安装路径

# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe‘

方法3:  在实际运行代码中指定

pytesseract.pytesseract.tesseract_cmd = 'D:\\Tesseract-OCR\\tesseract.exe'

2.pytesseract.pytesseract.TesseractError: (1, 'Error opening data file \\Tesseract-OCR\\tessdata/eng.traineddata')

 解决方法:

方法1[推荐]: 

将tessdata目录的上级目录所在路径(默认为tesseract-ocr安装目录)添加至TESSDATA_PREFIX环境变量中

例如: C:\Program Files (x86)\Tesseract-OCR

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory. 

方法2:  在.py文件配置中指定tessdata-dir

tessdata_dir_config = '--tessdata-dir "D:\\Tesseract-OCR\\tessdata"'
# tessdata_dir_config = '--tessdata-dir "'C:\\Program Files (x86)\\Tesseract-OCR\\tessdata"'
pytesseract.image_to_string(image, config=tessdata_dir_config)

trainedata下载地址: the latest from github.com

示例:

# -*-coding:utf-8-*- 
from PIL import Image 
import sys 
import os 
import pytesseract
from selenium import webdriver 
sys.path.append('C:\Python27\Lib\site-packages\pytesser') 
import pytesser 
url='http://192.168.24.189/system/code?0.6824490785056669' 
driver = webdriver.Firefox() 
driver.maximize_window() #将浏览器最大化 
driver.get(url) 
imgelement = driver.find_element_by_id('codeImg') #定位验证码 
location = imgelement.location #获取验证码x,y轴坐标 
size=imgelement.size #获取验证码的长宽 
rangle=(int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height'])) #写成我们需要截取的位置坐标 
name="code.jpg"  
driver.find_element_by_id("codeImg").click() 
driver.save_screenshot(name) #截取当前网页,该网页有我们需要的验证码 
aa=Image.open(name) #打开截图 
frame4=aa.crop(rangle) #使用Image的crop函数,从截图中再次截取我们需要的区域 
frame4.save(name) 
im = Image.open(name)
#转化到灰度图
imgry = im.convert('L')
#保存图像
imgry.save('g'+name)
#二值化,采用阈值分割法,threshold为分割点
threshold = 140
table = []
for j in range(256):
  if j < threshold:
    table.append(0)
  else:
    table.append(1)
out = imgry.point(table, '1')
out.save('b'+name)
#识别
text = pytesseract.image_to_string(out)
#识别对吗
text = text.strip()
text = text.upper();
print (text)
text = pytesseract.image_to_string(Image.open('code.png'), lang="eng")
print(text)

 以上就是python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法的详细内容,更多关于python3 图片识别的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现图片转字符画的示例
Aug 22 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
Python中格式化字符串的四种实现
May 26 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
python3.6中anaconda安装sklearn踩坑实录
Jul 28 Python
python super()函数的基本使用
Sep 10 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
Python3.10的一些新特性原理分析
Sep 15 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 #Python
Python如何使用turtle库绘制图形
Feb 26 #Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 #Python
Python定时器线程池原理详解
Feb 26 #Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 #Python
Python列表解析操作实例总结
Feb 26 #Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 #Python
You might like
用PHP调用数据库的存贮过程!
2006/10/09 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
微信小程序实现animation动画
2018/01/26 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
详解vue路由
2020/08/05 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
python决策树之C4.5算法详解
2017/12/20 Python
python中append实例用法总结
2019/07/30 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
利用python汇总统计多张Excel
2020/09/22 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
关于清明节的演讲稿
2014/09/13 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python