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 getopt模块处理命令行选项实例
May 13 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
Python中获取对象信息的方法
Apr 27 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 Python
Python基础之函数的定义与使用示例
Mar 23 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
python源文件的字符编码知识点详解
Mar 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
php实现的生成排列算法示例
2019/07/25 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Python3多线程基础知识点
2019/02/19 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
巴西网上药房:onofre
2016/11/21 全球购物
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
车间调度岗位职责
2013/11/30 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
助理政工师申报材料
2014/06/03 职场文书
教师求职信
2014/06/17 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
招商银行工作证明
2015/06/17 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL