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 base64编码解码实例
Jun 21 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
python的exec、eval使用分析
Dec 11 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
Python并行分布式框架Celery详解
Oct 15 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 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生成静态HTML速度快类库
2007/03/18 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php全排列递归算法代码
2012/10/09 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
php压缩文件夹最新版
2018/07/18 PHP
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现教务管理系统
2018/03/12 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python中的引用知识点总结
2019/05/20 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
大一军训感言
2014/01/09 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP