python3安装OCR识别库tesserocr过程图解


Posted in Python onApril 02, 2020

OCR简介

OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程,对应图形验证码来说,它们都是一些不规则的字符,这些字符是由字符稍加扭曲变换得到的内容,我们可以使用OCR技术来讲其转化为电子文本,然后将结果提取交给服务器,便可以达到自动识别验证码的过程。

window环境

环境材料准备

  • Window10
  • Python-3.7.3.tgz
  • tesserocr安装包

安装tesserocr

1、打开链接,https://digi.bib.uni-mannheim.de/tesseract/,见下图。

python3安装OCR识别库tesserocr过程图解

下载最新版的tesseract-ocr-w64-setup-v5.0.0.20190623.exe,然后安装,本人直接安装在C盘目录下。安装完毕后,如下图。

python3安装OCR识别库tesserocr过程图解

配置环境变量,有两个步骤。

在系统变量里,修改path,如下图。

python3安装OCR识别库tesserocr过程图解

在系统变量里,创建一个新的变量名为:TESSDATA_PREFIX,值为:C:\Program Files\Tesseract-OCR\tessdata(根据自己安装的tesserocr安装路径为准),如下图。

python3安装OCR识别库tesserocr过程图解

检查Tesseract-OCR是否安装完成,如下图。

python3安装OCR识别库tesserocr过程图解

Python3.7加载tesserocr

1、安装Python的OCR识别库

pip install Pillow
pip install pytesseract

2、python加载Window的tesserocr应用,要修改pytesseract三方库的pytesseract.py脚本。
python3安装OCR识别库tesserocr过程图解

打开pytesseract.py,将Window的tesserocr应用的tesserocr.exe绑定好。

python3安装OCR识别库tesserocr过程图解

3、到这里Python的绑定window的tesserocr应用已经完成。

读取验证码图片

python3安装OCR识别库tesserocr过程图解

from PIL import Image
import pytesseract


def read_text(text_path):
  """
  传入文本(jpg、png)的绝对路径,读取文本
  :param text_path:
  :return: 文本内容
  """
  # 验证码图片转字符串
  im = Image.open(text_path)
  # 转化为8bit的黑白图片
  imgry = im.convert('L')
  # 二值化,采用阈值分割算法,threshold为分割点
  threshold = 140
  table = []
  for j in range(256):
    if j < threshold:
      table.append(0)
    else:
      table.append(1)
  out = imgry.point(table, '1')
  # 识别文本
  text = pytesseract.image_to_string(out, lang="eng", config='--psm 6')
  return text


if __name__ == '__main__':
  print(read_text("d://v3.png"))

输出:

python3安装OCR识别库tesserocr过程图解

读取中文文本图片

1、因为OCR读取不同语言需要加载语言包,因此需要下载简体中文语言包。
从这个链接下载:https://github.com/tesseract-ocr/tessdata,下载红圈的简体中文包。然后将此文件放置window的安装目录下。如下两个图。
python3安装OCR识别库tesserocr过程图解
python3安装OCR识别库tesserocr过程图解

现在,我们来读取如下图片的中文文本内容。

python3安装OCR识别库tesserocr过程图解

代码如下:

from PIL import Image
import pytesseract


def read_text(text_path):
  """
  传入文本(jpg、png)的绝对路径,读取文本
  :param text_path:
  :return: 文本内容
  """
  # 验证码图片转字符串
  im = Image.open(text_path)
  # 转化为8bit的黑白图片
  imgry = im.convert('L')
  # 二值化,采用阈值分割算法,threshold为分割点
  threshold = 140
  table = []
  for j in range(256):
    if j < threshold:
      table.append(0)
    else:
      table.append(1)
  out = imgry.point(table, '1')
  # 识别文本,lang参数改为chi_sim,其他代码与上面的读取验证码代码一致。
  text = pytesseract.image_to_string(out, lang="chi_sim", config='--psm 6')
  return text
if __name__ == '__main__':
  print(read_text("d://v7.png"))

python3安装OCR识别库tesserocr过程图解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
python实现猜单词游戏
May 22 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
Python异常处理机制结构实例解析
Jul 23 Python
python 动态绘制爱心的示例
Sep 27 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
python简单的三元一次方程求解实例
Apr 02 #Python
Python 线性回归分析以及评价指标详解
Apr 02 #Python
Django REST framwork的权限验证实例
Apr 02 #Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 #Python
在 Pycharm 安装使用black的方法详解
Apr 02 #Python
Python Numpy中数据的常用保存与读取方法
Apr 01 #Python
Python PyQt5整理介绍
Apr 01 #Python
You might like
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
初识Node.js
2015/03/20 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
原生js实现密码强度验证功能
2020/03/18 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
深入讲解Python编程中的字符串
2015/10/14 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
大学总结自我鉴定
2014/01/18 职场文书
防火标语大全
2014/10/06 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
浅谈MySQL user权限表
2021/06/18 MySQL