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装饰器使用的一些建议
Jun 03 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python编写登陆接口的方法
Jul 10 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
python实现函数极小值
Jul 10 Python
python利用7z批量解压rar的实现
Aug 07 Python
python是否适合网页编程详解
Oct 04 Python
python实现扫雷小游戏
Apr 24 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
python读取mnist数据集方法案例详解
Sep 04 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生成随机密码的三种方法小结
2010/09/04 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
json原理分析及实例介绍
2012/11/29 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
Python 操作文件的基本方法总结
2017/08/10 Python
Django框架安装方法图文详解
2019/11/04 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
运输服务质量承诺书
2014/03/27 职场文书
大学生党员自我评价
2015/03/04 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
Java8中Stream的一些神操作
2021/11/02 Java/Android