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实现竖排打印传单手机号码易撕条
Mar 16 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
利用Python的Django框架生成PDF文件的教程
Jul 22 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
python实现简单图片物体标注工具
Mar 18 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
Python多线程的退出控制实现
Aug 10 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 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/04/12 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
js制作提示框插件
2020/12/24 Javascript
python实现2014火车票查询代码分享
2014/01/10 Python
简单介绍Python中的JSON使用
2015/04/28 Python
python使用socket连接远程服务器的方法
2015/04/29 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python中的默认参数实例分析
2018/01/29 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python匿名函数用法实例分析
2019/08/03 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
网络研修随笔感言
2014/02/17 职场文书
《金子》教学反思
2014/04/13 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
培训感想范文
2015/08/07 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书