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通过正则表达式选取callback的方法
Jul 18 Python
Python中的with语句与上下文管理器学习总结
Jun 28 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
使用Python更换外网IP的方法
Jul 09 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
python中import与from方法总结(推荐)
Mar 21 Python
使用Python发现隐藏的wifi
Mar 04 Python
python基于socket函数实现端口扫描
May 28 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
destoon复制新模块的方法
2014/06/21 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
Augularjs-起步详解
2016/07/08 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
英文版网络工程师求职信
2013/10/28 职场文书
司机岗位职责
2013/11/15 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS