Tesseract-ocr视觉学习-验证码识别及python import pytesseract使用
Tesseract-OCR的简单使用与训练
最近看到某个网站提交数据要提交验证码,用tesseract自带的识别,
识别出来是什么鬼,0-9识别成了什么玩意!
so决定自己训练下tesseract...
1.准备工作(安装工具环境)
1.下载安装tesseract-ocr-setup-3.02.02.exe安装包 http://www.pc0359.cn/downinfo/55218.html
2.安装jTessBoxEditor
下载jTessBoxEditor,地址https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/;解压后得到jTessBoxEditor,由于这是由Java开发的,所以我们应该确保在运行jTessBoxEditor前先安装JRE(Java Runtime Environment,Java运行环境)。
3.安装Java环境:http://mydown.yesky.com/pcsoft/33490441.html
2.准备训练图片,可以多张图片,我们可以用画图工具绘制样本文件,数量越多越好
准备图片如下
3.Merge样本文件
打开jTessBoxEditor,ctrl+m 选择所有样本图片,并将合并文件保存为 bm.font.exp0.tif
4.生成BOX文件
打开命令行并切换至bm.font.exp0.tif所在目录,
输入如下命令,生成文件名为bm.font.exp0.box
tesseract bm.font.exp0.tif bm.font.exp0 batch.nochop makebox
此时文件夹下会多出一个bm.font.exp0.box文件
5.定义字符配置文件
在目标文件夹内生成一个名为font_properties的文本文件,内容为
font 0 0 0 0 0
【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用,如果是txt文件记得把.txt后缀去掉。
6.字符矫正
打开jTessBoxEditor,BOX Editor -> Open,打开bm.font.exp0.tif;
7.生成字符特征文件
tesseract.exe bm.font.exp0.tif bm.font.exp0 nobatch box.train
这一步将生成两个文件,bm.font.exp0.tr(特征文件)和bm.font.exp0.txt文件
8.计算字符集(unicharset)
unicharset_extractor.exe bm.font.exp0.box
这一步产生字符集文件unicharset
9.聚集字符特征(inttemp、pffmtable、normproto)
mftraining -F font_properties -U unicharset -O bm.unicharset bm.font.exp0.tr
根据上一步产生的字符集文件unicharset,来生成当前新语言的字符集文件mfunicharset。同时还会产生图形原型文件inttemp和每个字符所对应的字符特征数文件pffmtable。附带还会产生Microfeat文件,但是这个文件没啥用。
10.接下来产生字符形状正常化特征文件normproto
cntraining.exe bm.font.exp0.tr
11.重命名打包文件
将如下四个文件加上bm.前缀
normproto bm.normproto
inttemp bm.inttemp
pffmtable bm.pffmtable
shapetable bm.shapetable
12.合并训练文件(*.traineddata)
combine_tessdata.exe bm.
生成bm.traineddata文件,
将这个文件复制到Tesseract-OCR\tessdata文件夹下然后用训练过的字库在识别下
tesseract beiming.png output_2 -l bm
识别完全正确,细心的人会发现,最后一句指令,我们使用了指令[-l bm]而不是[-l eng]。这说明,最后一次转换我们使用的是新生成的bm语言的匹配库而不是默认的eng语言匹配库
python pytesseract使用
import pytesseract
from PIL import Image
# pytesseract.pytesseract.tesseract_cmd='D:\Program Files\python\Tesseract-OCR\\tesseract.exe'
def getyzm():
image1 = Image.open('yzm.jpg')
w,h = image1.size
#创建新图片
image2 = Image.new("RGB",(w+10,h+6),(255,255,255))
#两张图片相加: 我这里的图片不是标准的图片格式所以需要盖在新图片上
image2.paste(image1,(5,3))
# image2.save("yzm.png")
result = pytesseract.image_to_string(image2,lang="num")
return result print(getyzm())
Tesseract-ocr视觉学习-验证码识别及python import pytesseract使用的更多相关文章
- 蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率
识别验证码一直是本人想要做的事情,一直在接触按键精灵,了解到有一个虹鱼图灵识别插件专门做验证码和图像识别,原理就是图片处理和制作字库识别,制作字库我一直觉得很麻烦,工程量太大.不管怎样,它能用能达到我 ...
- Java使用Java OCR API进行验证码识别
Maven坐标: <!-- https://mvnrepository.com/artifact/com.asprise.ocr/java-ocr-api --> <dependen ...
- tesseract ocr训练 pt验证码
识别率有问题A大概率识别为n,因此需要训练,这里讲一下 如何训练 参考 java代码里边直接使用tess4j,是对tesseract的封装,但是如果要训练,还是需要在进行安装tesseract-ocr ...
- 基于pyteseract google ocr的图形验证码识别
先灰化图片,把图片二值化,利用pytesseract包的pytesseract.image_to_string转换出文字.
- python验证码识别接口及识别思路代码
1,验证码识别接口代码 import json import base64 import requests def shibie(): data = {} path = "./img/&qu ...
- 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别
第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...
- 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别
第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://github.com/muchrooms/zheye 注意:此程序依赖以下模块包 Keras==2.0.1 Pillow= ...
- 使用Python基于OpenCV的验证码识别
Blog:https://blog.csdn.net/qq_40962368/article/details/89312429(Verification_Code_Identification) 步骤 ...
- Python&selenium&tesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考
在自动化测试或者安全渗透测试中,Captcha验证码的问题经常困扰我们,还好现在OCR和AI逐渐发展起来,在这块解决上越来越支撑到位. 我推荐的几种方式,一种是对于简单的验证码,用开源的一些OCR图片 ...
随机推荐
- Storm概念学习系列之事务
不多说,直接上干货! 事务 这里的事务是专门针对Topology提出来的,是为了解决元组在处理失败重新发送后的一系列问题的.简而言之,事务拓扑(transactional topology)就是指St ...
- c# 类成员的定义 定义方法、字段和属性【转】
c# 类成员的定义 定义方法.字段和属性c#类的成员包括字段.属性和方法.所有成员都有自己的访问级别,用下面的关键字之一来定义:public----成员可以有任何代码访问:private----成员只 ...
- C 碎片三 运算符与表达式
一.算术运算符 算术运算符:+. -. *. /. %等 加:+ 减: - 乘: * 除: / 除数不能为0 模:% 参与模运算的数据不能为小数 二.赋值运算符 赋值运算符:= 作用: ...
- java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
- UPDATE SQL 不同环境执行结果不一样
背景:1.前台:JQUERY 提交数据 2.后台:OWIN C# 处理接收数据 3.数据库: postgresql ========================================= ...
- Visual Studio 2010 vs2010 英文版 使用 已有的中文版 MSDN 帮助文档
第一步 设置Help Library Manager区域语言 打开Microsoft Visual Studio 2010开始菜单里Visual Studio Tools里的Manage Help S ...
- IIS发布网站出错解决方案
1.第一类错误(Web服务器被配置为不列出此目录的内容) 问题所在没有为请求的URL设置默认文档,在IIS“默认文档”添加一个你要访问的默认文档名字,如:Default.aspx. 2.第二类错误(请 ...
- 编译出freeswitch的java调用的 jar和so
假设freeswitch 源码路径为 /usr/local/src/freeswitch 1. cd /usr/local/src/freeswitch(源代码的根目录) 执行./configure, ...
- newsyslog.conf详解
newsyslog.conf 指出了哪个日志文件要被管理,要保留多少和它们什么时候被创建.日志文件可以在它们达到一定大小或者在特定的日期被重新整理.# configuration file for n ...
- jenkins代码自动部署
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...