python3安装OCR识别库tesserocr过程图解
作者:广州萤火虫 发布时间:2021-12-08 04:50:08
OCR简介
OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程,对应图形验证码来说,它们都是一些不规则的字符,这些字符是由字符稍加扭曲变换得到的内容,我们可以使用OCR技术来讲其转化为电子文本,然后将结果提取交给服务器,便可以达到自动识别验证码的过程。
window环境
环境材料准备
Window10
Python-3.7.3.tgz
tesserocr安装包
安装tesserocr
1、打开链接,https://digi.bib.uni-mannheim.de/tesseract/,见下图。
下载最新版的tesseract-ocr-w64-setup-v5.0.0.20190623.exe,然后安装,本人直接安装在C盘目录下。安装完毕后,如下图。
配置环境变量,有两个步骤。
在系统变量里,修改path,如下图。
在系统变量里,创建一个新的变量名为:TESSDATA_PREFIX,值为:C:\Program Files\Tesseract-OCR\tessdata(根据自己安装的tesserocr安装路径为准),如下图。
检查Tesseract-OCR是否安装完成,如下图。
Python3.7加载tesserocr
1、安装Python的OCR识别库
pip install Pillow
pip install pytesseract
2、python加载Window的tesserocr应用,要修改pytesseract三方库的pytesseract.py脚本。
打开pytesseract.py,将Window的tesserocr应用的tesserocr.exe绑定好。
3、到这里Python的绑定window的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"))
输出:
读取中文文本图片
1、因为OCR读取不同语言需要加载语言包,因此需要下载简体中文语言包。
从这个链接下载:https://github.com/tesseract-ocr/tessdata,下载红圈的简体中文包。然后将此文件放置window的安装目录下。如下两个图。
现在,我们来读取如下图片的中文文本内容。
代码如下:
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"))
来源:https://blog.csdn.net/lanxianghua/article/details/100516187?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task


猜你喜欢
- SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型、XML索引及各种管理或输出XML格式的函数。随着JSON的流
- 前言我们在写应用时,基本都会用到配置文件,从各种 shell 到 nginx 等,都有自己的配置文件。虽然这没有太多难度,但是配置项一般相对
- Unet是一个最近比较火的网络结构。它的理论已经有很多大佬在讨论了。本文主要从实际操作的层面,讲解pytorch从头开始搭建UNet++的过
- 前言最近国内疫情状况好转,快递业也逐渐恢复,大家的快递是不是跑起来了?本文就来讲解如何让 python自动为你查询快递信息 ,并在
- 数制转换即进制转换,指进制(二、八、十、十六进制)间的相互转换,计算机编程中较为常见。这里列举了python常见数制转换用法。1.进位制度P
- turtle库是python的基础绘图库,官方手册这个库被介绍为一个最常用的用来给孩子们介绍编程知识的方法库,其主要是用于程序设计入门,是标
- var str = "pig cat fish、dog horse monkey bear、lion、fox&quo
- 原则:1. 我们测试的是产品可用性,不是使用者的个人能力2. 尽量不要打断用户的操作3. &
- #-*-coding:utf-8-*-'''Created on 2014年1月10日@author: hhdys&
- <html> <head> <style type="text/css"> * {
- 数学是优美的. 听上去有点奇怪? 当我第一次开始设计的时候,我确信如此。数学如此刻板乏味。你可能会惊讶的发现,最美观的设计,艺术作品,物体,
- 单例模式概念单例模式:“保证一个类仅有一个实例,并提供一个访问它的在这里插入代码片全局访问点。单例模式会阻止其他对象实例化其自己的单例对象的
- 最近自己准备学习Python,之前也看了点基础知识。做图形这块需要用到OpenCV所以就需要配置环境,之前准备用的是Python3,后来发现
- 修改配置文件:vim /usr/local/php/etc/php.ini[Phar]phar.readonly = Off压缩:a. 创建
- 由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,
- json数据格式参见json数据格式说明。如果没操作过json数据,建议先看下上面的文章,有助于理解本文后面的内容。Go json包Mars
- Python中字符串前面我们经常看到加r(R)或u/(U)的前缀,而这两个符号是什么意思呢?1.r(R)r意为raw,表示不包含转义字符的原
- SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述
- MySQL IN 语法IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:WHERE column IN (val
- 背景本文主要给大家介绍了关于在Python一段程序中使用多次事件循环的相关内容,我们在Python异步程序编写中经常要用到如下的结构impo