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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python爬取阿拉丁统计信息过程图解
May 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
php数组转成json格式的方法
2015/03/09 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
优化javascript的执行速度
2010/01/23 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
python中字符串内置函数的用法总结
2018/09/13 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python3 logging日志封装实例
2020/04/08 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
舞蹈教育学专业推荐信
2013/11/27 职场文书
编辑求职信样本
2013/12/16 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
一年级评语大全
2014/04/23 职场文书
副处级干部考察材料
2014/05/17 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
python非标准时间的转换
2021/07/25 Python