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 相关文章推荐
php使用递归与迭代实现快速排序示例
Jan 23 Python
python基础教程之常用运算符
Aug 29 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
Python hashlib模块加密过程解析
Nov 05 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
详解Python多线程下的list
Jul 03 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
通过实例了解python__slots__使用方法
Sep 14 Python
python 逐步回归算法
Apr 06 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
php实现源代码加密的方法
2015/07/11 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
JS数字抽奖游戏实现方法
2015/05/04 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
0基础学习前端开发的一些建议
2020/07/14 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
公司中秋节活动方案
2014/02/12 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
工商局个人工作总结
2015/03/03 职场文书
感恩的心主题班会
2015/08/12 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers