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中几种操作字符串的方法的介绍
Apr 09 Python
简单的Python的curses库使用教程
Apr 11 Python
简单说明Python中的装饰器的用法
Apr 24 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
tensorflow实现逻辑回归模型
Sep 08 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
Python进度条的制作代码实例
Aug 31 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
python爬虫爬取网页数据并解析数据
Sep 18 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快速生成各种信息提示框的方法
2016/02/03 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
JS 自动安装exe程序
2008/11/30 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Python实现的彩票机选器实例
2015/06/17 Python
Python 爬虫图片简单实现
2017/06/01 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
Python微信公众号开发平台
2018/01/25 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
初中军训感想300字
2014/03/05 职场文书
教师产假请假条
2014/04/10 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
网络营销计划
2015/01/17 职场文书
酒店前台辞职书
2015/02/26 职场文书
终止劳动合同通知书
2015/04/16 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
创业计划书之花店
2019/09/20 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
canvas实现贪食蛇的实践
2022/02/15 Javascript
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang