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 变量类型详解
Oct 10 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
python基于opencv检测程序运行效率
Dec 28 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
keras用auc做metrics以及早停实例
Jul 02 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
利用python汇总统计多张Excel
Sep 22 Python
Python中使用subprocess库创建附加进程
May 11 Python
Python实现抖音热搜定时爬取功能
Mar 16 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 $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
创建echart多个联动的示例代码
2018/11/23 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
ORACLE十问
2015/04/20 面试题
2014年学校食堂工作总结
2014/11/25 职场文书
2015初中团委工作总结
2015/07/28 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
python全面解析接口返回数据
2022/02/12 Python