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 相关文章推荐
NetworkX之Prim算法(实例讲解)
Dec 22 Python
快速查询Python文档方法分享
Dec 27 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python 实现线程之间的通信示例
Feb 14 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
pandas to_excel 添加颜色操作
Jul 14 Python
Python基于template实现字符串替换
Nov 27 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
python实现调用摄像头并拍照发邮箱
Apr 27 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
Terran建筑一览
2020/03/14 星际争霸
简单的PHP多图上传小程序代码
2011/07/17 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
php接口隔离原则实例分析
2019/11/11 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
利用python爬取散文网的文章实例教程
2017/06/18 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
python绘制汉诺塔
2021/03/01 Python
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
园林施工员岗位职责
2013/12/11 职场文书
运动会通讯稿50字
2014/01/30 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
学校交通安全责任书
2014/08/25 职场文书
培训通知
2015/04/17 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android