快捷搜索:
来自 计算机编程 2019-12-01 04:18 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

验证码识别,ocr识别英文和中文图片文字以及扫

Tesseract是什么

OCR即光学字符识别,是指通过电子设备扫描纸上的打印的字符,然后翻译成计算机文字的过程。也就是说通过输入图片,经过识别引擎,去识别图片上的文字。Tesseract是一种适用于各种操作系统的光学字符识别引擎,最早是hp公司的软件,2005年开源,2006年后由google一直赞助Tesseract开发和维护。2006年,Tesseract被认为是当时最准确的开源OCR引擎之一 。

 

本文来源:http://blog.csdn.net/wanghui2008123/article/details/37694307

验证码识别类型

这里讨论一般的验证码识别,即英文、数字、或者英文和数字的混合的验证码,不包括滑动和文字点击这些类型。

 

本文参考http://blog.sina.com.cn/s/blog_4aa166780101cji7.html

Tesseract的安装

Tesseract的github地址:
Tesseract的安装github上有说明,Tesseract现在有3.05的版本,也有4.0beta版,我自己使用之后感觉2者差异不大,替换之后识别率也没有明显提升,所以只要使用其中一个就好。Tesseract支持windows和linux,windows下装完之后有个Tesseract-ocr的目录,目录下有个tesseract.exe的程序,可以通过调用这个exe的命令行去进行ocr的识别。

 

OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。

Tesseract的使用

简单的命令行使用如下:

tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]

 

  • 参数说明:

imagename  图片文件
outputbase   输出文件,也可以选择命令行输出stdout

 

  • 可选参数

-l lang                      识别库,默认是eng,也可以是自己训练出来的识别库
-psm pagesegmode     识别模式

 

pagesegmode    具体含义见下图

0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character.

 

Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。当前版本为3.02

Tesseract训练

可以通过jTessBoxEditor去训练Tesseract,而且训练样本越多,识别准确度越好,实际使用中我训练了500张图片,对识别率的提升还是有的,但是还是没能达到自己想要的预期识别率,估计是样本还不够多吧。另外对样本一个个修正也是个繁琐的事情,尤其是验证码,一般都各种变形以防止程序轻易识别,不过总体来说只要样本够多,想要达到预期的识别率还是可以的。关于jTessBoxEditor训练的详细步骤,有兴趣的可以自己去搜索Tesseract相关资料了解。

 

项目下载地址为:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe

 

 

Windows

cmd命令行使用Tesseract-OCR引擎识别手机号码和图片中的文字:

1、下载安装Tesseract-OCR引擎(3.0版本 才支持中文识别)

tesseract-ocr-setup-3.02-02.exe.

下载完后进行安装,默认情况下安装程序会给你配置系统环境变量,以指向安装目录(之后可以通过DOS界面在任意目录运行tesseract)。安装完成后目录如下:

style="font-family: "Microsoft YaHei"; font-size: 14pt"> 

style="font-family: "Microsoft YaHei"; font-size: 14pt">图片 1

style="font-family: "Microsoft YaHei"; font-size: 14pt">image

附录:

tessdata 目录存放的是语言字库文件,和在命令行界面中可能用到的参数所对应的文件. 这个安装程序默认包含了英文字库。

如果想能识别中文,可以到http://code.google.com/p/tesseract-ocr/downloads/list下载对应的语言的字库文件.一般google访问不了,请到这里下载即可,

简体中文字库文件下载地址为:http://download.csdn.net/detail/wanghui2008123/7621567下载完成后解压,然后将该文件剪切到tessdata目录下去就可以了。

2、使用Tessract-OCR引擎识别验证码

打开DOS界面,输入tesseract:

 

图片 2

 

如果出现如上输出,表示安装正常。

命令格式:

tesseract 图片名 输出文件名 -l 字库文件 -psm pagesegmode 配置文件

识别数字:

我准备了一张验证码123.png 手机号码的图片,放在F:IDOLa|目录下

 

图片 3

image

运行的命令行如下,我自己的命令行工具做了属性调整背景是白色的。

 

图片 4

image

表示识别后生成一个result123.txt 打开文件如下:

 

图片 5

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:验证码识别,ocr识别英文和中文图片文字以及扫

关键词: