光学文字识别技术OCR: Tesseract

 

1.图形验证码识别技术

 

登陆或者请求一些数据时需要图形验证码。将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition),简称OCR。实现OCR的库不是很多,特别是开源的。因为这一块存在一定的技术壁垒(需要大量的数据、算法、机器学习、深度学习知识等),并且如果做好了具有很高的商业价值。因此开源的比较少。这里介绍一个比较优秀的图像识别开源库:Tesseract。由Google公司赞助,可以通过训练识别任何字体。

2.Windows操作系统下Tesseract的安装

Tesseract的下载地址有:

(1)官方发布的3.02版本下载地址:http://downloads.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Ftesseract-ocr-alt%2Ffiles%2F&ts=1464880498&use_mirror=jaist

(2)德国曼海姆大学发行的3.05版本下载地址,http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.00dev.exe

(3)Simon Eigeldinger (@DomasoFan) 维护的另一个版本:http://3.onj.me/tesseract/,值得称道的是,这个网址里还有一个比较详细的说明。

安装好后需要添加2个环境变量:D:\Python2.7\tesseract\Tesseract-OCR\tessdata 和 D:\Python2.7\tesseract\Tesseract-OCR (tesseract.exe的文件路径)

3.在cmd中写Tesseract代码识别图片

(1)常用的cmd命令:d: 进入D盘; cd / 返回到根目录; cd *** 进入***文件夹

(2)首先进入图片所在的文件夹,然后使用命令: (tesseract 文件名.后缀 识别后的文件名)

tesseract 01.png after

4.Tesseract识别中文图片

需要下载识别中文的数据:https://github.com/tesseract-ocr/tessdata/blob/bf82613055ebc6e63d9e3b438a5c234bfd 638c93/chi_sim.traineddata或者https://github.com/tesseract-ocr/langdata/tree/master/chi_sim,下载的文件放到D:\Python2.7\tesseract\Tesseract-OCR\tessdata文件夹里面。

(1)tesseract -h 查看tesseract命令是怎么用的

(2)tesseract --list-langs 查看tesseract可以支持识别的语言种类

(3)tesseract 02.png 02 -l chi_sim 

(4)出现错误提示:actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file 

..\..\ccutil\tessdatamanager.cpp, line 50。这个是因为下载的 traineddata 版本不对,如果你报了这个错误应该下载这个版本的中文包,把之前的替换掉就可以了

5.在Python代码中操作tesseract识别图片

(1)需要安装pytesseract库:

pip install pytesseract 

以及 PIL库(Pillow库):

pip install PIL # pip install Pillow

pip list 可以查看安装了哪些库。

(2)在python代码中实现tesseract识别图片

 

# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import pytesseract
from PIL import Image

# tesseract.exe的全路径
pytesseract.pytesseract.tesseract_cmd = r"D:\Python2.7\tesseract\Tesseract-OCR\tesseract.exe"
# 想要打开的文件的全路径
image = Image.open(r"D:\Program\01.png")

text = pytesseract.image_to_string(image)
# text = pytesseract.image_to_string(image, lang="chi_sim")

with open(r"C:\Users\HuangQi\Desktop\01.txt", "w") as fp:
    fp.write(text.decode("utf-8", "ignore"))
    print text

6. 常见问题

(1)环境变量的问题

Error opening data file …. Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your “tessdata” directory.  Failed loading language ‘eng’  . Teseract couldn’t load any languages!  Counld not initialize tesseract. 
意思是:请确保将TESSDATA_PREFIX环境变量设置为您的“tessdata”目录的父目录。

解决办法:
第一步:在环境变量中的系统变量中新建一个系统变量,变量名称为TESSDATA_PREFIX,tessdata是放置语言包的文件夹,一般在你安装tesseract的目录下,即tesseract的安装目录就是tessdata的父目录,把ESSDATA_PREFIX的值设置为tessdata的父目录。
第二步:重启电脑。注意一定要重启或者注销重新进入系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值