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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
详解Python发送邮件实例
Jan 10 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
浅谈对yield的初步理解
May 29 Python
python字符串过滤性能比较5种方法
Jun 22 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
Django 实现下载文件功能的示例
Mar 06 Python
Python3模拟curl发送post请求操作示例
May 03 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
tensorflow 模型权重导出实例
Jan 24 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 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
Banner程序
2006/10/09 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
js调用css属性写法
2013/09/21 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
让IE支持HTML5的方法
2012/12/11 HTML / CSS
Laravel中Kafka的使用详解
2021/03/24 PHP
机工车间主任岗位职责
2014/03/05 职场文书
初中学生期末评语
2014/04/24 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
python执行js代码的方法
2021/05/13 Python
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL