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实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
python实现简单名片管理系统
Nov 30 Python
python样条插值的实现代码
Dec 17 Python
Python读写文件基础知识点
Jun 10 Python
详解Django admin高级用法
Nov 06 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
python实现批量修改文件名
Mar 23 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
python绘图模块之利用turtle画图
Feb 12 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获取post中的json数据的实现方法
2011/06/08 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
很可爱的输入框
2008/08/03 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
python装饰器的特性原理详解
2019/12/25 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
python实现银行账户系统
2021/02/22 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
2015年教育实习工作总结
2015/04/24 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书