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网络编程之文件下载实例分析
May 20 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
python实现基于SVM手写数字识别功能
May 27 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
Python3中函数参数传递方式实例详解
May 05 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
python pillow模块使用方法详解
Aug 30 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
python regex库实例用法总结
Jan 03 Python
浅谈Python基础之列表那些事儿
May 11 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 Mysql日期和时间函数集合
2007/11/16 PHP
php生成随机数或者字符串的代码
2008/09/05 PHP
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
jquery实现metro效果示例代码
2013/09/06 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
pandas重新生成索引的方法
2018/11/06 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
pandas针对excel处理的实现
2021/01/15 Python
2014年德育工作总结
2014/11/20 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书