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列表推导式的使用方法
Nov 21 Python
深入学习python的yield和generator
Mar 10 Python
Python实现计算最小编辑距离
Mar 17 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
Django Celery异步任务队列的实现
Jul 24 Python
linux环境下安装python虚拟环境及注意事项
Jan 07 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python自然语言处理之切分算法详解
Apr 25 Python
Python 中面向接口编程
May 20 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脚本[带参数]的方法
2010/01/22 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
js 蒙版进度条(结合图片)
2010/03/10 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
理解JS事件循环
2016/01/07 Javascript
实例浅析js的this
2016/12/11 Javascript
js返回顶部实例分享
2016/12/21 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
python 读取.nii格式图像实例
2020/07/01 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
创业融资计划书
2014/04/25 职场文书
篝火晚会策划方案
2014/05/16 职场文书
教师考察材料范文
2014/06/03 职场文书
财务出纳岗位职责
2015/03/31 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技