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 Web开发模板引擎优缺点总结
May 06 Python
Python性能提升之延迟初始化
Dec 04 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
Flask之flask-script模块使用
Jul 26 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
Python面向对象之类的封装操作示例
Jun 08 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
python用字节处理文件实例讲解
Apr 13 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Js+XML 操作
2006/09/20 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
tensorflow 模型权重导出实例
2020/01/24 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
基于Python实现粒子滤波效果
2020/12/01 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
作风大整顿心得体会
2014/09/10 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
质量保证书怎么写
2015/02/27 职场文书
领导视察通讯稿
2015/07/18 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
英镑符号 £
2022/02/17 杂记
java项目构建Gradle的使用教程
2022/03/24 Java/Android
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android