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 相关文章推荐
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
Python3安装pip工具的详细步骤
Oct 14 Python
wxpython绘制音频效果
Nov 18 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 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
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
CI框架附属类用法分析
2018/12/26 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
python实现批量监控网站
2016/09/09 Python
python的exec、eval使用分析
2017/12/11 Python
python正则表达式面试题解答
2020/04/28 Python
python3 flask实现文件上传功能
2020/03/20 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
介绍一下游标
2012/01/10 面试题
文明寝室申报材料
2014/05/12 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
2015年植树节活动总结
2015/02/06 职场文书
就业导师推荐信范文
2015/03/27 职场文书
环境卫生整治简报
2015/07/20 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技